RAG 架构深度解析:从朴素到模块化

2026-05-20RAG检索架构

RAG 的三代演进

第一代:朴素 RAG (Naive RAG)

最基础的流程:Query → Embedding → 向量检索 → 拼接 Prompt → LLM 回答。

问题 → 向量化 → 向量检索 → Top-K 文档 → LLM 生成回答

问题:检索质量差、没有查询优化、不支持多轮对话。

第二代:进阶 RAG (Advanced RAG)

在朴素 RAG 基础上增加预处理和后处理环节:

  • 查询改写:将口语转为书面语、分解复杂查询、生成假设回答(HyDE)
  • 混合检索:向量 + 关键词(BM25)+ 元数据过滤 → RRF 融合排序
  • 重排序(Rerank):用 Cross-Encoder 对 Top-K 结果精排
  • 分块策略优化:递归分割、语义分块、小块检索+大块阅读(Small2Big)
问题 → 查询改写 → 向量检索 + BM25 → RRF 融合 → Rerank → Prompt → LLM

第三代:模块化 RAG (Modular RAG)

将 RAG 拆解为可组合的模块,每个模块可独立替换和编排:

  • Search:向量搜索、BM25、图搜索、SQL 查询
  • Routing:根据问题类型路由到不同检索策略
  • Fusion:RRF、CC(倒数排名融合)、Score 加权
  • Rewrite:查询重写、分解、扩展
  • Verify:检索结果验证、相关性检查

RAG 检索的常见策略

策略原理适用场景
向量相似度语义搜索,embedding 后余弦距离泛化知识问答
BM25 关键词TF-IDF 变体,精确定位术语专业术语、代码、编号查询
混合检索向量+BM25 融合(RRF/加权)通用场景(取长补短)
HyDE先生成假设回答,再检索查询简短但意图复杂的场景
Self-RAGLLM 自评估是否需要检索减少不必要检索,节省成本

分块策略

  • 固定大小分块:每 N 个 token 一刀切,简单但可能切断语义
  • 递归字符分割:按段落→句子→短语层次切分,保留语义完整性
  • 语义分块:检测内容边界(如换行、标题、主题变化)作为断点
  • Small2Big:检索小块的向量,返回大块上下文(兼顾精度和上下文丰富度)

查询优化技术

  • 查询分解:将复杂查询拆为多个子查询分别检索
  • 查询扩展:用同义词、翻译、相关术语扩展查询
  • 假设文档嵌入 (HyDE):先让 LLM 生成假设回答,用它做检索
  • 多轮合并:将历史对话与当前问题合并成一个自包含查询

RAG 评估指标

  • 检索质量:Recall@K、Precision@K、MRR、NDCG
  • 生成质量:Faithfulness(忠实度)、Answer Relevance、Context Relevance
  • 端到端:人工评分、LLM-as-a-Judge、RAGAS 框架
未标记