1. 针对通用 RAG,你觉得还有哪些改进点?

1.1 普通 RAG 的问题,往往不是“模型不会”,而是“证据没给好”

普通 RAG 的流程很简单:用户提问,系统检索相关文档,把文档片段塞给大模型,然后让模型回答。这个流程看起来完整,但真正落地后很容易遇到各种问题:用户问题太短导致搜不到,文档切分不合理导致答案被切断,召回结果里噪声太多,最相关证据排在后面,模型没有引用依据就开始自由发挥。

所以,高级 RAG 的改进点不能只盯“换一个更大的模型”。更成熟的做法,是把整个链路拆开看:索引层、查询层、召回层、重排层、生成层、评估层,每一层都有可以优化的空间。

1.2 高级 RAG 的六层优化框架

索引层负责把文档变成可检索的结构,包括 PDF 解析、表格识别、清洗去噪、Chunk 切分、元数据标注、父子块映射。查询层负责把用户的自然问题改造成适合检索的问题,包括查询改写、查询分解、多查询扩展、HyDE 等。召回层负责尽可能把正确证据找回来,常见做法是向量检索、关键词检索、混合检索、多路召回。重排层负责把真正相关的证据排到前面,常用 Cross-Encoder、LLM Rerank、规则重排、RRF。生成层负责让模型基于证据回答,并通过引用、约束、拒答、事实校验减少幻觉。评估层负责证明这些优化到底有没有用。

2. RAG 各块有哪些优化策略?

2.1 索引阶段:别让后续检索输在起跑线

索引阶段是 RAG 的地基。如果 PDF 解析错了、表格丢了、标题层级乱了、Chunk 切得过碎或过长,后面的检索和生成都会被拖累。常见优化包括:按标题和章节切分、保留页码和标题元数据、对表格单独结构化处理、建立小块和父块之间的映射、对同义词和别名做字段补充。

2.2 查询阶段:让用户问题变得更“可检索”

用户的问题经常很口语化,比如“这个怎么弄”“上次说的那个流程为什么失败”。检索器不理解真实意图,就很难召回正确文档。查询阶段可以通过 Query Rewrite 把问题改写得更标准,通过 Query Decomposition 把复杂问题拆成子问题,通过 Multi-Query 从多个角度扩展,通过 HyDE 生成假想文档来增强语义表达。

2.3 召回阶段:召回不全,答案就无从谈起

召回阶段的目标,是尽可能把正确证据找回来。向量检索擅长语义相似,关键词检索擅长精确词匹配,元数据过滤擅长限定时间、部门、文档类型。实际系统里,通常不会只押注一种召回方式,而是做多路召回和混合检索。

2.4 重排阶段:召回多不等于上下文好

召回阶段经常为了提高覆盖率,取回很多候选片段。但大模型上下文不是垃圾桶,塞进去的证据越多,不一定越好。重排阶段的作用,是把最相关、最能支撑答案的证据排到前面,把噪声、重复片段、边缘相关内容压下去。

3. RAG 如何提升索引数据的质量?

3.1 高质量索引,不只是“把文本向量化”

很多 RAG 系统效果差,根本原因在索引阶段。比如同一个标题下面的内容被切到多个孤立块里,模型只能看到半句话;表格被解析成乱序文本,数值和字段对不上;图片里的文字没有抽取,关键信息直接消失;文档版本和时间没有标注,检索时拿到了过期内容。

提升索引数据质量,至少要做到四件事:第一,文档解析要保留结构;第二,Chunk 切分要尊重语义边界;第三,元数据要完整,比如标题、页码、章节、时间、来源;第四,向量库和原文库要能一一映射,方便引用和溯源。

3.2 小块召回,父块补上下文

一个常用策略是“子块用于精准召回,父块用于上下文恢复”。也就是说,向量检索时用较小 Chunk 提高命中精度,但真正给大模型时,可以带上这个 Chunk 所属的父段落、父章节或相邻窗口,避免答案缺上下文。

