RAG 检索优化有哪些常见策略,如何组合?

考查重点:按检索错误组合优化手段。用失败样例定位瓶颈:表述偏差做查询改写,词面漏召回用混合检索,噪声用过滤与重排;固定样例逐项消融,验证组合是否有效

本题目录

参考答案

核心回答

RAG 检索优化应先按失败样例定位瓶颈,再组合手段:原文缺失或切坏,修数据与切分;问法对不上,做查询改写;单路漏召回,补关键词或向量通道;正确证据已召回但排后面,做重排;证据进入模型后仍答错,再查上下文组织和生成。

一个可评估的链路是:资料解析与版本治理 → 按结构切分并保存来源 → 提取查询条件 → 按需多路召回与融合 → 候选重排 → 去重、补全必要上下文 → 带引用生成。它是可裁剪的组合,具体启用哪些环节由固定评估集决定。Rerank 只能重新排序已有候选,不能补出候选池中不存在的证据。

先判断错在哪一层

保留同一次请求的原问、查询条件、候选列表、重排结果、最终上下文和回答,逐层检查:

观察到的失败 优先排查或尝试
原文就没有正确知识,或解析后丢了表格、条件 补资料、修解析、清洗与更新流程
有正确原文,但候选池里找不到 检查切分、查询、过滤、嵌入模型与召回范围
正确证据在候选中,最后却被淘汰 检查融合、去重、候选上限及重排模型
已进上下文,回答仍漏条件或引用错 检查片段完整性、压缩、版本冲突与生成约束

如果必要资料不存在,就应说明缺失或补充资料;不能靠增加相似候选把缺失事实补成答案。

各种策略怎样配合

先保证数据和切分可用。 去掉重复页眉、乱码和失效副本,保留表格字段关系、标题层级与来源位置。按段落、章节、函数等结构切分,并对边界样例检查前提与结论是否被拆开。小块命中后缺少上下文时,可采用 Parent-Child,回取父段落;扩大后的内容仍要核对权限、版本与相关性。块大小和重叠量由评估决定。

下面用设备手册的教学片段说明:命中了处理步骤,也可能漏掉它的适用前提。

RAG切分教学示例:仅召回E104处理步骤会漏掉X200和v3.2的适用条件,命中子片段后从原文回取父段落可以同时保留条件与步骤

图中的设备条件和处理步骤仅为教学示例。父段落来自已有原文,回取时仍需检查版本、权限和相关性;重排只改变候选顺序,不能代替这次原文读取。

查询优化解决表达与任务结构问题。 对指代或口语表达做 Query Rewrite,保留原问、型号、时间等约束;必要条件未知时先澄清。问法多样可试 Multi-Query,复合问题可分解后分别找证据。HyDE 生成假设段落帮助定位真实材料,它只是检索入口,不能作为回答依据,也可能把查询带偏。

多路召回补覆盖,融合负责合并。 向量通道处理语义接近的内容,BM25 等词项检索补错误码、型号、专有词。对精确实体也可使用字段过滤。合并时按稳定文档或片段 ID 去重,RRF 可利用各路排名融合,避免直接相加不同尺度的原始分数。租户、权限和适用版本条件要在各路检索及后续原文读取中一致执行。

重排与上下文处理解决“找到了却没用好”。 常见 Cross-Encoder 将问题与候选片段共同输入,重新判断相关性。分别设置粗召候选数、重排保留数和最终上下文范围;扩大候选可能增加覆盖,也会增加噪声与耗时。最后去重、合并必要的相邻内容,压缩时保留条件、例外与引用位置。摘要不能替代可回查的原始证据。

一次组合示例与验证

以设备手册检索的设计示例说明:用户问“X200 升到 v3.2 后报 E104 怎么办”。如果向量召回只有联网故障概述,可先核对手册是否已更新、错误码是否解析完整,再补词项召回,并限制型号与固件版本。若正确处理步骤已经在候选中却排后,再比较重排;若步骤和适用条件被切开,再试父段落补全。只有实际存在问法偏差时,才增加查询改写。

验证时固定资料快照、问题集与期望证据,包含精确实体、同义问法、多跳、旧版本和无答案样例。召回看 Recall@K 与必要证据是否找全,排序看 MRR 或 nDCG,最终看答案正确性、证据支持和引用准确性,同时记录延迟与处理成本。每次只改变少量因素,做消融并在保留的测试集上回归,避免把只对几个样例有效的参数当成通用方案。

追问

Top K 越大,效果一定越好吗?

不一定。候选覆盖可能提高,但重排耗时、重复内容和干扰也会增加。先看正确证据是否因候选上限被截掉,再分别调整候选池和最终上下文,而非把更多候选全部交给模型。

检索指标提高,为什么最终回答反而变差?

可能只多命中了相关主题,没有补齐必要条件;也可能新引入旧版本、重复片段,或压缩时丢了例外。需要对照同一次请求的候选、上下文与引用,区分检索覆盖收益和生成阶段的回归。

对应教程

参考资料

相关面经

8 篇

字节跳动

后端开发实习生
日常实习一面
查看原面经 →
RAG 召回使用了哪些方式(如语义匹配)?

乐堡互娱

AI应用开发岗
校招秋招一面、二面、三面、四面
查看原面经 →
文档怎么分割的、召回环节怎么实现的、怎么判断召回结果是否准确、上下文压缩怎么设计的

字节跳动

全栈开发工程师
二面
查看原面经 →
追问
你刚刚提到检索,一般检索策略会怎么做?

DeepSeek

Agent 开发
查看原面经 →
检索怎么优化?向量检索/关键词检索/rerank/query rewrite怎么配合?

快手

AI Agent 开发
一面
查看原面经 →
如果要提升相关度,你会怎么做?
展开剩余 3 篇面经

公司未注明

AI 应用 / Agent 开发
查看原面经 →
2️⃣ RAG 优化手段 主要围绕解析和召回展开:

公司未注明

Agent 开发
查看原面经 →
讲解召回重排的策略

公司未注明

Agent 开发
日常实习
查看原面经 →
讲解召回重排的策略

收录题集

8 个来源,共12 份题集

LLM、VLM 与 Agent 面试题

Datawhale · hello-agents · 1 条原题

查看题集 →

RAG 面试题

Guide · JavaGuide · 1 条原题

查看题集 →

RAG 面试题

卡码笔记 · 个人整理 · 1 条原题

查看题集 →

Agent开发面试题

摸鱼酱mio · 个人整理 · 1 条原题

查看题集 →

RAG 面试题

小林 Coding · 个人整理 · 1 条原题

查看题集 →
展开剩余 7 份题集

RAG 与检索系统:从 chunk 设计到多路召回

Onefly · zero2Agent · 1 条原题

查看题集 →

算法岗精选复习题

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

Agentic RAG 与 Deep Research进阶追问

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

RAG与知识库

阿东玩 AI · AgentGuide · 10 条原题

查看题集 →
展开其余 7 条原题

RAG 系统面试题

阿东玩 AI · AgentGuide · 2 条原题

查看题集 →

腾讯问答汇编

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

字符串与高级索引

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

相关题目

4 题