Skip to content

高级 RAG 方法 ​

一条基础 RAG 流程会检索若干片段,再交给模型回答。继续改进时,需要知道错误发生在哪个环节:正确资料是否进入索引,问题是否表达完整,候选是否包含答案,以及模型是否保留了证据中的条件。

本节接着 RAG 完整链路展开。先讨论文档如何组织、查询如何形成,再进入召回、排序和上下文处理;复杂任务中的选源、多步检索和图结构另设专题。

六组专题 ​

分组内容范围
文档组织与长上下文父子块与句窗、RAPTOR、LongRAG,以及长上下文与 CAG
查询处理查询改写、多查询、HyDE、Step-back,以及 Self-Query 条件提取
召回与排序混合检索与 RRF、SPLADE、ColBERT、Reranker
上下文与答案证据选择、压缩、引用、冲突处理与拒答
检索策略与复杂问答数据源路由、问题分解、Agentic RAG,以及 Adaptive-RAG、CRAG、Self-RAG、FLARE
图检索知识图谱 RAG、Microsoft GraphRAG 与 LightRAG

前四组覆盖固定 RAG 流程中可以独立改进的环节。第五组讨论执行过程如何随请求和检索结果变化。第六组使用实体、关系和图社区组织资料,适合需要跨文档关联或全库归纳的问题。

从错误定位到方法选择 ​

一个报销助手答错了提交期限,原因可能是正确制度没有入库,也可能是生成模型把提交期限读成了付款时间。两种情况需要改动的地方不同。

观察到的问题优先检查对应专题
原始文档有条款,索引里却没有解析结果、入库状态、文档版本企业 RAG 数据工程
“那境外呢”没有带上前文的报销主题检索请求是否完整查询改写
正确条款存在,但口语表达匹配不到查询表达与召回方式Multi-Query、HyDE、混合检索
正确条款已经进入候选,却排在无关片段后面候选排序Reranker
命中了期限,却没有带回适用范围和例外分块、返回粒度与上下文截断父子块与句窗、上下文选择
比较两年规定时只找到一年子问题覆盖与执行依赖问题分解与多跳检索
完整证据已在上下文,答案仍混淆条件生成约束与引用支持关系证据引用、冲突处理与拒答

排查时需要能回看原始问题、实际查询、过滤范围、候选片段、最终上下文和回答引用。如果知识库缺少资料,或者用户无权访问,增加查询次数也不能保证取得答案。

模块组成与执行方式 ​

文献中的 Naive RAG、Advanced RAG 和 Modular RAG 描述了不同的组织方式。Naive RAG 通常指直接检索后生成的基础流程;Advanced RAG 在检索前后加入查询改写、重排等改进;Modular RAG 将查询、检索、生成等拆成可组合模块。它们不要求项目按顺序升级。

模块如何组合,与在线执行是否需要多轮检索,可以分别考虑:

text
固定流程:问题 → 检索 → 选择证据 → 回答

条件流程:问题 → 判断任务类型
                 ├─ 改写已有文字 → 直接处理
                 └─ 查公司制度 → 检索 → 回答

迭代流程:问题 → 检索 → 检查缺口
                         ├─ 证据充分 → 回答
                         ├─ 有明确补查方向 → 再检索
                         └─ 缺资料、条件或预算 → 部分回答 / 澄清 / 停止

这些执行方式都可以使用混合检索、父子块和重排。检索路由负责选择数据源;问题分解安排事实需求及依赖;Agentic RAG 根据已有结果决定下一步。Adaptive-RAG、CRAG、Self-RAG 和 FLARE 则分别介绍具体的策略选择、检索纠错或生成中检索机制。

模块之间应保留片段标识、原文、来源和版本。返回空结果、服务超时、证据缺少一个前提,需要不同的处理方式,不能都变成一段空文本。

各组入口列出文章及其内容边界。评测指标、索引更新、权限隔离、成本与延迟的系统性处理集中在 RAG 评估与生产工程中。

参考资料 ​

持续学习,持续实践。