4. 什么是大模型辅助召回?为什么需要?

4.1 大模型可以在召回前帮你“理解问题”

大模型辅助召回,不是让大模型直接编答案,而是让它在检索之前或检索之后做辅助判断。检索之前,它可以做意图识别、查询改写、问题分解、同义词扩展、生成多查询。检索之后,它可以判断候选片段是否真的相关,做上下文压缩或重排。

4.2 为什么需要大模型辅助召回?

因为传统检索器更擅长“相似度匹配”,但不一定懂用户真实任务。比如用户问“这个方案能不能上线”,真正需要的可能是“风险、依赖、测试结果、审批流程、历史事故”。如果直接拿原问题去检索,可能只搜到“上线方案”四个字相关的文档。大模型可以帮助把隐含需求展开,从而提升召回质量。

5. 查询转换 Query Transformations

5.1 查询改写 Query Rewrite

查询改写就是把用户原始问题改成更标准、更适合检索的表达。比如用户问“上次那个流程怎么又失败了”,系统可以结合上下文改写成“XX 项目部署流程失败原因、失败日志、依赖服务异常排查”。这样检索器更容易命中正确资料。

5.2 查询分解 Query Decomposition

如果问题本身很复杂,最好先拆成多个子问题。比如“RAG 为什么召回差,怎么优化,并且怎么评估效果”,可以拆成“召回差的原因”“召回优化策略”“评估指标”三个子查询,分别检索再合成答案。

5.3 多查询扩展 Multi-Query

多查询扩展是让大模型从多个角度生成等价或相关查询。它的价值是提高召回覆盖率,尤其适合用户问题表达不清、同义词多、知识库写法和用户写法不一致的场景。

6. 如何通过混合检索提升 RAG 效果?

6.1 向量检索和关键词检索各有短板

向量检索擅长语义相近,比如“报销流程”和“费用申请步骤”可能能匹配到一起。但它对产品编号、错误码、英文缩写、具体人名、合同条款编号等精确匹配不一定稳定。关键词检索擅长精确词匹配,但对同义表达不够友好。

混合检索的核心,就是不要在二者之间二选一,而是把向量召回和关键词召回结合起来。向量检索负责语义覆盖,BM25 等关键词检索负责精确匹配,再通过融合和重排得到最终候选。

6.2 混合检索的常见落地方式

常见做法是:先用向量检索取一批 TopK,再用 BM25 取一批 TopK,同时加上元数据过滤。然后对候选结果做去重、归一化或 RRF 融合,最后交给重排模型。这样能同时兼顾“语义相似”和“字面命中”。

7. 如何通过重新排名提升 RAG 效果?

7.1 Rerank 解决的是“证据顺序问题”

召回阶段的目标是多找,重排阶段的目标是排准。因为大模型通常更关注靠前的上下文,如果最相关的证据被排在后面,答案质量就会下降。Rerank 的价值,就是把真正相关、能支撑答案的证据放到前面。

7.2 常见 Rerank 方法

规则重排适合明确业务规则,比如优先最新文档、优先权威文档、优先同部门文档。Cross-Encoder 重排适合语义匹配质量要求高的场景,它会同时读问题和候选文档,判断二者相关性。LLM Rerank 则适合更复杂、更需要推理的排序场景,但成本和延时更高。

7.3 重排也要看成本

不要一上来就对全部候选使用重模型重排。更合理的是先用便宜召回扩大候选,再用轻量规则或 embedding 分数做初筛,最后对少量候选使用 Cross-Encoder 或 LLM Rerank。这样既能提升质量,也能控制成本。

8. 什么是 RAG Fusion?工作流是什么?

8.1 RAG Fusion 的核心思想

RAG Fusion 可以理解成“多查询 + 多路检索 + 排名融合”。它先让大模型围绕原始问题生成多个相关查询,再分别检索,然后把多路结果合并排序。这样做能减少单一查询表达不充分带来的召回遗漏。

