基础篇

F29|从搜索结果到可信答案:召回、重排和证据

基础篇约 2.9 千字1 组分步图解

从具体对象与小例子开始,理解计算过程与适用条件。

本章目录
动态图解 · F29

从两个候选列表,走到可用证据

“相关”与“足以回答”中间还差哪几步?

多个检索入口可能互补。融合处理“哪些候选值得优先看”;重排对少量候选作更细比较;证据核验处理“这段话是否真的支持当前结论”。三个阶段目标不同,不能用一个相似度分数替代全部判断。

RRF通过名次而非原始分数融合候选列表的方法。
重排对召回后的候选重新作相关性排序。
证据充分性材料能否支持问题要求的结论和条件。

输入与适用条件:本图独立排名算例:关键词[A,B,C]、语义[B,C,A]、k=60。所有候选始终不变,不接用其他章节的排名数据。

1 / 5 · 两种搜索给出不同名次

第1步,共5步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

从两个候选列表,走到可用证据:两种搜索给出不同名次候选 / 关键词名次 / 语义名次A13B21C32本例融合只使用名次,不伪造原始搜索分数。

固定三个候选:关键词排名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(检索增强生成)不是一个新的基础模型种类,而是先取证据再让生成模型利用证据的系统方式。可以这样检查:

问题与权限范围
-> 查询理解
-> 候选召回
-> 版本和权限检查
-> 融合与重排
-> 补齐必要上下文
-> 判断证据足够与否
-> 生成并绑定引用
-> 核验关键结论

具体过滤可发生在多个阶段;关键是未经授权的数据不能进入不该看见它的组件。

为什么答案很像真的,却仍然错

可能切块丢了否定句,索引混了版本,召回漏了例外,重排偏好旧文,或模型把建议写成强制规范。每层都要有可观察证据;单纯换一个更大的生成模型可能只让错误表达更流畅。

运行示例 · F29

把两个榜单融合,再检查是否足够回答

输入与条件。关键词检索返回 [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与DC排3和2;D只排3C约0.032002,D约0.015873。
4融合排序按总分降序得到 [B,C,A,D]。
5只取前2的后果上下文只放B、C虽有高相关结果,仍缺配置A,无法完成需要A与B的核验。

把过程连起来。排序高不等于证据齐全;知道问题需要哪些事实,才能判断取几个结果够用。

边界与反例。两个榜单为教学设定,不是实际Embedding服务返回值;RRF算术是真实执行。

依据与适用范围:[RRF]。示例输入和场景由本书明确设定。

课后自检

自检 1

Reranker能否把召回集合外的正确文档重新排进来?

查看参考答案收起参考答案
仅对给定候选重排时不能,必须重新检索或扩大召回。
自检 2

HyDE生成了一段很合理的说明,能把它当事实来源吗?

查看参考答案收起参考答案
不能。它是帮助检索的假设内容,要用真实来源支持最终结论。

机制依据:[RRF][COLBERT][CTXRETRIEVAL][HYDE][RAPTOR][GRAPHRAG]。本节数值与情景除另注外均为原创教学示例;来源不代替中文讲解。

记录保存在本机浏览器。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。