智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答

简介: 智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答

上一篇介绍了接入大模型输出结果,实现了基本的问答功能。现有大模型都是基于公开资料训练的,搜索垂直专业领域的知识可能会出现问题。本篇文章会基于RAG实现简单的知识库问答功能。
一、RAG介绍
RAG(Retrieval Augmented Generation)即检索增强生成,是一种结合了信息检索和大语言模型(LLM)生成能力的技术,旨在解决大语言模型在回答问题时,因知识更新不及时、缺乏特定领域知识或事实性错误等问题,通过在生成回答之前检索相关外部知识源来增强回答的准确性和可靠性。
1.工作原理
检索阶段:当用户提出一个问题时,RAG 系统首先将问题发送到内部的知识源(如文档库、数据库等)进行检索。通常会使用向量检索技术,将问题和知识源中的文档都转换为向量表示,然后计算问题向量与文档向量之间的相似度,找出与问题最相关的文档段落。
生成阶段:将检索到的相关文档段落与用户的问题一起输入到大语言模型中,大语言模型结合这些外部知识生成最终的回答。
2.优势
知识更新:可以利用最新的内部知识来回答问题,避免了大语言模型因训练数据固定而导致的知识过时问题。

特定领域知识:对于特定领域的问题,能够从专业的知识源中获取相关信息,提高回答的专业性和准确性。

减少幻觉:通过引入内部知识,减少大语言模型生成回答时出现问答错误和幻觉内容。

二、具体的功能实现

1.准备知识源

选择合适的知识源,如文本文件、PDF、Word、数据库等本地或内部的结构化或非结构化数据。如我在本地准备了一个自己胡编的一段内容。
image.png
2.对知识源进行预处理,包括文本清洗、分词等,如以下代码所示:

  def load_and_process_documents(directory):
    """
    加载并处理指定目录下的所有文本文件
    :param directory: 包含文本文件的目录路径
    :return: 处理后的文档块列表
    """
    documents = []
    # 遍历目录下的所有文件
    for filename in os.listdir(directory):
        if filename.endswith('.txt'):
            file_path = os.path.join(directory, filename)
            # 使用 TextLoader 加载文本文件
            loader = TextLoader(file_path, encoding='utf-8')
            loaded_docs = loader.load()
            documents.extend(loaded_docs)
    # 初始化文本分割器
    text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=1000,  # 每个文档块的大小
        chunk_overlap=200  # 相邻文档块的重叠部分大小
    )
    # 分割文档
    split_docs = text_splitter.split_documents(documents)
    return split_docs

3.数据向量化

选择合适的向量数据库,如 FAISS、Chroma 等。我分别试了这两个数据库都是可以的。然后将预处理后的知识源文档转换为向量并存储到向量数据库中。

def create_vector_store(docs):
    """
    创建向量数据库并存储文档向量
    :param docs: 处理后的文档块列表
    :return: 向量数据库对象
    """
    # 初始化 OpenAI 嵌入模型
    #embeddings = OpenAIEmbeddings()
    # 使用 Chroma 创建向量数据库并存储文档向量
    vectorstore = Chroma.from_documents(docs, embeddings)
    # 使用 FAISS 创建向量数据库并存储文档向量
    #vectorstore = FAISS.from_documents(docs, embeddings)
    return vectorstore

4.创建检索并设置问答链

def setup_qa_chain(vectorstore):
    """
    设置问答链
    :param vectorstore: 向量数据库对象
    :return: 问答链对象
    """
    # 初始化 OpenAI 大语言模型
    llm = ChatAI(
    temperature=0.7,  # 控制生成文本的随机性
    max_tokens=500,  # 限制生成的最大token数
    #stream=True #开启流式输出
    stream=False #关闭流式输出
    )
    # 创建检索式问答链
    qa_chain = RetrievalQA.from_chain_type(
        llm=llm,
        chain_type="stuff",  # 使用 "stuff" 类型将检索结果直接输入到 LLM
        retriever=vectorstore.as_retriever()  # 向量数据库的检索器
    )
    return qa_chain

5.运行代码测试功能
image.png
三、总结

LangChain 提供了丰富的动态扩展功能,可以基于RAG实现企业内部私有智能体。在使用RAG时也需注意数据质量或直接影响 RAG 系统的性能,需要对数据进行严格的清洗和预处理。还需选择合适的向量表示方法和嵌入模型,提高检索的准确性和企业适用场景。

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
5月前
|
人工智能 测试技术 API
构建AI智能体:二、DeepSeek的Ollama部署FastAPI封装调用
本文介绍如何通过Ollama本地部署DeepSeek大模型,结合FastAPI实现API接口调用。涵盖Ollama安装、路径迁移、模型下载运行及REST API封装全过程,助力快速构建可扩展的AI应用服务。
1613 6
|
5月前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
|
5月前
|
机器学习/深度学习 人工智能 人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
494 121
|
5月前
|
人工智能 搜索推荐 数据可视化
当AI学会“使用工具”:智能体(Agent)如何重塑人机交互
当AI学会“使用工具”:智能体(Agent)如何重塑人机交互
620 115
|
5月前
|
数据采集 人工智能 搜索推荐
智能新纪元:多模态大模型如何重塑人机交互
智能新纪元:多模态大模型如何重塑人机交互
333 113
|
5月前
|
人工智能 人机交互 知识图谱
当AI学会“融会贯通”:多模态大模型如何重塑未来
当AI学会“融会贯通”:多模态大模型如何重塑未来
387 114
|
5月前
|
人工智能 自然语言处理 数据挖掘
从幻觉到精准:RAG如何重塑AI对话的可靠性
从幻觉到精准:RAG如何重塑AI对话的可靠性
449 111
|
5月前
|
人工智能 API 开发工具
构建AI智能体:一、初识AI大模型与API调用
本文介绍大模型基础知识及API调用方法,涵盖阿里云百炼平台密钥申请、DashScope SDK使用、Python调用示例(如文本情感分析、图像文字识别),助力开发者快速上手大模型应用开发。
2093 17
构建AI智能体:一、初识AI大模型与API调用
|
5月前
|
人工智能 安全 开发工具
C3仓库AI代码门禁通用实践:基于Qwen3-Coder+RAG的代码评审
本文介绍基于Qwen3-Coder、RAG与Iflow在C3级代码仓库落地LLM代码评审的实践,实现AI辅助人工评审。通过CI流水线自动触发,结合私域知识库与生产代码同仓管理,已成功拦截数十次高危缺陷,显著提升评审效率与质量,具备向各类代码门禁平台复用推广的价值。(239字)
1109 24
|
5月前
|
存储 机器学习/深度学习 人工智能
构建AI智能体:三、Prompt提示词工程:几句话让AI秒懂你心
本文深入浅出地讲解Prompt原理及其与大模型的关系,系统介绍Prompt的核心要素、编写原则与应用场景,帮助用户通过精准指令提升AI交互效率,释放大模型潜能。
999 6

热门文章

最新文章