8.2 RAG Fusion 的完整流程

第一步,用户提出原始问题;第二步,LLM 生成多个改写或扩展查询;第三步,每个查询分别检索 TopK 文档;第四步,用 RRF 等方法把多个排名列表融合;第五步,把融合后的证据交给模型生成答案。

9. 为什么 RAG Fusion 需要多个查询?

9.1 单查询的视角太窄

用户一个问题往往只能覆盖一个表达角度。例如用户问“怎么提高 RAG 效果”,这个问题可以从召回、重排、切分、改写、评估、幻觉治理等多个角度展开。如果只用一个原始查询,可能只召回其中一类资料。

多个查询的价值,就是模拟不同专家从不同角度问问题。一个查询找召回优化,一个查询找 rerank,一个查询找 RAG Fusion,一个查询找 HyDE。最后把这些结果融合起来,答案会更全面。

10. RAG Fusion 为什么使用 RRF?

10.1 直接加分不公平

不同检索器或不同查询返回的原始分数,尺度可能完全不一样。向量检索的相似度、BM25 的分数、不同查询下的排序分数,很难直接相加。

RRF 更简单粗暴也更稳:它不太关心原始分数是多少,更关心一个文档在各个结果列表里是不是排名靠前。如果一个文档在多个查询里都排得不错,那么它大概率更重要。

10.2 RRF 的人话解释

可以把 RRF 理解成“多路排名投票”。每一路检索都给靠前文档更多票,最后票数高的文档进入最终上下文。它的优点是简单、鲁棒、不依赖不同检索器的分数可比性。

11. 介绍一下 HyDE 思路

11.1 HyDE 是“假想文档嵌入”

HyDE 的全称是 Hypothetical Document Embeddings。它的流程非常有意思:不是直接把用户问题拿去向量检索,而是先让大模型根据问题生成一段“假想答案”或“假想文档”,再把这段文档做 embedding,用它去真实语料库里找相似文档。

为什么这么做?因为短问题的信息量太少。比如用户只问“安全策略怎么配”,直接拿这句话检索可能很难命中。但如果先生成一段包含“访问控制、权限、角色、审计、白名单”等词的假想文档,向量检索会更容易找到相关真实资料。

12. 介绍一下 HyDE 的问题

12.1 HyDE 最大的问题:假想文档可能会“编”

HyDE 的假想文档是大模型生成的,所以它可能包含虚构细节。这些内容不能直接当答案,也不能直接当事实依据。正确的用法是:把假想文档当作检索桥梁,用它找到真实文档,最终回答必须基于真实文档。

12.2 HyDE 不适合所有场景

如果用户问题已经非常明确,比如包含准确编号、产品名、错误码,那直接关键词检索或混合检索可能更合适。HyDE 更适合抽象问题、短问题、语义难表达问题,以及没有监督检索数据的 zero-shot 场景。

13. 什么是 Graph RAG?

13.1 普通 RAG 擅长局部检索,Graph RAG 更擅长全局关系

普通 RAG 通常是从向量库里找几个最相似片段,它很擅长回答“某个具体问题在哪段文档里有答案”。但如果用户问的是“这些文档整体在讲什么主题”“这些事件之间有什么关系”“某个项目的上下游影响链路是什么”,普通局部片段检索就可能不够。

Graph RAG 的思路,是先从文档中抽取实体、关系、事件,再构建图结构。查询时,系统可以沿着图的关系路径检索,也可以利用社区摘要回答全局性问题。

13.2 Graph RAG 适合哪些场景?

它适合企业知识库、项目管理、长文档集合、复杂关系问答、主题归纳、事件链路分析等场景。尤其当问题不是问某个局部片段,而是问“全局结构”和“关系网络”时,Graph RAG 的优势更明显。

14. 高级 RAG 怎么评估效果?

14.1 不要只看最终答案,要分阶段评估

