乐于分享
好东西不私藏

让大模型读懂你的私有文档:一文讲透 RAG 检索增强生成与Agent智能体落地

让大模型读懂你的私有文档:一文讲透 RAG 检索增强生成与Agent智能体落地

RAG 

RAG,即Retrieval Augmented Generation,检索增强生成,被誉为当前大模型落地的“黄金架构”。它的核心逻辑非常简单却高效:先检索私有文档,后生成

在用户提问时,系统先去私有知识库中搜索相关片段,将这些片段作为“上下文”连同问题一起喂给大模型。这样,大模型就能基于事实回答问题,极大地减少了幻觉,提升了专业度。

LangChain 重塑 RAG

在 LangChain 生态中,RAG 的核心逻辑通过 Retriever 接口完美落地。

  • 外部数据的接入点:LangChain 提供了丰富的 Retriever integrations,让你能轻松连接各种数据源(无论是本地的 PDF/Markdown 文档,还是外部的 API 服务)。
  • 打破知识边界:通过调用这些检索器,大模型不再受限于训练数据的截止时间或通用知识库,它获得了动态的“外部记忆”,能够基于你提供的私有数据回答问题,从而真正实现 RAG 的价值——精准、可控、无幻觉

核心依赖库安装

pip install langchain-text-splitters faiss-cpu langchain_communitypip install dashscope
  • langchain-text-splitters:文本切割成小块

  • faiss-cpu:向量数据库,实现高效检索

  • langchain_community:是连接 LangChain 核心与外部生态的桥梁

  • dashscope: 通义千问系列的官方 Python SDK

实战演练:构建 Agentic RAG 系统

本案例将构建一个“校园学生手册问答助手”

  • 输入:一份 student.md Markdown 格式的学生手册。
  • 能力:用户提问学校纪律等内容,系统自动检索手册内容并回答。
  • 架构:DeepSeek (LLM) + DashScope (Embedding) + FAISS (Vector DB) + LangChain Agent。

2.1 通过API调用DeepSeekDeepSeek 作为推理模型】

import osfrom dotenv import load_dotenvload_dotenv(override=True)# 初始化 DeepSeek 大模型 (推理大脑)from langchain_deepseek import ChatDeepSeekmodel = ChatDeepSeek(model='deepseek-chat',api_key = os.getenv("DEEPSEEK_API_KEY"))question = "你好,请你介绍一下你自己。"result = model.invoke(question)print(result.content)

2.2 使用通义千问的`Embeddings`模型将自然语言转化成词向量

from langchain_community.embeddings import DashScopeEmbeddings#初始化 DashScope Embedding (文本向量化)embed = DashScopeEmbeddings(    model="text-embedding-v3",  # 使用通义千问 text-embedding-v3 模型    dashscope_api_key=os.getenv("DASHSCOPE_API_KEY"))# 简单测试向量化text = "你好,这是一个测试。"query_result = embed.embed_query(text)print(query_result[:5])  # 打印前5个维度,输出如下#[-0.08589579164981842, 0.015449581667780876, -0.09188129007816315, -0.05301441624760628, -0.04971073195338249]

2.3 文本数据处理与向量库构建

  • 读取本地学生手册文档,按 Markdown 标题智能切分

# 读取文档file_path = "student.md"with open(file_path, "r", encoding="utf-8"as f:    md_content = f.read()md_content#按标题层级切割 (#, ##),保留结构信息from langchain_text_splitters import MarkdownHeaderTextSplitterheaders_to_split_on = [    ("#""Header 1"),    ("##""Header 2")]markdown_splitter = MarkdownHeaderTextSplitter(headers_to_split_on=headers_to_split_on)md_header_splits = markdown_splitter.split_text(md_content)md_header_splits
分割结果如下,可见按照标题分成了5份:
  • 创建并保存 FAISS 向量库

from langchain_community.vectorstores import FAISSvector_store = FAISS.from_documents(md_header_splits, embedding=embed)vector_store.save_local("student_handbook_db")

此时在本地会出现Faiss向量文件

  • 创建检索器 (Retriever)

# 将 FAISS 向量存储转换为一个 retriever(检索器),并为该检索器设置一些搜索相关的参数。k=1 表示检索时返回 最相似的 3 个文档retriever = vector_store.as_retriever(search_kwargs={'k'3})

2.4 封装工具与构建 Agent

这是让系统变“聪明”的关键。我们将检索功能封装为 Tool,并告诉 Agent 何时使用它。

from langchain.tools import tool#定义检索工具@tool(response_format="content_and_artifact")def retrieve_context(query: str):    """当需要查询学生手册、校规、宿舍管理等具体文档内容时使用此工具。"""    retrieved_docs = vector_store.similarity_search(query, k=2)    serialized = "\n\n".join(        (f"Source: {doc.metadata}\nContent: {doc.page_content}")        for doc in retrieved_docs    )    return serialized, retrieved_docsprompt = """你是一名乐于助人的校园助手。- 当用户提问涉及:入学、考核、成绩、宿舍、校园生活等具体规章时,**必须**调用 `retrieve_context` 工具检索文档后回答。- 对于闲聊、通用常识或其他无关话题,直接利用你的内部知识回答,**不要**调用工具。"""#创建 Agentfrom langchain.agents import create_agenttools = [retrieve_context]agent = create_agent(model, tools, system_prompt=prompt)#发起测试response = agent.invoke({"messages": [{"role""user""content""请问学校宿舍如何管理?"}]})responseresponse['messages'][-1].content

运行结果解析:当你运行上述代码提问“宿舍如何管理?”时,后台会发生以下流程:

  • 思考:Agent 分析用户意图,发现涉及“宿舍管理”,匹配到 Prompt 中的规则。

  • 行动:Agent 决定调用 retrieve_context 工具,传入 query。

  • 检索:工具内部调用 FAISS,在向量库中搜索相似片段,返回具体的宿舍管理规定文本。

  • 生成:Agent 结合检索到的真实文本,组织语言,输出最终答案。

  • 这就是 Function Calling 驱动的 Agentic RAG 全流程。

🚀 总结

通过本文,我们理清了 LangChain 中各组件的职责,亲手实现了一个具备“思考 – 检索 – 回答”闭环的RAG智能体

  • LangChain 提供了标准化的RAG组装方式;

  • FAISS 解决了海量数据的快速记忆问题;
  • Agent 机制则让大模型学会了“按需索取”,不再盲目生成。

你可以将 student.md 替换为公司的员工手册、产品说明书或法律条文,瞬间拥有一个懂业务、会查资料的 AI 专家。

Reference

【1】 赋范空间科技课程

——The  End——

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 让大模型读懂你的私有文档:一文讲透 RAG 检索增强生成与Agent智能体落地

评论 抢沙发

4 + 2 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