除查询改写与 HyDE 外,还有哪些提高召回的方法?

考查重点:检索表示与候选覆盖。改进解析/切分、补标题与父子表示、混合召回和领域 Embedding,调 ANN 搜索宽度;逐项查新增证据收益

本题目录

参考答案

核心回答

除了查询改写和HyDE,还可以从文档表示、检索通道、索引搜索和任务拆解提升召回:修复解析与切分,增加标题/摘要/父子表示,组合关键词与语义检索,选择适合领域的Embedding,调近似搜索宽度,必要时按关系或子问题补证据。

先确认是资料没有入库、表示不合适、索引漏搜,还是正确证据被过滤或截断。不同原因对应不同措施;重排只能改善候选中的顺序,无法找回所有检索路都没返回的证据。

文档侧有哪些办法

解析完整表格、代码与标题,保留关键条件,避免切得太碎或多个主题混成一块。把标题路径和可信元数据附到正文,或建立摘要、问题等辅助表示,命中后回到真实原文;自动生成内容要验证,不能替代证据。

父子检索用小块提高定位精度、父块补完整上下文;多向量可以为同一文档表示多个主题。它们增加索引与维护成本,需要稳定文档ID和版本,防止同一资料重复占满候选。

检索和索引侧怎样改进

关键词路补术语、型号和错误码,语义路补同义表达;按数据特点增加结构化字段、符号检索或数据库查询。问题明确依赖实体关系和多跳链路时再评估图检索,而不是为了“更高级”统一建图。

用精确近邻作对照判断ANN损失,合理增加搜索宽度、探查范围或候选预算。过滤条件过严时检查业务解释是否正确;权限限制应保持,不能为了提高召回取消。领域Embedding或微调需靠业务标注与难负例验证。

复杂问题如何补证据

拆成需要哪些事实或关系,每个子问题检索后做覆盖检查;缺哪个条件再定向补查。保留原问题、对象、时间和版本,避免子问题发散。多路返回先去重融合,再按证据与token预算组织上下文,不把多查询的所有结果直接拼接。

怎样选择先做哪项

在固定失败集上做小范围对照:修解析看证据是否恢复,精确对比看索引损失,单路对比看互补覆盖,再评估增加表示或更换模型。分别记录证据Recall、噪声、最终答案、延迟与存储更新成本。

这里提升的是所需证据的覆盖,不是返回片段数量。若初筛已含全部证据、最终仍答错,重点应转向重排、上下文完整性与生成使用,而不是继续堆召回策略。

参考资料

  • 国内:JavaGuide:RAG检索优化:依据词项和语义检索的互补,说明正文中增加关键词、结构化及语义通道以补证据的选择。
  • 国内:JavaGuide:RAG文档处理与切分:父子切分和多向量表示说明怎样从文档侧改善定位与上下文覆盖,提供查询改写和HyDE之外的召回方向。
  • 国内:zero2Agent:RAG与检索:依据多路候选与过滤的工程分工,说明正文中统一文档身份、去重融合并保持业务范围的要求。
  • 国外:Microsoft Azure Hybrid search ranking:借鉴词项与向量的混合排名方式,说明正文中多路结果需要融合后再按证据和 Token 预算组织上下文。
  • 国外:Qdrant Hybrid and Multi-Stage Queries:依据混合查询、搜索范围与候选预算的区别,说明正文中扩大近似探索前仍需保持权限并诊断过滤的原因。

相关面经

2 篇

阿里巴巴

AI 全栈开发工程师
一面
查看原面经 →
你觉得 RAG 还有哪些优化的思路?(追问)根据问题有什么优化的办法吗?(追问)你把一个问题转化成三个问题,每个问题都是 top 6,相当于三乘六有 18 组语料文档,再一起喂给大模型是吧?(追问)还有其他一些尝试或想法吗?

百度

Java 开发工程师(智能客服)
实习二面
查看原面经 →
除了原始 Query 和改写 Query 双路检索,还有什么方法能够提高召回效果?
除了 HyDE 和多角度改写,还有哪些召回策略?

相关题目

4 题