L2 · 主题中枢

RAG

知识增强检索增强生成向量检索企业知识库

RAG 用检索代替记忆,让大模型基于可信外部知识生成回答

7核心模块
3关键决策点
2主要瓶颈
先记住检索质量决定生成上限

RAG 的效果不取决于模型多强,而取决于能否精准召回相关上下文并有效过滤噪声。分块策略、Embedding 质量和重排机制是成败关键。

LIVE
CORE RAG Pipeline
01 WHAT

是什么

RAG 是将外部知识检索与大语言模型生成结合的架构,通过检索相关上下文注入 Prompt 来增强回答准确性。

02 WHY

为什么

解决大模型知识截止、幻觉和私有数据不可见问题,让模型基于最新、可信的业务数据生成回答,降低训练成本。

03 HOW

怎么做

从文档解析、分块、向量化、存储到检索、重排、生成的最小闭环,用 LangChain 或 LlamaIndex 快速搭建原型。

04 WHEN

什么时候

适用于需要引用最新/私有知识且容忍一定延迟的场景;知识固定、实时性要求极高或纯逻辑推理任务不适用。

THIS PAGE INCLUDES
文档解析ChunkEmbeddingVector DatabaseRetrievalRerankGeneration

FOCUS

先记住这些

只留最重要的判断,细节见下方实践
01 独特价值

为什么需要 RAG

相比微调,RAG 无需重新训练即可注入新知识,支持精确引用和溯源,更新成本低。相比纯 Prompt,能突破知识截止和上下文窗口限制。

02 复杂度

真正难在哪里

分块粒度影响召回精度,过小丢失上下文,过大引入噪声。Embedding 模型对领域术语敏感度不足会导致语义漂移。检索噪声直接污染生成结果。

03 使用判断

什么时候用

知识频繁更新、需要引用来源、私有数据不可公开训练时适用。知识固定、实时性要求极高、纯逻辑推理或数据量极小时应换简单方案。

ROUTE

学习路径

建议按此顺序逐步深入
01
理解架构

掌握文档解析、分块、向量化、检索、重排、生成的完整链路

02
搭建原型

用 LangChain 或 LlamaIndex 实现最小可用 RAG,跑通本地知识库问答

03
优化检索

调整分块策略、替换 Embedding 模型、引入重排、优化 Top-K 和阈值

04
生产部署

处理并发、缓存、监控、评估幻觉率,设计兜底策略

PROBLEM / POSITION / INTERFACE

先弄清它为什么存在,以及谁在使用

不从历史开始,从真实工作关系开始。
  1. 01 解决的问题

    当模型需要回答训练数据之外的最新信息、企业私有知识或需要引用来源时

    直接 Prompt 无法突破知识截止,微调成本高且更新困难,模型易产生幻觉或编造事实

    成功标准
    模型能准确引用检索到的外部知识,回答有据可查,幻觉率显著降低,知识更新无需重新训练
  2. 02 AI 生态位

    位于检索系统与生成模型之间,负责将非结构化知识转化为模型可消费的上下文

    上游
    依赖文档解析、分块策略、Embedding 模型和向量数据库
    下游
    为对话系统、智能客服、知识问答、代码助手等提供增强后的生成能力
  3. 03 人的生态位

    负责定义知识边界、评估检索质量、设计 Prompt 模板和验收生成结果

    适合使用
    知识频繁更新、需要引用来源、私有数据不可公开训练、对幻觉容忍度低
    不必使用
    知识固定且公开、实时性要求毫秒级、纯逻辑/数学推理、数据量极小可直接 Prompt
  4. 04 独特价值

    无需重新训练即可动态注入最新知识,支持精确引用和溯源,成本远低于微调

    分块粒度与检索召回率的平衡、多模态文档解析、跨语言 Embedding 对齐、幻觉与检索噪声的过滤

    复杂度判断
    复杂度不是功能数量,而是控制与验证成本。

INTERFACE FLOW

