F29|从搜索结果到可信答案:召回、重排和证据
从具体对象与小例子开始,理解计算过程与适用条件。
本章目录
从两个候选列表,走到可用证据
“相关”与“足以回答”中间还差哪几步?
多个检索入口可能互补。融合处理“哪些候选值得优先看”;重排对少量候选作更细比较;证据核验处理“这段话是否真的支持当前结论”。三个阶段目标不同,不能用一个相似度分数替代全部判断。
输入与适用条件:本图独立排名算例:关键词[A,B,C]、语义[B,C,A]、k=60。所有候选始终不变,不接用其他章节的排名数据。
1 / 5 · 两种搜索给出不同名次
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
固定三个候选:关键词排名A、B、C;语义排名B、C、A。两种原始分数不在同一量纲,不能盲目相加。
本步状态由图形与说明共同给出。默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
为什么需要
精确词项与语义线索各有盲区,组合能提供互补候选。
怎样实现
先融合候选,再核实原文与元数据,必要时补查缺失证据。
可能的代价与误解
提高Top-k可能把更多无关内容塞入上下文;检索器成绩提升不一定带来任务成功率提升。
如何判断是否做对
分别测召回、排名和最终回答支持度;不要只测最终一项或只测搜索分数。
召回和重排为什么分两步
召回candidate retrieval先从大量材料中找出一个较小候选集合,追求别漏掉关键材料,同时控制成本。重排reranking再用更细的相关性判断排列这些候选。
候选集合没有包含正确文档,重排器就无法凭空找回它。重排更强不等于整个检索管线更完整。
关键词和向量怎样一起用
关键词擅长精确名称,向量擅长部分语义匹配。混合检索hybrid retrieval把两条或多条路径的结果组合。
直接把BM25分数8.2加到余弦0.7上不一定有意义,因为量纲和分布不同。RRF(倒数排名融合)按排名而不是原始分数融合。一种形式是对每条路径贡献1/(c+排名),再相加。
例如取教学常数c=10,文档A在两条路径分别排1、3,得1/11+1/13≈0.1678;文档B分别排2、1,得1/12+1/11≈0.1742,因此B略靠前。这个值不是正确概率。候选只出现于一条路径时,另一条不凭空加分。
Cross-encoder为什么更细也更贵
双编码器bi-encoder分别把查询和文档变成向量,再快速比较,可以预存文档向量。交叉编码器cross-encoder把查询与候选文档一起交给模型,允许更细的词项互动,但每对都要计算,通常更适合较小候选集合。
ColBERT一类方法保留多Token表示后进行细粒度交互,处在另外的计算与存储取舍点。不要只把它们按“高级程度”排顺序,要看规模、预算和任务。
相关不等于足够回答
用户问“新版能否自动重试写请求”。找到一篇“重试概述”只证明主题相关,还要知道版本、写操作是否幂等、哪些错误允许重试、如何处理超时后的未知结果。
证据充分性是相对于要回答的具体断言而言:每个结论是否有适用条件和支持材料,而不只是“搜到几篇相关文章”。
引用也应该绑定具体断言。给一整段包含多个无关推断的话挂一个来源,未必能证明所有内容。
查询改写和假设文档的边界
查询改写把用户问题变成更适合搜索的表达,但不能把“可能是缓存问题”改写成“已确认缓存损坏”。改写中的假设仍是假设。
HyDE利用生成的假设性文档帮助检索;该文档是检索辅助,不是实际证据。RAPTOR用分层摘要组织检索;GraphRAG利用实体关系或社区摘要等组织跨文档信息。它们解决不同失败模式,增加结构也会带来更新和错误传播成本。
一次RAG链路怎样不漏层
RAG(检索增强生成)不是一个新的基础模型种类,而是先取证据再让生成模型利用证据的系统方式。可以这样检查:
问题与权限范围
-> 查询理解
-> 候选召回
-> 版本和权限检查
-> 融合与重排
-> 补齐必要上下文
-> 判断证据足够与否
-> 生成并绑定引用
-> 核验关键结论
具体过滤可发生在多个阶段;关键是未经授权的数据不能进入不该看见它的组件。
为什么答案很像真的,却仍然错
可能切块丢了否定句,索引混了版本,召回漏了例外,重排偏好旧文,或模型把建议写成强制规范。每层都要有可观察证据;单纯换一个更大的生成模型可能只让错误表达更流畅。
把两个榜单融合,再检查是否足够回答
输入与条件。关键词检索返回 [A,B,C],向量检索返回 [B,C,D]。取RRF常数60,每榜单名次从1开始。问题需要同时找到配置A与测试B。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1计算A | 只在第1榜单排1 | 得 1/61≈0.016393。 |
| 2计算B | 分别排2和1 | 得 1/62+1/61≈0.032522。 |
| 3计算C与D | C排3和2;D只排3 | C约0.032002,D约0.015873。 |
| 4融合排序 | 按总分降序 | 得到 [B,C,A,D]。 |
| 5只取前2的后果 | 上下文只放B、C | 虽有高相关结果,仍缺配置A,无法完成需要A与B的核验。 |
把过程连起来。排序高不等于证据齐全;知道问题需要哪些事实,才能判断取几个结果够用。
边界与反例。两个榜单为教学设定,不是实际Embedding服务返回值;RRF算术是真实执行。
依据与适用范围:[RRF]。示例输入和场景由本书明确设定。
课后自检
Reranker能否把召回集合外的正确文档重新排进来?
查看参考答案收起参考答案
HyDE生成了一段很合理的说明,能把它当事实来源吗?
查看参考答案收起参考答案
延伸阅读:相关系统问题
15|检索离线链路:文档怎样变成可查询索引16|检索在线链路:召回、融合、重排与证据充足性
17|代码智能:从文本搜索到符号、版本与运行证据
18|长期记忆:写入、检索、冲突、失效与遗忘
26|深度应用:把组件组合成能解释的工作系统
机制依据:[RRF][COLBERT][CTXRETRIEVAL][HYDE][RAPTOR][GRAPHRAG]。本节数值与情景除另注外均为原创教学示例;来源不代替中文讲解。