RAG 的评估最好拆开看。召回阶段看 Recall@K,确认正确证据有没有被找回来;重排阶段看 MRR、nDCG、TopK 相关率,确认正确证据有没有排到前面;生成阶段看答案正确性、忠实度、引用覆盖率、幻觉率;工程阶段看延时、成本、吞吐和失败率。

14.2 评估要有对照实验

如果你说 RAG Fusion 有提升,就应该拿普通单查询 RAG 做对照;如果你说 HyDE 有提升,就应该看加入 HyDE 前后的召回命中率;如果你说重排有提升,就应该看重排前后 TopK 相关证据比例和最终答案质量。没有对照实验,只说“感觉更好了”,很难让人信服。

15. 面试高频追问,建议这样回答

15.1 针对通用 RAG,还有哪些改进点?

答:我会从索引、查询、召回、重排、生成、评估六层优化。索引层处理解析和切分,查询层做改写和分解,召回层做混合检索,重排层提升证据顺序,生成层做引用和事实约束,评估层做分阶段指标闭环。

15.2 RAG 各块有哪些优化策略?

答:索引阶段优化文档解析、Chunk、元数据;查询阶段做 Query Transformation;召回阶段做向量、BM25、混合检索;重排阶段用 Cross-Encoder、RRF、LLM Rerank;生成阶段做答案约束和事实校验。

15.3 如何提升索引数据质量?

答:保留文档结构、合理切分、抽取元数据、处理表格图片、建立小块和父块映射,并保证向量库结果能回溯到原文。

15.4 什么是大模型辅助召回?

答:就是让大模型在检索前做问题理解、改写、分解、多查询生成,或者在检索后做候选判断和上下文压缩,从而提升召回和上下文质量。

15.5 什么是 Query Transformation?

答:它是把用户原始问题转换成更适合检索的问题,包括查询改写、问题分解、多查询扩展、Step-back、HyDE 等。

15.6 如何通过混合检索提升效果?

答:向量检索补语义,关键词检索补精确词,二者结合可以提高召回覆盖,再通过融合和重排提升最终证据质量。

15.7 RAG Fusion 为什么需要多个查询?

答:单查询视角有限,多查询能从不同角度召回证据,降低表达差异带来的漏召回。

15.8 RAG Fusion 为什么使用 RRF?

答:因为不同检索结果的分数尺度不一样,RRF 更关注排名,能稳定融合多路结果。

15.9 HyDE 的核心思想是什么?

答:先让大模型生成假想文档,再将假想文档向量化去检索真实文档,最终答案仍要基于真实文档。

15.10 Graph RAG 是什么?

答:Graph RAG 会从文档中抽取实体和关系构建图结构,适合回答全局主题、实体关系、事件链路等普通向量 RAG 不擅长的问题。

16. 总结:高级 RAG 的本质,是把“检索增强”做成可控工程系统

普通 RAG 只是把外部知识塞给大模型,高级 RAG 则要让整个链路变得可控:问题要更可检索,召回要更全面,排序要更准确,生成要有依据,评估要能证明效果。

面试里真正高质量的回答,不是把 RAG Fusion、HyDE、Graph RAG 这些词背一遍,而是能说清:它们分别解决什么问题,适合什么场景,有什么副作用,以及如何评估有没有提升。只要能按这个逻辑讲,RAG 高级优化这组题就基本吃透了。

附:30 秒快答模板

“高级 RAG 优化可以按六层来讲:索引层优化解析、切分和元数据;查询层做 Query Rewrite、Query Decomposition、Multi-Query、HyDE;召回层做向量检索、BM25、混合检索和多路召回;重排层用 Cross-Encoder、LLM Rerank、RRF 提高证据质量;生成层用引用约束、事实校验和低置信度拒答降低幻觉;评估层分别看 Recall@K、MRR、答案准确性、忠实度、延时和成本。如果问题偏全局关系和主题总结,还可以考虑 Graph RAG。”

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