内容纲要
一、核心定义
RAG(检索增强生成):在LLM生成响应前,从外部知识库检索相关信息并增强提示词,使AI能够基于实时、可验证数据生成准确答案。
核心类比:
传统LLM → 闭卷考试(只靠记忆)
RAG系统 → 开卷考试(可查阅资料)
工作流程:
用户查询
↓
语义搜索知识库(不是关键字匹配)
↓
提取最相关信息片段
↓
增强原始提示词(查询+检索内容)
↓
LLM生成基于事实的响应
二、RAG核心概念
| 概念 | 定义 | 作用 |
|---|---|---|
| Embeddings(嵌入) | 文本的数字向量表示 | 捕捉语义含义,在高维空间中相近含义的词距离近 |
| 语义相似度 | 基于含义而非词语的相似程度 | "furry feline"与"cat"高度相似 |
| Chunking(分块) | 将大文档分割成小片段 | 提高检索效率和相关性 |
| 向量数据库 | 专门存储和查询嵌入的数据库 | 高效语义搜索(FAISS/Pinecone/Weaviate) |
| 语义搜索 | 理解意图的智能搜索 | 超越关键字匹配,理解查询背后的概念 |
核心技术架构

图1:RAG核心流程 - 分块→嵌入→向量存储→语义检索
三、为什么需要RAG?
| LLM局限 | 影响 | RAG解决方案 |
|---|---|---|
| 静态训练数据 | 信息过时,无法获取最新资讯 | 连接实时知识库 |
| 幻觉(Hallucination) | 生成虚假信息 | 基于可验证数据回答 |
| 缺乏专业知识 | 无法访问公司内部文档 | 整合私有知识库 |
| 无法提供来源 | 答案不可验证 | 附带引用和出处 |
| 领域知识不足 | 专业领域表现差 | 动态加载领域文档 |
核心优势:
- ✅ 访问最新信息
- ✅ 降低幻觉风险
- ✅ 利用专业知识
- ✅ 提供可验证引用
- ✅ 无需重新训练模型
四、检索技术对比
| 技术 | 原理 | 优势 | 劣势 |
|---|---|---|---|
| 关键字搜索(BM25) | 词频匹配 | 快速、精准匹配 | 无法理解语义 |
| 向量搜索 | 语义相似度 | 理解含义、发现概念关联 | 计算成本高 |
| 混合搜索 | 结合BM25+向量 | 兼顾精度和语义 | 实现复杂 |
示例对比:
查询:"法国首都是哪里?"
关键字搜索:
只匹配"法国"+"首都"等词
语义搜索:
识别查询意图,匹配"Which city is France's capital?"
即使措辞完全不同也能找到答案
五、RAG的三种演进形式
1. 标准RAG(Basic RAG)
特点:简单检索+增强
流程:查询 → 检索 → 拼接 → 生成
适用:基础问答、文档查询
2. 图RAG(Graph RAG)
特点:使用知识图谱而非向量库
优势:
- 理解实体间显式关系
- 综合多文档碎片化信息
- 提供更细致的上下文推理
劣势:
- 构建和维护成本高
- 灵活性差
- 延迟更高
适用:复杂金融分析、科研(基因-疾病关系)

