RAG 原理入门:从 Naive 到 Modular RAG

RAG 原理入门:从 Naive 到 Modular RAG

本文字数:1061  阅读时长:3分钟

访客数:加载中... | 阅读量:加载中...

一、RAG 的本质:开卷考试

核心痛点:LLM(大语言模型)的知识是静态的,像一个"已毕业的学生",不知道最新的新闻,也不了解企业内部的私有数据。

解决方案:RAG = LLM + 搜索引擎/数据库。

类比一下:

  • 纯 LLM:闭卷考试,全靠脑子里的死记硬背(参数记忆)。
  • RAG:开卷考试,允许翻阅参考书(外部知识库)来回答问题。

二、RAG 的标准流程(Naive RAG)

RAG 的朴素实现可以拆成三个阶段:

1. 索引(Indexing)

  • 把文档切分成小块(Chunking)。
  • 把文字变成向量(Embedding),存入向量数据库。

2. 检索(Retrieval)

  • 用户提问 → 变成向量。
  • 在数据库中找"距离最近"的文档块(Top-K)。

3. 生成(Generation)

  • Prompt 组装:用户问题 + 检索到的上下文 + 指令。
  • 喂给 LLM 生成最终答案。

三、进阶:如何搜得更准?(Advanced RAG)

检索前的优化

  • 查询重写(Query Rewriting):用户的提问往往是不完整的。
    • 例子:用户问"它怎么收费?",RAG 需要将其改写为"OpenAI 的 API 怎么收费?"。
  • 假设性文档嵌入(HyDE):
    • 让 LLM 先生成一个"假答案"。
    • 用这个假答案去数据库搜,通常比直接搜问题更准。

检索后的优化

  • 重排序(Rerank):
    • 向量检索(Cosine Similarity)只能看大概相似度,不够精细。
    • Rerank 模型:像老师批改作业一样,仔细给检索回来的 Top-50 个结果打分,挑出真正最相关的 Top-5。

四、模块化 RAG(Modular RAG)

思路:不再是线性的"检索-生成",而是模块化组合。

常见模块:

  • Memory 模块:记住之前的对话上下文。
  • Routing(路由):判断这个问题需不需要查库?查哪个库?
  • Self-Refine(自省):LLM 生成答案后,自己检查一遍"我答对了吗?",如果不对继续查。

五、RAG vs Fine-tuning(微调)

维度RAG(外挂大脑)Fine-tuning(脑科手术)
知识更新极快(直接存入文档即可)慢(需要重新训练)
数据隐私高(数据在本地数据库)低(数据进入模型参数)
幻觉问题较少(基于事实回答)仍可能存在
适用场景查阅文档、客服、私有知识库学习特定的说话风格、行业术语

六、核心公式与逻辑

生成概率:

  • x:用户输入
  • y:生成的回答
  • z:检索到的文档片段

解释:回答 y 的概率,取决于检索到的文档 z 有多靠谱,以及有了 z 之后生成 y 有多顺畅。