让检索提供真正需要的证据
学习切分、混合召回、重排与代码结构。
对应资料:Introducing Contextual Retrieval [S096]
沿着对象与状态理解本章
检索排名只说明候选顺序,不说明事实已经成立。下图固定两份候选排名逐项融合,再加入版本与证据判断;如果答案需要两个条件,只召回其中一个还不够。
下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。
从两个候选列表,走到可用证据
“相关”与“足以回答”中间还差哪几步?
多个检索入口可能互补。融合处理“哪些候选值得优先看”;重排对少量候选作更细比较;证据核验处理“这段话是否真的支持当前结论”。三个阶段目标不同,不能用一个相似度分数替代全部判断。
输入与适用条件:本图独立排名算例:关键词[A,B,C]、语义[B,C,A]、k=60。所有候选始终不变,不接用其他章节的排名数据。
1 / 5 · 两种搜索给出不同名次
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
固定三个候选:关键词排名A、B、C;语义排名B、C、A。两种原始分数不在同一量纲,不能盲目相加。
本步状态由图形与说明共同给出。默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
为什么需要
精确词项与语义线索各有盲区,组合能提供互补候选。
怎样实现
先融合候选,再核实原文与元数据,必要时补查缺失证据。
可能的代价与误解
提高Top-k可能把更多无关内容塞入上下文;检索器成绩提升不一定带来任务成功率提升。
如何判断是否做对
分别测召回、排名和最终回答支持度;不要只测最终一项或只测搜索分数。
检索质量从原始材料开始
本篇对应Contextual Retrieval。检索不是只选一个向量数据库,而是从来源、切分、索引、查询、召回、重排到上下文拼装的一条链。[S095][S096]
原始材料过期,检索再准也只会更快找到旧事实。切分丢了“仅v3适用”的条件,模型可能正确引用错误范围。因此证据需要来源、版本和足够上下文。
给孤立片段补上可证实背景
原创片段:“默认关闭,升级后开启。”它缺少字段和版本。若原文明确说明是normalize_paths从v2到v3的迁移,可以补充这些信息;若原文没说,不能自行编造。
Contextual Retrieval的思想是帮助片段保留所属背景,再结合检索与重排。文章的实验收益有特定条件,不能当作所有代码库的固定提升。[S096]
词项与向量怎样互补
错误码、符号和路径适合精确匹配;语义检索帮助不同表述的意图匹配。include与exclude语义相近但行为相反,版本与否定条件尤其需要核查。[S098][S102]
RRF按名次融合多个列表,不直接相加不同分数。重排进一步判断候选相关性,但无法补回所有召回器都漏掉的证据。[S097]
用小例子计算检索指标
假设正确判断需要文件A和B,返回A、X、Y,则Precision@3为1/3,Recall@3为1/2。虽然找到了一个相关文件,任务仍可能因缺B而失败。所有数值均为原创教学例子。[S110]
再假设候选中有A、B,但拼装只保留A。召回阶段成功,Agent输入仍不充分。这说明评价必须跨越候选、排序和上下文三个环节。
代码检索的递进路径
先找字段与入口,再找定义、引用和调用关系,再读测试与历史,最后运行复现。Tree-sitter提供语法结构,LSP提供语言服务,两者不自动证明运行时行为。[S103][S104][S105]
完成本篇后,应能为一次错误回答定位:来源错、索引缺、查询偏、重排删、截断漏,还是模型误用。这样的诊断比无条件扩大Top-k更有价值。
继续深入:第8章 · 检索与代码智能 或阅读拓展阅读目录8.2的逐项讲义。所有链接均为本地内容。
ColBERT的“每个查询Token找最好匹配”怎样算
输入与条件。两个查询向量q1=[1,0]、q2=[0,1];文档A有d1=[0.8,0.6]、d2=[0,1],均单位长度。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1q1逐项 | 点积q1·d1=0.8,q1·d2=0 | 本行取最大0.8。 |
| 2q2逐项 | 点积q2·d1=0.6,q2·d2=1 | 本行取最大1。 |
| 3汇总 | 两个查询位置的max相加 | MaxSim=1.8。 |
| 4对照文档B | 仅一个向量[0.707107,0.707107] | 得分约1.414214,A更高。 |
| 5交叉编码器区别 | 把查询和文档联合送入模型 | 不是固定做这个max规则,能建模更复杂的交互但通常更贵。 |
把过程连起来。单向量召回、多向量后交互和联合编码重排的计算路径不同。
边界与反例。仅展示MaxSim数学核心,省略标记、投影、索引优化;点积条件已声明,不能代替真实模型打分。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。