第 04 课,共 7 课
给 Agent 接入自己的资料
把文档转成可检索的向量,在回答前先找相关片段,避免模型只依赖训练知识。
完成本课后
你应该能做到
- 理解 RAG 的五步数据流
- 建立一个内存向量库
- 根据中文问题检索最相关的文档
先把 RAG 看成一条流水线
官方 Retrieval 文档把 RAG 拆成加载、切分、向量化、存储和检索。模型只负责最后理解检索结果并组织回答。
本课先完成检索,不急着加入 Agent。确认检索正确后,再把 retriever 包装成工具。
- 加载文档
- 按语义切分文本
- 用 embedding 生成向量
- 保存到 vector store
- 按问题检索相关片段
建立最小知识库
DeepSeek 聊天模型不提供 embedding 接口。下面按官方知识库示例使用 OpenAI embedding。也可以替换成 LangChain 官方支持的其他 embedding provider。
rag_search.py
from langchain_core.documents import Document
from langchain_core.vectorstores import InMemoryVectorStore
from langchain_openai import OpenAIEmbeddings
documents = [
Document(page_content="xueai 的 LangChain 中文课共有 7 课。"),
Document(page_content="LangGraph 负责状态、分支和长时间运行。"),
Document(page_content="LangSmith 用于追踪、评估、部署和监控。"),
]
vector_store = InMemoryVectorStore(
embedding=OpenAIEmbeddings(model="text-embedding-3-small")
)
vector_store.add_documents(documents=documents)
results = vector_store.similarity_search("什么工具负责监控 Agent?", k=1)
print(results[0].page_content)
检索正确后再接 Agent
检索结果应该是关于 LangSmith 的那一条。如果结果不相关,先检查文档切分、embedding 模型和查询表达,不要先调整大模型提示词。
下一步可以把 similarity_search 包装成工具,让 Agent 只在需要内部知识时调用。
本课完成标准
- 成功安装 langchain-openai 并设置 OPENAI_API_KEY
- 检索结果包含 LangSmith
- 知道聊天模型和 embedding 模型不是同一个接口
常见错误
运行 pip install -U langchain-openai。provider 包需要单独安装。
选择支持中文的 embedding 模型,并检查切分后的文本是否保留完整语义。
内容来源
依据官方文档中文整理
代码和概念来自 LangChain 官方固定提交。中文解释用于降低学习门槛,英文原文只作为核对入口。
固定提交 08ae2610bd712a4a340d59f27122bea97a0a598d