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

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 智能体(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 系统的性能,需要对数据进行严格的清洗和预处理。还需选择合适的向量表示方法和嵌入模型,提高检索的准确性和企业适用场景。

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
26天前
|
人工智能 Cloud Native 数据可视化
微医控股与阿里云达成战略合作,双方将携手基于通义千问大模型联合打造医疗全场景智能体,共同构建医疗垂类大模型
2025年6月17日,微医控股与阿里云达成战略合作,共建医疗AI基座及医疗全场景智能体。双方将基于通义千问大模型打造医疗垂类大模型,升级微医“5+1”智能体,并在诊断、用药、健康管理等环节深化应用。微医将结合阿里云技术优势推进IDC上云,助力AI+医疗基础设施建设,共同制定行业标准并推广城市级AI数字健共体。目前,微医AI服务已连接全国1.2万家医院和30万名医生,健康管理会员超100万。
|
1月前
|
人工智能 API 开发者
智能体(AI Agent)开发实战之【LangChain】(一)接入大模型输出结果
LangChain 是一个开源框架,专为构建与大语言模型(LLMs)相关的应用设计。通过集成多个 API、数据源和工具,助力开发者高效构建智能应用。本文介绍了 LangChain 的环境准备(如安装 LangChain、OpenAI 及国内 DeepSeek 等库)、代码实现(以国内开源大模型 Qwen 为例,展示接入及输出结果的全流程),以及核心参数配置说明。LangChain 的灵活性和强大功能使其成为开发对话式智能应用的理想选择。
|
1月前
|
人工智能 自然语言处理 IDE
通义灵码 × Qwen3:编程智能体上线
通义灵码现已全面支持Qwen3,正式上线编程智能体。升级后的工具不再只是代码生成器,而是能理解任务的智能搭档,依托Qwen3能力结合MCP服务,自动感知项目结构、分析需求并调用多种工具完成编码任务。通过自然语言输入,开发者可在10分钟内完成原本需1~2天的App开发工作。此外,通义灵码支持工程级变更、自动上下文感知、工具自主使用及终端命令执行,深度集成3000+ MCP服务,覆盖DevOps全流程。目前插件下载量超1500万,累计生成代码超30亿行。体验只需将插件升级至2.5.0版本以上并在VS Code或JetBrains IDE中启用。
125 24
|
1月前
|
人工智能 IDE 算法
通义灵码 AI IDE 上线!智能体+MCP 从手动调用工具过渡到“AI 主动调度资源”
编程智能体与 MCP 的结合,不只是“工具+助手”,而是一次范式上的跃迁——从“手动调用工具”过渡到“AI 主动调度资源”。
|
22天前
|
缓存 自然语言处理 监控
基于通义大模型的智能客服系统构建实战:从模型微调到API部署
本文详细解析了基于通义大模型的智能客服系统构建全流程,涵盖数据准备、模型微调、性能优化及API部署等关键环节。通过实战案例与代码演示,展示了如何针对客服场景优化训练数据、高效微调大模型、解决部署中的延迟与并发问题,以及构建完整的API服务与监控体系。文章还探讨了性能优化进阶技术,如模型量化压缩和缓存策略,并提供了安全与合规实践建议。最终总结显示,微调后模型意图识别准确率提升14.3%,QPS从12.3提升至86.7,延迟降低74%。
224 14
|
24天前
|
数据采集 人工智能 编解码
2025年颠覆闭源大模型?MonkeyOCR:这款开源AI文档解析模型,精度更高,速度更快!
还在依赖昂贵且慢的闭源OCR工具?华中科技大学开源的MonkeyOCR文档解析模型,以其超越GPT4o的精度和更快的推理速度,在单机单卡(3090)上即可部署,正颠覆业界认知。本文将深入解析其设计哲学、核心突破——大规模自建数据集,并分享实测体验与避坑指南。
374 0
|
1月前
|
机器学习/深度学习 编解码 缓存
通义万相首尾帧图模型一键生成特效视频!
本文介绍了阿里通义发布的Wan2.1系列模型及其首尾帧生视频功能。该模型采用先进的DiT架构,通过高效的VAE模型降低运算成本,同时利用Full Attention机制确保生成视频的时间与空间一致性。模型训练分为三个阶段,逐步优化首尾帧生成能力及细节复刻效果。此外,文章展示了具体案例,并详细说明了训练和推理优化方法。目前,该模型已开源。
|
1月前
|
测试技术
字节Seed开源统一多模态理解和生成模型 BAGEL!
近期,字节跳动Seed推出了 BAGEL—— 一个开源的多模态理解和生成础模型,具有70亿个激活参数(总共140亿个),并在大规模交错多模态数据上进行训练。
183 3
|
2月前
|
人工智能 小程序 计算机视觉
AI不只有大模型,小模型也蕴含着大生产力
近年来,AI大模型蓬勃发展,从ChatGPT掀起全球热潮,到国内“百模大战”爆发,再到DeepSeek打破算力壁垒,AI技术不断刷新认知。然而,在大模型备受关注的同时,许多小而精的细分模型却被忽视。这些轻量级模型无需依赖强大算力,可运行于手机、手持设备等边缘终端,广泛应用于物体识别、条码扫描、人体骨骼检测等领域。例如,通过人体识别模型衍生出的运动与姿态识别能力,已在AI体育、康复训练、线上赛事等场景中展现出巨大潜力,大幅提升了相关领域的效率与应用范围。本文将带您深入了解这些高效的小模型及其实际价值。

热门文章

最新文章