边界与检索单元

本节目标

在选择 Embedding、数据库或框架前,先定义一次检索实验的基本对象:用户信息需求、query、document/passages、相关性判断、可见性和第一阶段候选。学完后,你应能写出一页不依赖具体产品的检索任务规范。

用户原话不等于信息需求

用户输入“退钱怎么还没到”可能同时需要:

  1. 识别他问的是退款到账时效,而不是如何申请退款;
  2. 知道订单何时审核通过、支付渠道和当前时间;
  3. 检索一般时效、状态查询入口和异常升级条件;
  4. 只读取该用户有权访问的订单与知识文档。

原始字符串称为 original query;经过上下文补全、别名扩展或拆分后形成一个或多个 retrieval queries。任何改写都必须保留与原始输入、会话状态、版本和时间的关联,否则无法回放“系统为何搜了这些词”。

五个基本对象

对象定义最小元数据
information need用户真正想完成的任务意图、时点、错误代价
query一次可执行、可回放的检索请求ID、original/rewrite、身份、filter、版本
document/passages可被返回和评判的检索单元稳定 ID、source span/revision、权限、状态
qrelsquery 对 document 的相关性判断等级、标注指南、标注者/裁决版本
ranking某通道按规则排列的候选channel、rank、score、参数与时间

Qrels 是 relevance judgment,不是访问控制表。一个内部 runbook 对问题高度相关,但访客无权读取:它可以用于受控审计或平台员工 query 的 qrels,却不能成为访客线上候选。评测 fixture 应让每个 query 的正例都满足该 query 的 tenant、ACL、status 与业务 filter;安全边界另用 must_not_return 或等价门禁验证。

Document 单元必须与线上一致

如果线上返回 chunk,qrels 也应标 chunk,而不是只标整篇 PDF。否则会出现“论文总体相关,但返回段落没有答案”的假阳性。一个检索单元至少需要:

  • 稳定 document_id/chunk_id;
  • 原文路径、页码/段落或字符 span;
  • source revision 与 content hash;
  • 标题、层级和必要局部上下文;
  • tenant、ACL、状态、语言、产品和有效期;
  • representation revision。

过长 document 会稀释答案并增加后续成本;过短 document 失去主语和条件。边界设计属于 Chunking策略,本库负责用 qrels 验证它是否可检索。

相关性不是“出现关键词”

建议从明确任务出发定义 0~3 级:

等级含义例子
3直接回答主要需求,条件与版本正确明确给出当前退款到账时效
2提供必要证据,但需与其他段落组合解释审核完成时间,不含渠道差异
1主题相关但不能独立解决问题只说明如何发起退款
0不相关、过时、冲突或错误对象退货物流规则

规则必须说明时间、版本、语言、来源可信度和“仅提及”是否算相关。标注者冲突通过 adjudication 解决,并保留指南版本;不要偷偷把分歧改成一致。

未标记不一定是不相关

大语料不可能逐一标完。若只标旧系统的 top-k,新系统发现的有效文档会被误算为负例。常用做法是 pooling:收集多个候选系统的前若干结果,打乱系统来源后统一标注,再补 hard negatives 和线上失败样本。

因此指标要同时报告 qrels 覆盖和标注池构成。外部 benchmark 的 qrels 适合比较通用能力,不能替代你的语言、权限、时效和业务定义。

第一阶段召回的职责

第一阶段目标是以可接受成本把“可能相关且已授权”的文档放入候选窗口:

可信身份 + original query + 系统上下文
        ↓
query 处理与硬过滤
        ↓
BM25 / dense / 其他召回
        ↓
融合、去重、候选预算
        ↓
Reranker 或直接返回

它不必把最佳证据永远排第一,但必须让后续组件看得到。若相关文档不在候选中,Reranking 和 RAG 都无法补回。

无答案与拒答是正式样本

Query 集必须包含:

  • 语料确实没有答案;
  • 有相关内容但当前身份无权访问;
  • 内容尚未发布或已过有效期;
  • 索引延迟导致暂不可见;
  • query 含互相冲突或无法满足的条件。

“无结果”“无权限”“系统故障”和“弱相关结果”应是不同状态。不能为降低 no-result rate 而取消 ACL 或返回任意相似文档。

常见失败与诊断

  • 标题入库、正文未入库:确认 document 内容和 source span;
  • 近重复 chunk 占满 top-k:按 canonical document 限额并测 evidence coverage;
  • qrels 只标一个正例:pool 多系统结果,复核未标候选;
  • 评测整篇、线上返回 chunk:统一判断单位;
  • query 集全是关键词直命中:加入同义改写、口语、错别字和 hard negatives;
  • 无权限文档被当正例:将 relevance 与 eligibility 分开建模;
  • 把首位准确率当召回全部:明确 Hit@k、Recall@k 与排序指标的分母。

练习

为“内部 IT 帮助中心”写任务规范:

  1. 定义 query、document 与 source span;
  2. 写出 0~3 级 relevance 指南,各举一例;
  3. 构造 VPN、错误码、账号、无答案和访客越权各 2 条 query;
  4. 为每条 query 写 trusted tenant/groups/filter;
  5. 说明 qrels 如何 pooling、盲标和裁决;
  6. 定义第一阶段候选窗口以及进入 reranker 的条件。

掌握检查

  • 原始 query、改写 query 与 information need 明确区分。
  • 线上返回单位和 qrels 判断单位一致。
  • 每个 document 可追溯 source revision/span 和权限状态。
  • Qrels 允许多个正例和分级相关性。
  • 无答案、无权限、故障和弱相关分别建模。
  • 第一阶段以高召回候选为目标,不假装完成最终回答。

下一步:Query 与 Document 表示。

参考资料

来源获取日期:2026-07-14。返回 语义搜索目录。