先看结果:不是“向量替代搜索”,而是把1,000个可回答问题拆开后组合候选
泊岚酒店集团在E11完成资料负责人、访问权限、文档系列、版本、适用范围和引用门后,才开始比较检索方案。46个已分级来源中,只有通过准入的部分进入语料:约184万份可见文件经案例化处理形成620万个段落。测试集包含1,000个可回答问题,以及200个在当前权限和资料下没有充分证据的问题。所有方法使用同一份来源快照、权限规则、版本解析器和段落粒度,避免把“多接了资料”误算成算法提升。
| 配置 | 前30候选召回 | 前5中有支持段落 | 95分位检索延迟 | 每1万次查询的案例成本 |
|---|---|---|---|---|
| 词项/BM25调优 | 805/1,000 | 712/1,000 | 85毫秒 | 15元 |
| 稠密向量调优 | 837/1,000 | 722/1,000 | 132毫秒 | 55元 |
| 并行混合 + 倒数排名融合 | 956/1,000 | 853/1,000 | 168毫秒 | 68元 |
| 混合 + 交叉编码器重排前40 | 候选上限仍为956 | 900/1,000 | 410毫秒 | 228元 |
混合检索把候选覆盖从单路的805题或837题提高到956题。重排器没有创造新证据,只是在这956题已有候选的范围内,让900题的支持段落进入前5。余下100题中,44题在两路前30候选的并集中仍没有合格段落,56题虽然已有合格候选,却没有排进前5。团队没有把90%宣称成最终答案准确率,因为答案生成、主张覆盖、引用和可回答性仍要独立验收。
在200个无证据反例中,词项、向量和混合检索分别有82题、141题和123题仍返回“看起来相关”的前5候选;重排序后仍有58题出现高相关候选。相关不等于可以回答,E11设置的正确不答、冲突和权限拒绝门不能被检索分数替代。公司、文件、问题、金额、性能、成本与结果均为虚构教学案例,不对应真实客户或产品承诺。
四组结果按同一批1,200题逐题配对,不是分别从对自己有利的题里取样。延迟在同一容量档、并发曲线与冷缓存比例下测量,成本含索引、在线查询和重排分摊但不含生成器;因此可用于本案例选型,不能横向当作某种算法的市场价格。项目保留每题的子排名,才能看出956中有多少来自两路共同命中、多少是单路救回,而不只展示一张总分表。
业务结论是按类路由:编号/明确文档优先精确与全文;自然语言现象走混合;结构列表走字段筛选;政策数字与多条件问题走混合加重排;无证据类仍由可回答性停止。这样把高成本计算用在确有增益的查询上,也让降级时知道哪些类别可退回全文、哪些必须明确不可用。
先固定边界:检索只负责找候选,不能修复权限错误、旧版本、识别错误或缺失资料
E11已经决定什么资料可成为证据;E13会处理OCR、表格、附件、块与入库;E14会决定上下文如何组合。本文的检索器输入必须带用户权限、查询/截至时间、任务、实体和已收录家族;输出是带证据身份的候选段落,不是答案。
| 责任 | 检索在此拥有 | 不拥有 |
|---|---|---|
| 候选生成 | 在允许语料中找可能支持问题的段落 | 发明缺失政策、决定权限 |
| 排名 | 把更可能支持主张的候选前置 | 判断最终业务分类/审批 |
| 过滤 | 执行传入的访问权限、状态和范围约束 | 扩大用户权限、猜缺失实体 |
| 追踪 | 保存查询变体、排名、分数、过滤器、配置 | 以日志代替来源记录 |
| 评估 | 测候选召回与证据排名 | 用点击率替代事实/权限审查 |
如果现行政策没有入库,向量检索不可能从旧常见问题中恢复它;如果文字识别把“不得”识别成“得”,重排器可能更自信地把错误段落排在前面;如果用户无权查看合同,相关度再高也必须在候选生成前过滤。项目先通过来源和摄入门,再评估检索;任何算法实验都不得临时关闭访问权限,或把撤回资料加回来“提高召回”。
生成器评估固定同一组Top 段落另做,避免检索与回答同时变化。检索离线分数改善后,还要检查它是否增加重复片段、相互冲突版本或过长上下文;真正交付的是证据集,不是一行基准数字。
一次典型的边界事故是:团队把2023年旧手册放回实验索引后,支持段落进入前5的题数从853升到879,但其中21题只是旧版文本更容易命中。只看主题相关性会把它宣布为提升;按照合格金标复核,这21题仍然失败,并触发“旧版进入候选”的停止门。另一次实验把管理员资料加入重排器,离线分数也上升了,却违反普通经理的访问权限。两次事故都说明,评估语料必须与真实可见范围一致,不能为算法制造一个生产中不存在的世界。
检索接口还输出“证据不足以覆盖哪些查询术语/条件”。它可以记录候选只覆盖设备类型、没有金额聚合规则,但不能自行决定最终拒答;同样,答案层不能偷偷再从全库检索一遍绕过记录。所有下游只能使用本次带身份、版本和过滤决议的证据集,新增检索必须成为可审计的新阶段。
问题先分类:精确字符串、概念意图、结构筛选和多条件问题需要不同路线
| 查询类别 | 示例 | 最强首条路由 | 原因 |
|---|---|---|---|
| 标识符/精确 | “PROC-AUTH-2025-v1 §4.2” | 精确/过滤 + 词项 | 关键词元、短语、编号不可近义化 |
| 策略措辞/编号 | “50万元以上谁审批” | 词项主导混合 | 数字、否定、固定角色重要 |
| 自然语言意图 | “房间设备老化想统一更换怎么走” | 向量 + 词项混合 | 用户词与制度词不同 |
| 症状/故障排除 | “门锁离线但平台显示在线” | 向量主导混合 | 现象可有多种表达 |
| 结构化列表/计数 | “华东当前有效采购政策” | 元数据/过滤/排序 | 不是相似度问题 |
| 已知文档浏览 | “这份办法的例外在何处” | 家族内/章节搜索 | 限定文档,避免全库漂移 |
| 多约束 | 实体 + 日期 + 金额 + 事件 | 过滤器 + 混合 + 重排 | 每个条件必须同时满足 |
路由器不是用一个黑盒意图标签决定一切。它提取引用短语、编号、金额、日期、实体、语言、是否指定文档和问题动作,并保存置信度与回退。明确编号先做精确查找;结构化列表走数据库/过滤器;其他内容问题通常并行词汇/向量。低置信度不强行单路,进入较保守混合,但仍受预算限制。
一个查询可以拆成多路:原问、负责人批准的术语映射、精确实体/编号和不改语义的拼写归一。重写不得加入用户未说的“应急”“自营”或把“不得”去掉;每个变体保留来源和命中贡献。查询扩展属于召回工具,不是补全业务事实。
路由决策记录至少含原问哈希、识别的编号/金额/实体、文档限定、语言、分类分数、选择的路线、候选预算、回退与配置版本。若编号识别高置信,就先精确查找并在命中当前实体时结束;若精确对象存在但用户无权,返回权限状态,不能回退到语义搜索泄露同一内容。若编号不存在,再以普通文本进入全文/混合,并明确这是“按描述搜索”而非找到了该编号。
多条件查询要区分过滤字段和待证事实。用户工作区能授权取得H-117实体,可作为过滤器;用户口述“紧急”只是待业务分类,不能直接过滤到应急标准作业程序。日期也分查询时间、事件发生时间与文档提及时间。分类错误样本进入独立清单:错误路由、漏精确、错误扩展、过早结束和不安全回退分别有修复与回归。
1,200题评估集从真实任务构造:相关性标签必须指向具体段落和可用条件
1,000个可回答问题按失败形态分五类,另加200个无证据、权限拒绝、冲突或未来版本反例。题目从脱敏搜索/支持记录、负责人访谈、旧错答案和来源变化中抽样,不能只让作者根据当前系统会答什么来出题。每题保存查询时间、角色、实体、金标家族/版本/段落、相关等级和可接受替代。
| 可回答切片 | 案例 | 词项召回@30 | 向量召回@30 | 混合并集召回@30 |
|---|---|---|---|---|
| 精确标识符/名称 | 220 | 212 | 165 | 216 |
| 策略编号/固定措辞 | 240 | 215 | 187 | 226 |
| 语义症状/意图 | 240 | 160 | 222 | 232 |
| 混合自然语言 + 条件 | 200 | 145 | 175 | 190 |
| 表格/跨表达式 | 100 | 73 | 88 | 92 |
| 总计 | 1,000 | 805 | 837 | 956 |
相关性用0—3级:3为直接支持目标主张且版本/范围可用,2为支持必要子主张,1为背景相关但不足以答,0为不相关或不可用。一个旧版段落即使文字完全吻合也标不可用,不作为正面;为了诊断,可另记语义相关性和治理资格,防止算法被训练成偏好旧副本。
评审先双人校准100题,争议由内容负责人裁决。训练/调优、开发、盲测按系列拆分,避免同一政策的近重复块泄到两侧;历史问法去重,模型生成的改写不能充当全部测试分布。每次报告题集版本、语料快照与评审变更。
题集权重不按最容易收集的搜索量直接决定。高频导航题很多,但一个错误门槛的后果更高;报告同时给宏观切片、按生产量加权和关键放行门槛三套视图。220/240/240/200/100的划分用于诊断,不声称完全等同真实流量。生产分布每季度重采样,新任务先进入影子切片,不能直接改旧分母制造趋势。
金标不局限于一段字符串完全相同的文本。同一版本的网页和签署PDF若是等价表示,可以标成同一个证据实体;一个问题若必须同时引用门槛和例外,金标集就要求两类段落都出现,只命中其中一类只能得到部分相关。评审记录“可替代”“必须同时出现”“仅作背景”“不可用旧版”四类关系,使分级排序指标和前5证据指标不会奖励只抓到一半条件的结果。
词项检索擅长可解释的精确约束:先把字段、分词和短语做好再说它“落后”
全文检索不是简单包含。案例使用BM25类排序:词频、文档频率与长度归一共同影响分数;标题、正式编号、章节标题、正文、表头和负责人批准的别名分字段索引。精确 ID走关键词字段,正文走适合中英混合的分析器,金额/日期/地区同时保留结构字段。
| 词汇控制 | 大小写设置 | 其防止的故障 |
|---|---|---|
| 字段权重 | 政策编号8倍、标题3倍、正文1倍 | 正文重复压过正式标题 |
| 短语/邻近 | “投资委员会”短语; 门槛词邻近金额 | 零散词拼成假命中 |
| 精确子字段 | 家族/版本/酒店/供应商代码 | 分析器拆坏编号 |
| 同义词 | 负责人批准“客房电视/电视机” | 非受控扩展改变规则 |
| 否定词/停用词 | 保留不得、除外、未、非 | 删除关键法律/操作语义 |
| 拼写错误策略 | 普通词可模糊,编号/金额不模糊 | 50万匹配500万 |
220个编号/名称题词项召回212,明显高于向量的165;政策数字题也为215对187。它的优势是能解释命中了哪一词元/字段/短语,更新文档后无需重新嵌入。但词汇不一致、员工用现象描述而资料用故障码、跨语言表达时会漏;高频模板词还可能把通用常见问题推到前面。
词汇基线必须经过字段/查询审查,不能用默认全字段与向量精调结果比较。每次分析器、词典、同义词或字段权重变化保存版本,并以“50万/500万”“允许/不允许”“A-17/A17”做最小对照测试。
诊断时保存每个候选的术语命中、字段贡献、短语距离、文档长度和最终排名,但业务用户不需要看一堆内部分数。调优者先问黄金是否根本被过滤,再看它在各字段的排名;如果标题包含完整编号却排在30名后,优先查字段映射或重复文档,而不是继续加全局权重。局部修复必须在其他切片回放,防止提高编号后让所有政策标题压过真正支持故障步骤的正文。
中文分词、英文缩写和型号之间容易产生边界问题。案例同时保存原始字段、标准化字段和精确字段:原文用于引用,标准化用于大小写/全半角/连字符,精确用于不可拆的版本与资产号。标准化规则写入清单并配反例;金额从文本抽取为结构字段仍保留原句,避免抽取错误被当作唯一事实。
词项调优从失败簇出发,同义词不是越多越好
检索日志把零结果、相关度低于 30、错误家族高排名、重复主导和过滤为空分开。若“房控屏”资料只写“客控面板”,可由设施负责人批准双向别名;若“紧急采购”在政策有严格定义,就不能把“很急”“客诉”自动同义化。查询词典本身是一项有版本的业务资产。
| 故障查询 | 观测原因 | 修复 | 回退 |
|---|---|---|---|
| PROC 授权 2025 | 连字符/空格变体 | 标准化精确别名 | 不得命中2023 系列 |
| 电视86万审批 | 金额令牌淹没角色 | 字段/短语 + 结构化金额 | 50万/500万反例 |
| 门锁不通 | 文档只写网关离线 | 负责人别名, 保留原文 | 不扩成所有网络故障 |
| 不需要委员会吗 | 分析器忽略否定 | 保留否定 + 查询意图 | 肯定/否定成对 |
| 华东政策 | 通用页标题堆词 | 权威/家族字段权重 | 本地常见问题不得压当前策略 |
点击可作为问题发现信号,不能直接当相关性金标准:首位点击可能因为默认位置,用户也可能打开错误旧版。高风险查询的权重与同义词变更需负责人样本验收;长尾可先影子。若规则难以解释或需要大量例外,说明应路由到混合/重排序,而不是继续堆查询语法。
稠密向量检索解决表达差异:嵌入相似度仍不是事实、权限或适用性
向量路把查询和段落映射到同一空间,用相似度找概念接近项;ANN索引用近似搜索换吞吐/延迟。案例对中英混合政策域选定一个嵌入配置,固定模型/版本、维度、归一方法、查询/文档前缀、最大输入与语言支持;旧向量与新向量不在同一字段混算。
| 向量强度 | 已恢复示例 | 关联风险 |
|---|---|---|
| 改写 | “统一换电视”→客房视听设备更新 | 主题近但门槛段不支持 |
| 症状 | “刷卡后门没反应”→门锁控制器离线 | 多个故障原因语义相似 |
| 多语言 | 英文酒店术语→中文标准作业程序 | 数字/专名仍可能漂移 |
| 嘈杂措辞 | 口语、省略、词序变化 | 缺失条件不会被相似度补齐 |
| 长概念 | 多句描述→同一流程 | 块截断/主题平均化 |
语义/症状题向量召回222,高于词项的160;但编号题165、数字政策题187明显更弱。相似度高只表示表示接近,不证明段落含答案;“超过50万元需委员会”与“不超过50万元无需委员会”可能非常接近。数字、否定、版本、实体与ACL应由精确/过滤/资格控制。
ANN参数在同一硬件、并发和过滤选择性下评估。为了知道近似搜索漏了什么,抽样用穷举 kNN作预言机;若精确向量能找而ANN找不到,是索引/搜索参数问题,若两者都找不到,才看嵌入、块或题目标注。不能把所有向量未命中归成“模型不懂公司”。
620万个段落、768维、每维4字节,未压缩向量本体约为19.05十进制GB。实际容量还要计入近似搜索图、段落编号、元数据、副本和重建余量,不能把这一步乘法当成总容量。案例清单记录的实测值是:向量与近似搜索层43GB,词项与存储字段层96GB,混合共约139GB。这是本地实现的测量值,不代表所有引擎。容量决策还要看更新速率、片段合并、双索引迁移和故障副本,而不只是静态大小。
向量输入也做差分测试:只嵌正文、标题加正文、保留章节路径、表格转写四种表示分别跑相同题集。若加标题让导航题上升却使长正文都被相似标题吸走,就按字段建多路或交给融合,不强求一个嵌入承载所有目标。任何清洗不得移除数字、否定、单位和专名;截断位置进入记录,方便判断黄金事实是否根本没被编码。
向量失败要定位到查询、文本表示、近似搜索、过滤器或语料
| 诊断层 | 证据 | 示例处置 |
|---|---|---|
| 查询表示 | 原始/标准化/向量模型 | 保留编号的词项支路 |
| 段落表示 | 片段文本/截断/语言 | 交E13修块,不在查询补事实 |
| 精确与近似搜索 | 穷举排名/近似排名 | 调整搜索代价或重建索引 |
| 前置/后置过滤 | 合格计数/选择性 | 用支持前置过滤的路径/分片 |
| 领域不匹配 | 切片未命中/难负例 | 域内对比,非全局排行榜 |
| 模型迁移 | 旧/新影子索引 | 双写、回归、可回滚 |
一个新嵌入在公开基准更高,仍可能把酒店编号、金额和中英缩写处理得更差。BEIR论文在18个异构数据集上比较多类检索器,结论之一是BM25是稳健基线,而重排序/延迟交互平均效果强但计算成本更高;本文借鉴“跨任务评估”的方法,不把BEIR结果当本企业排名。
模型升级先重嵌小规模代表语料,比较五个切片、难负例、向量分布、索引大小与p95;随后双索引影子,不能把新旧向量混到一个分数。回滚要保留旧查询编码器、索引别名、配置和评估快照。
混合先取并集再融合:两条路共享同一资格过滤,但保留各自排名和解释
案例默认让词项前60和向量前60并行检索,在访问权限、现行版本、权威等级和适用性预过滤后取并集,再按段落实体编号去重。同一段落在两路都出现时,两个排名都保留。最多120个原始候选,不等于把120个全部交给重排器:先按文档家族和资料表示去重并执行硬规则,再按融合排名取前40。
query -> parse exact terms / entity / time / task
-> eligibility filter (ACL, status, effective, scope)
-> lexical Top60 ----------- -> dedupe by passage entity -> RRF Top40
-> vector Top60 ------------/ -> rerank -> Top8 evidence
trace: query variants, filter epoch, ranks, scores, model/index/config, excluded reason
| 候选预算 | 选定值 | 敏感性发现 |
|---|---|---|
| 词汇窗口 | 60 | 30漏17个黄金;100只多3个但p95+21 毫秒 |
| 向量候选数 | 60 | 取30时漏13个;取100时多5个,但近似搜索95分位延迟增加34毫秒 |
| 并集最大值 | 120 | 实际去重后中位数91、95分位108 |
| RRF 窗口 | 60 每个 | 与两路候选预算对齐 |
| 重排序输入 | 40 | 输入20个时少18题成功;输入80个只多6题,95分位延迟却增加146毫秒 |
| 最终证据 | 8 | 按主张/来源多样性选择,不直接取40段 |
混合不是无条件更好。明确家族 ID查询走精确路径可在更低延迟下完成;结构化计数不该让向量猜;低风险导航可仅词汇。路由器在答题集上的选择与回退也要版本化,防止“所有问题都混合”把成本和故障面扩大。
去重不能只看文本相似。签署PDF与网页属于同一版本时,可以合并成一个实体并保留首选引用;同一系列的门槛段和例外段即使相似,也必须分别保留;不同酒店的标准作业程序模板,不能因为哈希接近就跨实体合并。去重记录要说明保留了哪一种表示、合并了哪些排名贡献,以及是否需要来源多样性。最终8段证据可以设置每个系列的数量上限,但与主张必需配套的段落不能被通用上限误删。
两条支路失败时,系统状态也不相同。词项检索超时但向量检索完成,结果标记为“部分完成”,再按查询类别决定能否发布;访问权限或过滤服务不可用时,两路都要按故障安全原则关闭;向量索引落后当前索引轮次时,不能拿词项结果冒充完整混合结果。协调器保存截止时间并取消未完成请求,避免迟到结果写入下一次查询的缓存。
倒数排名融合解决分数量纲,但不能修复错误候选
词汇分数、余弦/点积与不同模型分数没有共同尺度,直接0.5×A+0.5×B没有意义,除非先在本域校准。RRF对每个列表按1/(K+排名)求和;案例K=60是本地起点,不把它写成普适最佳值。只出现于一条路的高排名结果仍可上升,两路同时靠前会相加。
| 候选项 | 词汇排名 | 向量排名 | RRF K=60 | 资格 |
|---|---|---|---|---|
| 当前策略 §4.2 | 8 | 2 | 1/68+1/62=0.03084 | 准入 |
| 旧本地常见问题 | 1 | 40 | 1/61+1/100=0.02639 | 融合前排除 |
| 设备程序 | 24 | 5 | 1/84+1/65=0.02729 | 背景/条件 |
| 无关热门指南 | 3 | 缺失 | 1/63=0.01587 | 合格但证据薄弱 |
旧常见问题即使算分也不该参与,因为E11 解析器已判已取代;表中保留它只是解释错误的“先融合、后过滤”会怎样污染Top。Microsoft Azure AI Search与Elasticsearch官方资料都说明RRF合并多个已排序结果,典型公式为排名倒数加和;Elastic还明确排名窗口越大可能提高相关性但增加性能成本。
RRF的K、窗口、路数与权重仍需测试。增加第二个向量字段相当于多一票,可能让语义支路无意加权;同一内容的多表示若不去重也会挤占名次。追踪因此保存每个子列表和贡献,不能只留最终分数。
案例对K=20/60/100与窗口=30/60/100做网格检查,不以测试集最高点直接上线。较小K让单路头部更强,可能放大一个错误精确命中;较大K增加低排名共同出现的影响,也会让重复候选抬升。选择K=60、窗口=60后在盲集确认五类切片没有严重下降,并记录该值只适用于当前两条子项与候选预算。
融合输出还保留“只在词项、只在向量、两路都在”的来源标签。生产中若两路共同命中比例突然下降,可能是嵌入/索引落后、分析器变更或查询分布变化;单看最终RRF 分数很难发现。告警按切片和路径比较分布,不因某一次查询两路没有重叠就报故障。
线性融合、倒数排名融合和学习融合各有前提
| 融合 | 需求 | 优势 | 主要故障 |
|---|---|---|---|
| RRF | 排名列表/窗口/K | 无需统一原始分数,易解释/起步 | 对窗口/K、重复与路数敏感 |
| 标准化线性 | 分数分布 + 权重 | 可表达某路更重要 | 标准化漂移、离群点、域变化 |
| 学习融合/LTR | 足够且代表性的标签/特征 | 可按任务学习复杂组合 | 反馈偏差、泄漏、维护成本 |
| 规则路由 | 明确查询类别 | 精确、便宜、可控 | 误分类与规则膨胀 |
Elastic/OpenSearch文档同时展示排名融合与分数标准化/线性类方法,说明实现不只一种。研究论文也指出RRF对参数可能敏感,线性融合在一些设置可更好;所以“RRF免调参且总是最佳”不是本文结论。没有可靠标签时先用RRF+切片评估;积累足够金标准后,在盲集比较标准化线性或LTR。
若训练LTR,功能只能使用放行时可得的信息:词汇/向量排名、字段匹配、权限、新鲜度、查询类别等;不能把人工最终答案或未来点击泄入。权限/状态仍是硬过滤,不作为“低分也许保留”的功能。模型输出保存版本与特征快照,以便事故回放。
重排器只重排小候选集:先问“证据是否支持问题”,再控制算力和尾延迟
交叉编码器类重排器会同时读取查询和段落,比独立嵌入更能识别细粒度交互、否定和条件,但计算量会随候选数增加。案例对倒数排名融合后的前40个候选重排,输出相关等级、分数和可解释标签。它不能读取未授权段落,也不能把“背景相关”改造成“有权威的证据”。
| 支持段落进入前5的题数 | 词项 | 向量 | 混合融合 | 混合 + 重排序 |
|---|---|---|---|---|
| 精确标识符/名称 (220) | 190 | 140 | 199 | 205 |
| 策略编号/措辞 (240) | 194 | 159 | 204 | 215 |
| 语义症状/意图 (240) | 142 | 201 | 208 | 219 |
| 混合条件 (200) | 126 | 151 | 164 | 177 |
| 表格/跨表达式 (100) | 60 | 71 | 78 | 84 |
| 总计 | 712 | 722 | 853 | 900 |
900不是重排器在956个可召回问题上的“准确率”,而是按全部1,000题计算的前5证据成功数。44题缺少候选,是上游召回的限制,重排器无法修复;另外56题已有金标候选,却没有排进前5,才进入重排序和查询标签诊断。ColBERT论文展示了延迟交互如何在独立编码效率与细粒度匹配之间取舍,Elastic官方资料也把多阶段检索描述为:先用便宜方法做宽召回,再用更强模型重排小集合。案例选择交叉编码器只是本地方案,不宣称它是唯一架构。
重排器超过220毫秒预算、服务不可用或队列拥塞时,低风险任务可以降级到融合排名,并在追踪中标明降级。高风险政策问答若基础融合没有达到批准的质量门,就应显示系统错误或转人工,不能静默降低标准。批量结果和缓存只有在查询、权限时间戳、索引与配置完全相容时才能复用。
训练样本把直接证据作正面,把同主题旧版、数字相近但条件相反、同一系列背景段、其他酒店模板和高排名无支持段作难负例。不得把无权限文本送到外部训练服务;保留方式、用途和删除由数据责任人批准。训练、校准与盲家族分离,且人工标签同时保留权威/资格,避免模型学会“文字越像越好”。
重排记录不能只留一个浮点数。至少要保存输入段落编号、截断长度、模型与阈值版本、重排前后位置、超时或降级状态和主要标签。若一个包含关键脚注的段落因为输入截断而下跌,就交给E13或E14修复资料表示。模型迁移时,对同一份前40候选快照同时运行旧、新模型,先确认排序差异,再做端到端测试,便于把候选变化与重排变化分开。
“房门刷卡没反应”怎样从两路120个候选缩到8段证据
用户是H-117酒店值班经理,问“房门刷卡没反应,平台上却显示在线,先查什么?”查询解析器取实体 H-117、门锁、刷卡失败、平台在线、故障排查;没有猜测是电池、网关或权限卡。访问控制列表/状态过滤后,词项靠“刷卡/在线”找操作手册,向量靠现象语义找到“控制器心跳正常但锁端拒绝”的故障树。
| 阶段 | 候选/示例 | 决策 |
|---|---|---|
| 词元排名 1 | 住客卡编码失败标准作业程序 §3 | 精确术语, 准入 |
| 向量排名 1 | 门锁控制器在线/锁体离线诊断 §5 | 语义症状, 准入 |
| 向量排名 3 | 网络平台在线状态说明 | 相关背景, 重排后排名降低 |
| 词元排名 4 | 2022旧门锁手册复制 | 已取代, 评分前被排除 |
| 词元排名 7 | 总部管理员调试命令 | 角色被拒绝, 从未进入重排器 |
| 融合排名前40 | 当前合格集合的并集 | 按资料表示和文档家族去重 |
| 重排后前8 | §5.2 心跳、§3.1 卡片、§6 事件日志 | 与主张对齐的证据 |
retrieval outcome, not final answer
Q-LOCK-8821 role=hotel-duty-manager entity=H-117 as_of=now
lexical=60 vector=60 union=93 eligible=89 reranked=40 released=8
top evidence:
LOCK-CONTROL-2026-v2 §5.2 ranks L12/V1/RR1 supports online-vs-lock check
CARD-OPS-2025-v4 §3.1 ranks L1/V8/RR2 supports card encoding check
excluded:
LOCK-2022-copy superseded; ADMIN-DEBUG §2 denied
unknown: card type, one door or many; answer layer must clarify/branch
检索结果只说明哪些段可能支持下一步,不直接输出“换电池”。E14会按故障分支组合上下文,答案层逐主张引用并问“一扇还是多扇、员工卡还是住客卡”。这条追踪能回答每路为何命中、什么被硬过滤、重排器看了哪些段和降级是否发生。
复审员可以从追踪记录重建全过程:两路原始120条候选中有27条重复,并集为93条;其中4条因状态、权限或适用范围被排除,剩余89条参与融合,前40条送入重排器,最后8条交给答案层。这里的“排除”不算相关性失败,因为这些资料本来就不可用。若金标段落意外落入排除项,应先检查评估上下文或过滤器,不能立即把它加回来。每一步的输入输出数量都进入检查表;出现负数、无原因数量增加或无原因丢失时,检查自动失败。
用户随后补充“只有一扇门、所有住客卡都失败”,这已经构成新的查询上下文。系统不能直接复用第一轮8段证据,而应生成新的查询编号,只沿用获准的会话事实,重新运行过滤器和检索;旧追踪作为父记录保留。这样既能避免缓存错用,也能比较补充条件让哪些候选上升,支持最终答案解释路径为何改变。
过滤器必须进入每条检索路,向量检索后再过滤可能泄密并把候选集滤空
| 过滤器 | 执行要求 | 验证 |
|---|---|---|
| 租户/资源访问控制列表 | 词元/向量候选展示前 | 跨租户/角色负面测试 |
| 状态/生效 | 解析器导出的当前/截至集合 | 未来/已撤回/已替代配对 |
| 适用性 | 已知实体/区域/任务 | 组/特许经营/区域反例 |
| 来源/家族 | 已采纳来源或已知文档范围 | 影子/无主排除 |
| 语言/类型 | 软路由,除非有业务硬性规则 | 跨语言召回率保留 |
如果向量检索先取全局前60名再过滤,某位用户真正可用的合格段落可能排在第61名以后,过滤后只剩3条。更严重的是,未授权标题和分数可能已经进入日志或重排器。应使用检索引擎支持的前置过滤、授权分区或可证明等价的迭代方案,并对高选择性权限单独测召回率和延迟。词项与向量检索必须使用同一份资格快照和权限版本。
过滤为空也要诊断:是真无资料、用户无权、实体条件过窄、访问控制列表过期还是ANN在过滤下漏召回。用户响应遵循E11,不泄露受限资料存在性;工程追踪可在受控权限下看到排除原因。任何为了提高召回率而放宽过滤器的实验都不得进入生产比较。
权限负向样本与相关性样本要成对设计:同一问题分别由有权经理和无权外包账号发出。有权版本必须召回金标段落;无权版本连候选、标题和数量都不能暴露。用户转岗后立即重跑,引用打开时再次授权。若索引中的权限时间戳比身份权限版本落后并超过门槛,高风险路径立即停止;低风险是否允许继续由来源合同决定。过滤正确性要求关键故障为0,不能用99.9%的平均值掩盖一次泄露。
高选择性过滤器下另测精确向量预言机与ANN:若授权集合只占全库0.02%,全局近似最近邻搜索再过滤很容易空。可选方案包括原生过滤后的近似最近邻搜索、按租户/业务域分区、迭代扩大候选或在小集合精确搜索,但每种都要测最坏延迟和隔离边界。不能为了性能把所有用户共用一个未过滤向量缓存。
段落与字段是检索接口,不能用参数永久掩盖错误切块
E13将决定实际切块;本文先规定检索契约。段落要有稳定标识符、文档系列与版本、章节、页面或表格坐标、标题路径、语言、内容哈希、访问权限、状态、适用性和来源关系。词项索引保存原文与字段,向量索引使用经过批准的文本表示;两路使用同一段落身份,才能正确去重和引用。
| 检索症状 | 可能的摄入接口问题 | 交接证据 |
|---|---|---|
| 相关表格永远在排名>100 | 表头/单位未随行段落 | 查询 + 标准行 + 解析结构 |
| 标题命中但正文无条件 | 块丢失标题/脚注 | 来源坐标 + 邻近上下文 |
| 长政策向量主题过宽 | 块含多个独立规则 | 相似度/错误簇 |
| PDF/网页双占Top | 表示未连实体 | 重复家族/哈希追踪 |
| 中英版本互相覆盖 | 语言/翻译关系缺失 | 权威 + 衍生映射 |
扩大候选数量可能暂时捞回错误切块,却会把延迟、重复和上下文噪声传给下游。发现系统性接口问题后,应建立E13修复任务;修复前可以限制相关任务,不能永久用更大的候选池掩盖问题。重新切块会改变段落编号、向量和金标标签,必须提供迁移关系或重新标注评估集。
延迟、吞吐与成本按阶段预算,并行执行不等于没有成本
| 阶段 | 95分位预算 | 实测95分位 | 回退或停止 |
|---|---|---|---|
| 解析、路由、过滤上下文 | 35毫秒 | 28毫秒 | 精确路由或默认安全混合 |
| 词项前60 | 110毫秒 | 85毫秒 | 容量紧张时降低低优先级 |
| 向量前60 | 160毫秒 | 132毫秒 | 只有获批切片可退回词项 |
| 并行等待、去重、融合 | 累计195毫秒 | 168毫秒 | 超时时记录缺失的支路 |
| 重排前40 | 增加250毫秒 | 增加218毫秒 | 降级到基础融合或按任务报错 |
| 序列化与追踪 | 增加55毫秒 | 增加24毫秒 | 最低追踪字段不得省略 |
| 结束检索 | 500毫秒 | 410毫秒 | 生成器延迟被排除 |
词项和向量并行后的阶段延迟,接近较慢支路再加协调开销,而不是85+132毫秒简单相加;但两路仍各自占用算力。案例每1万次查询的15元、55元、68元和228元是本地容量分配结果,用于相对决策,不是供应商报价。把重排输入从40个增加到80个,只多6题的支持段落进入前5,却让95分位延迟增加146毫秒,因此没有采用。
容量测试覆盖正常流量、热点文档系列、高选择性权限、嵌入与重排冷启动、单条支路超时和索引刷新。缓存命中结果单独报告,不能混入冷启动的95分位延迟;查询和结果缓存都要包含访问权限、资料状态和配置版本。E10的优先级与准入规则同样适用于检索服务,批量评估不能挤占交互式政策查询。
成本算式也可以复核。案例每天10万次查询,按30天计算,每月约300万次。若全部采用混合检索加重排序,按每1万次228元计算,约为每月68,400元;全部只用混合检索约为20,400元,差额约48,000元。按路由方案,35%的高价值复杂题重排,50%的普通题使用混合检索,15%的精确题使用词项检索,示意成本为105万×228元/1万次 + 150万×68元/1万次 + 45万×15元/1万次,约34,815元/月。这还没有计入固定容量和冗余,不能直接作为财务报价。
延迟错误预算按路径分别管理。重排路线500毫秒服务等级目标与精确路线150毫秒服务等级目标不能平均成一个好看的数字;子任务超时、部分、降级和空各有状态。上线前以300QPS稳态、600QPS五分钟突发和热点单系列三种负载测试,确认p99、队列、取消和回退不会因重试放大。
指标要把候选缺失、排序失败和无证据误召回分开:一个召回率数字不能指导修复
| 指标/账本 | 分母 | 决策用途 |
|---|---|---|
| 候选召回@30 | 1,000 可回答/标准合格 | 第一阶段上限 |
| 支持的前 5 | 全部可回答 | 上下文就绪证据位置 |
| nDCG@10 | 按切片分级相关性 | 排序/背景惩罚 |
| 无证据前 5 相关 | 200 负面用例 | 对可回答性/硬负面的压力 |
| 过滤正确性 | 允许/拒绝反例 | 关键权限/状态放行门槛 |
| 50/95/99分位延迟与错误 | 合格生产和影子流量 | 延迟与可靠性 |
| 重复/冲突率 | 返回的证据集 | 上下文质量 |
100个前5漏检问题要建立逐题账簿。44个候选漏检继续拆分为词项、向量表示、近似搜索、过滤器、缺失或不良段落;56个排名漏检继续拆分为融合窗口、重复、重排器、标签争议和多条件覆盖不足。修复必须指向具体层,不能用一句“相关性差”作为关闭理由。
200个负面中的58个重排序高相关候选不是自动错:其中可能是背景材料确实相关但不足支持主张。它们进入可回答性压力测试,检查系统是否拒答;若硬负例常压过直接证据,再回到重排器训练/规则。权限泄露、撤回版本入候选是关键放行门槛,不能与普通nDCG平均。
日报只显示可以采取行动的变化:某个切片召回率下降超过门槛;金标段落已进入候选却跌出前5;负面高分问题簇新增;过滤后空结果激增;95分位或99分位延迟超预算;某个系列的重复占比异常。每条告警附代表性查询编号、变更前后的支路排名、最近来源或配置变更和责任人。没有证据的“相关性看起来变差”,不能直接推动全局调参。
用户反馈进入采样队列后由评审确认。点击了第二条可能说明第一条差,也可能只是要看补充表;“有帮助”不能证明引用支持主张。确认错误才更新失败记录,且一个样本不能直接训练并当天发布,必须经过去敏、去重、负责人标签、拆分隔离和盲测回归。
来源、查询、模型和配置变化都要触发回归
| 变更 | 受影响的重放 | 额外检查 |
|---|---|---|
| 新/已替代策略 | 家族查询 + 历史/截至 | 旧版本被排除/当前出现 |
| 分析器/同义词 | 精确/否定/数字配对 | 无关扩展/零结果 |
| 嵌入模型 | 所有语义/语言切片 | 向量分布/索引迁移 |
| 近似最近邻搜索/索引设置 | 向量预言机样本 | 召回率/延迟/过滤选择性 |
| RRF 窗口/K/路由 | 子列表重放 | 贡献/重复/任务成本 |
| 重排器/模型输入 | 前40候选快照 + 硬负例 | 前5表现、偏差、超时与降级 |
| 块/模式 | 标准段落迁移 | 引用坐标/标签 |
每次运行保存查询集、来源快照、合格段落编号、各支路排名与原始分数、融合与重排配置,以及硬件和负载条件。这样新版本下降时可以重放同一候选,区分是语料变化还是排序变化。具有随机性的近似搜索、并发和缓存场景要多次运行并报告区间,不能只取一次最佳结果。
回归先看关键切片,再看整体。若总体前5证据成功数从900升到906,但否定与金额题从94%跌到82%,不能发布;若95分位延迟超过500毫秒,而收益只出现在低风险探索题,可以只为这条路径启用,不能全局上线。金标变化必须由负责人记录原因,不能为了让新系统通过而重写标签。
来源变更的预期结果也写成断言:新版本生效后当前问题应命中新实体,历史截至仍命中旧实体,旧副本不得占当前候选,引用坐标可打开;若只看整体召回率,这四项可能互相抵消。索引刷新窗口内的结果标过期/错误策略,刷新完成后自动重放受影响系列,而不是等用户再次报错。
配置发布包包含旧/新差异、受影响路径、离线报告、容量结果、金丝雀比例、停止门和一键回滚别名。发布人在记录中确认实际装载的模型/索引/配置哈希与评估一致;若环境自动拉取了不同模型版本,健康检查即失败。回滚后也重跑代表查询并清理不兼容缓存,不能只把流量开关拨回去。
发布按查询类别和风险逐步放量:影子能比较排序,不能代替真实权限与用户结果
| 阶段 | 流量/范围 | 出口放行门槛 |
|---|---|---|
| 离线 | 1,200道固定题 + 新增硬负例 | 关键错误为0;切片和延迟通过预算 |
| 影子 | 生产查询,但不影响答案 | 访问权限追踪安全;分布和超时稳定 |
| 小流量验证 | 5%的内部低风险查询 | 错误、延迟和无证据行为稳定 |
| 已路由试点 | 精确词元; 语义混合; 高风险重排 | 两轮复核周期, 已测试的回滚 |
| 扩展 | 仅批准的角色/来源 | 负责人, 容量, 持续回归 |
影子环境也不能让新检索器读取旧系统用户无权访问的来源;输出虽然不展示给用户,仍然属于数据处理。线上比较时固定答案生成器,或者只比较检索追踪,避免同时更换生成模型。小流量验证的回滚通过路由、配置和索引别名执行,并验证缓存与在途查询不会继续返回新配置的结果。
每周相关性复核只看有影响的簇:零/低召回率、前 5 漏检、负面高排名、过滤为空、超时、用户打开引用后返回、负责人确认错误。点击/停留只用于采样,不奖励耸动或最熟悉文档。季度重做任务分布与容量评审,停止无人负责、收益不足或长期靠例外维持的路径。
小流量验证的决策表把严重错误、支持段落进入前5、无证据时正确停止、95分位与99分位延迟、部分完成与降级率和成本并列。任何权限或撤回资料的硬失败,都要立即回滚受影响路线;普通前5指标回落超过约定区间时暂停放量;容量超预算时可以只关闭重排序,保留已经批准的混合检索。决定由知识产品、内容与访问负责人、搜索工程和运行负责人共同签署,不能由单一模型团队根据总分决定。
运行手册覆盖支路超时、重排器中断、索引延迟、访问权限版本过期、融合异常、重复激增和无结果突增。值班人员先识别受影响的查询类别与来源,再执行预先批准的降级或停止;恢复前检查状态、抽样追踪和回归结果。每月清理没有负责人的同义词、废弃索引、过期评估快照和从未使用的路径,控制系统复杂度。
交付检索证据包:团队能复现每一路排名、融合、过滤、延迟和失败责任
| 产物 | 最低内容 |
|---|---|
| 查询分类法/路由器 | 类/特性/路由/置信度/回退/负责人 |
| 评估集 | 查询上下文/标准段落/等级/资格/分割 |
| 词元配置 | 分析器/字段/提升/短语/同义词/版本 |
| 向量清单 | 模型/维度/前缀/语言/索引/近似最近邻搜索/预言机 |
| 过滤契约 | 访问权限、状态、生效、范围、权限版本、负面测试 |
| 融合配置 | 子列表/窗口/K/权重/去重/贡献 |
| 重排清单 | 模型输入前 K/超时/降级/硬负面 |
| 追踪模式 | 变体/排名/分数/排除项/配置/延迟 |
| 失败账本 | 候选/排名/筛选/标签/根负责人/回归 |
| 性能/成本报告 | 并发、缓存、50至99分位延迟、错误、容量分配 |
| 变更/发布计划 | 触发/回放/金丝雀/回滚/决策记录 |
证据包不是一次性交付文档,而是可执行状态。查询分类能生成路由测试,评估集能运行,过滤契约能生成允许/拒绝检查,清单能解析实际索引/模型哈希,失败账本能链接修复和回归。仪表板数字必须能下钻到脱敏查询 ID与排名记录;敏感原文仍按权限打开,不复制到通用报告。
交接验收随机抽10题由非实现人员复现:从题集找到黄金,运行指定配置,查看词汇/向量子项、资格排除、RRF公式、重排序前后与延迟;再用一个旧版、一个无权限和一个无证据反例验证停止。任一步依赖口头解释、个人笔记本或已覆盖日志,交付不通过。所有模板、字段清单、评分门槛、状态记录和运行手册都指定维护负责人与复核日期。
BEIR提供异构检索任务与词项、稠密、晚期交互、重排序的跨域比较,支持不能凭单一任务宣布一种检索器普遍最佳。RRF原论文与Google Research页面给出基于排名融合多套结果的基础;Microsoft与Elastic官方文档说明现代混合实现并行全文/向量并用RRF统一排名、窗口影响质量与性能。Elastic的排名资料说明多阶段检索以便宜算法宽召回,再用更强模型重排较小候选;ColBERT论文提供延迟交互的代表性设计。OpenSearch文档展示分数归一化与排名融合两类处理器,进一步说明融合选择需按本域验证。所有来源核验于2026-07-21。
- BEIR:A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models
- Google Research:Reciprocal Rank Fusion
- Microsoft Learn:Hybrid Search Scoring with RRF
- Elastic Docs:Ranking and Reranking
- Elastic Reference:Reciprocal Rank Fusion
- OpenSearch Documentation:Hybrid Search
- ColBERT:Efficient and Effective Passage Search via Contextualized Late Interaction
实际开始时,先抽取50个高频问题,按编号与数字、语义现象、结构筛选和多条件查询分类,并为每题标出当前、有权且适用的金标段落。用调过字段的词项检索和固定模型的向量检索分别取前30名,保存两路排名,不能只看最终答案;对并集做倒数排名融合,再只重排前40个候选。逐题把未命中归因到候选、排序、过滤、资料或标签层,同时记录95分位延迟和负面样本的高排名情况。只有某一切片的收益足以覆盖延迟、成本和新增故障面,才为该类问题启用对应路径。