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_community
pip 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 os
from dotenv import load_dotenv
load_dotenv(override=True)
# 初始化 DeepSeek 大模型 (推理大脑)
from langchain_deepseek import ChatDeepSeek
model = 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 MarkdownHeaderTextSplitter
headers_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 FAISS
vector_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_docs
prompt = """你是一名乐于助人的校园助手。
- 当用户提问涉及:入学、考核、成绩、宿舍、校园生活等具体规章时,**必须**调用 `retrieve_context` 工具检索文档后回答。
- 对于闲聊、通用常识或其他无关话题,直接利用你的内部知识回答,**不要**调用工具。
"""
#创建 Agent
from langchain.agents import create_agent
tools = [retrieve_context]
agent = create_agent(model, tools, system_prompt=prompt)
#发起测试
response = agent.invoke({"messages": [{"role": "user", "content": "请问学校宿舍如何管理?"}]})
response
response['messages'][-1].content

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

  • 思考:Agent 分析用户意图,发现涉及“宿舍管理”,匹配到 Prompt 中的规则。
  • 行动:Agent 决定调用 retrieve_context 工具,传入 query。
  • 检索:工具内部调用 FAISS,在向量库中搜索相似片段,返回具体的宿舍管理规定文本。
  • 生成:Agent 结合检索到的真实文本,组织语言,输出最终答案。
  • 这就是 Function Calling 驱动的 Agentic RAG 全流程。

🚀 总结

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

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

  • FAISS 解决了海量数据的快速记忆问题;

  • Agent 机制则让大模型学会了“按需索取”,不再盲目生成。

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

这里给大家精心整理了一份全面的AI大模型学习资源包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

👇👇扫码免费领取全部内容👇👇

在这里插入图片描述

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2026行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

7. 资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:

👇👇扫码免费领取全部内容👇👇
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