谁在操作,信息怎样流动

  1. WHO OPERATES

    HUMAN定义知识范围、选择分块策略、设计 Prompt 模板、评估检索与生成质量

    SYSTEM执行文档解析、向量化、存储、检索、重排和生成调用

    BACKEND维护向量数据库、管理索引、处理并发请求和缓存

  2. INPUT

    用户查询、业务文档、知识库索引、检索参数

  3. CONTROL

    检索 Top-K、相似度阈值、重排模型选择、Prompt 模板、温度参数、上下文窗口大小

  4. OUTPUT

    带引用来源的生成文本、检索上下文元数据、置信度评分,不直接修改外部系统

FLOW

RAG 最小使用流程

01文档解析提取 PDF、Word、网页等文档的文本、表格和元数据,清洗噪声
02分块处理按语义边界或固定长度切分,保留上下文重叠,生成 Chunk
03向量化存储用 Embedding 模型将 Chunk 转为向量,存入 Vector Database 建立索引
04检索召回用户查询向量化后,在向量库中检索 Top-K 相关 Chunk
05重排过滤用 Rerank 模型或规则对召回结果精细排序,过滤低相关度内容
06生成回答将排序后的上下文注入 Prompt,调用 LLM 生成带引用的回答

COMPARE

RAG 与替代方案对比

维度RAG微调纯 Prompt
知识更新成本低,更新索引即可高,需重新训练无,受限于训练数据
引用溯源支持,可精确到 Chunk不支持,黑盒生成不支持
上下文窗口可扩展,检索注入受限于模型窗口受限于模型窗口
幻觉控制较强,依赖检索质量中等,依赖训练数据弱,易编造
适用场景动态知识、私有数据固定领域风格简单问答、逻辑推理
CODE / PYTHON最小 RAG 调用示例
import os
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA

# 加载文档
loader = TextLoader("knowledge.txt")
docs = loader.load()

# 分块
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)

# 向量化与存储
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = FAISS.from_documents(chunks, embeddings)

# 检索与生成
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(search_kwargs={"k": 3}),
    return_source_documents=True
)

# 查询
result = qa_chain.invoke({"query": "RAG 的核心优势是什么?"})
print(result["result"])
print("来源:", [doc.metadata for doc in result["source_documents"]])

使用 LangChain 实现本地知识库问答闭环

JSON / RESPONSE典型返回结构
{
  "result": "RAG 的核心优势在于无需重新训练即可动态注入最新知识,支持精确引用和溯源,更新成本远低于微调。",
  "source_documents": [
    {
      "page_content": "RAG 通过检索外部知识增强生成,解决幻觉与知识滞后...",
      "metadata": {
        "source": "knowledge.txt",
        "chunk_id": "chunk_001"
      }
    }
  ]
}

PRACTICE

RAG 上线检查清单

确认文档解析能正确处理目标格式(PDF/Word/网页)
分块策略经过验证,重叠区设计合理,无语义断裂
Embedding 模型在领域术语上表现良好,必要时微调
向量数据库索引建立完成,支持并发查询
检索 Top-K 和相似度阈值经过调优,平衡召回与精度
引入 Rerank 机制过滤低相关度结果
Prompt 模板包含明确的引用要求和拒绝回答条件
建立幻觉检测与人工审核兜底流程

FAQ

常见问题

选型、用法与失败,不复述定义。
01RAG 和微调有什么区别,什么时候选哪个?

RAG 动态注入知识,支持引用,更新成本低;微调改变模型权重,适合固定领域风格。知识频繁更新选 RAG,风格/格式固定选微调。

避免盲目微调导致知识滞后和成本浪费
02谁在实际使用 RAG?

业务方定义知识边界,工程师搭建链路,算法调优检索质量,最终用户消费生成结果。

明确各环节责任,避免检索与生成脱节
03最小可用 RAG 怎么搭建?

用 LangChain 加载文档、分块、向量化存入 FAISS,构建 RetrievalQA 链,30 行代码跑通本地问答。

快速验证可行性,再逐步优化各模块
04生产环境最容易在哪里失败?

分块不当导致语义断裂、Embedding 不匹配领域术语、检索噪声污染生成、缺乏兜底策略。

决定监控指标和优化优先级
05什么时候不需要 RAG?

知识固定公开、实时性要求极高、纯逻辑推理或数据量极小时,直接 Prompt 或微调更合适。

控制系统成本,避免过度工程