图2:智能体式RAG - 引入推理层主动评估和优化检索结果
3. 智能体式RAG(Agentic RAG)⭐
核心创新:引入推理和决策层
| 能力 | 示例场景 | 价值 |
|---|---|---|
| 来源验证 | 识别2025政策文档比2020博客更权威 | 确保答案最新准确 |
| 冲突协调 | 预算提案€50K vs 财报€65K | 选择最可靠来源 |
| 多步推理 | "我们产品vs竞品"→分解为4个子查询 | 综合复杂答案 |
| 识别知识差距 | 内部库无昨日新闻→调用Web搜索API | 动态使用外部工具 |
工作流程:
用户查询
↓
检索初步结果
↓
智能体评估
├─ 来源是否权威?
├─ 信息是否冲突?
├─ 是否需要分解查询?
└─ 是否需要外部工具?
↓
优化后的上下文
↓
LLM生成可靠答案
⚠️ 挑战:
- 复杂性↑:设计实现维护成本高
- 延迟↑:多轮推理增加响应时间
- 新错误源:推理缺陷可能导致误判
六、典型应用场景
1. 企业搜索与问答
场景:员工查询HR政策
实现:检索内部文档→生成准确答复
价值:减少人工支持成本
2. 客户支持与服务台
场景:客户询问产品使用问题
实现:访问手册/FAQ/工单历史
价值:快速一致的响应
3. 个性化内容推荐
场景:推荐相关文章/产品
实现:语义匹配用户偏好
价值:超越关键字的精准推荐
4. 新闻与时事摘要
场景:查询最新事件
实现:集成实时新闻源
价值:生成最新摘要
七、实战示例
1. ADK + Google Search
from google.adk.tools import google_search
from google.adk.agents import Agent
search_agent = Agent(
name="research_assistant",
model="gemini-2.0-flash-exp",
instruction="帮助用户研究主题,使用Google Search工具",
tools=[google_search]
)
2. ADK + Vertex AI RAG
from google.adk.memory import VertexAiRagMemoryService
RAG_CORPUS_RESOURCE_NAME = "projects/xxx/ragCorpora/xxx"
memory_service = VertexAiRagMemoryService(
rag_corpus=RAG_CORPUS_RESOURCE_NAME,
similarity_top_k=5, # 返回最相似的5个结果
vector_distance_threshold=0.7 # 语义距离阈值
)
3. LangChain完整RAG流程
关键步骤:
# 1. 文档加载和分块
loader = TextLoader('./document.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_documents(documents)
# 2. 嵌入并存储到向量数据库
vectorstore = Weaviate.from_documents(
documents=chunks,
embedding=OpenAIEmbeddings()
)
retriever = vectorstore.as_retriever()
# 3. 定义RAG链
template = """基于以下上下文回答问题:
Context: {context}
Question: {question}
Answer:"""
prompt = ChatPromptTemplate.from_template(template)
rag_chain = prompt | llm | StrOutputParser()
# 4. 执行查询
context = retriever.invoke(user_question)
answer = rag_chain.invoke({"context": context, "question": user_question})
八、RAG的优势与挑战
✅ 核心优势
| 优势 | 说明 |
|---|---|
| 实时性 | 克服静态训练数据限制 |
| 准确性 | 基于事实而非记忆 |
| 可验证性 | 提供来源引用 |
| 专业性 | 访问领域专业知识 |
| 无需重训练 | 动态更新知识 |
⚠️ 主要挑战
| 挑战 | 影响 | 缓解方案 |
|---|---|---|
| 信息碎片化 | 关键信息分散多文档 | Graph RAG/Agentic RAG |
| 检索质量 | 不相关块引入噪声 | 混合搜索+重排序 |
| 矛盾信息 | 多来源信息冲突 | Agentic RAG协调 |
| 预处理成本 | 需构建向量数据库 | 使用托管服务(Pinecone) |
| 数据同步 | 知识库需定期更新 | 自动化ETL流程 |
| 延迟增加 | 检索步骤增加时间 | 优化索引+缓存 |
| Token消耗 | 增强提示词更长 | 智能分块+摘要 |
九、向量数据库选型
| 类型 | 代表产品 | 适用场景 |
|---|---|---|
| 托管服务 | Pinecone, Weaviate | 快速上线、无需维护 |
| 开源方案 | Chroma DB, Milvus, Qdrant | 自主可控、可定制 |
| 扩展现有DB | pgvector(Postgres), Redis | 现有架构集成 |
| 核心库 | FAISS, ScaNN | 嵌入到应用中 |
选型考虑:
- 数据规模
- 查询QPS
- 运维能力
- 成本预算
十、常见问题
Q1:RAG vs Fine-tuning如何选择?
- RAG: 知识频繁更新、需要引用来源、多领域知识
- Fine-tuning: 改变模型行为、特定风格输出、固定领域
Q2:Chunk大小如何确定?
- 太小:丢失上下文
- 太大:检索不精准
- 建议:500-1000 tokens,根据文档类型调整
Q3:如何提高检索准确性?
1) 混合搜索(BM25+向量);2) 重排序模型;3) 查询扩展;4) 元数据过滤;5) Agentic RAG。
Q4:如何处理多语言RAG?
使用多语言嵌入模型(如mBERT),或分别构建各语言知识库。
Q5:RAG如何保护隐私?
1) 数据脱敏;2) 访问控制;3) 本地部署;4) 审计日志。
Q6:如何评估RAG质量?
- Retrieval: 召回率、精确率、MRR
- Generation: 准确性、相关性、流畅度
- End-to-End: 用户满意度
十一、参考资源
图片资源
RAG核心概念
Agentic RAG
数据库检索
Web检索
原文章节
- <code>20-Chapter-14-Knowledge-Retrieval-RAG.md</code>
相关章节
- 第 5 章:工具使用(RAG作为一种工具)
- 第 8 章:记忆管理(长期记忆vs RAG)
- 第 10 章:MCP(标准化知识源接入)