知行札记
专题数据与信息系统搜索、索引与检索

索引更新、权限与检索质量

保持原文和索引对应,区分近邻覆盖与相关性,并用任务、样本、排名和成本评价检索。

派生索引需要跟随原文变化

原文新增、修改或删除时,对应索引需要建立、替换或移除。记录稳定身份、内容版本、转换规则和更新时间,才能判断一个索引任务是否仍对应当前原文。任务重复执行时,应按身份替换或采用明确的幂等写入契约;旧任务迟到时也需避免覆盖新版本。

分步更新可能短暂出现旧片段、缺片段,或新旧表示并存。是否允许延迟取决于任务;权限撤销、敏感删除和公开状态变化需要更严格的可见性处理。数据库提交成功不等于外部搜索索引已经更新,前台隐藏也不能移除已经下载到客户端的索引内容。

图索引、区域索引和倒排索引的增删方式不同。删除可以使用标记、清理或重建,具体操作是否会影响图连通性、统计量和空间复用,需要检查实现。残留节点、无效向量和旧版本片段还会占用候选位置,更新正确性与性能应一起观察。

重建与切换要覆盖期间的变更

改变分析器、字段结构、嵌入模型、输入模板或维度时,旧索引可能不再表达新规则。可以在独立索引完成重建和检查后切换查询入口,重建期间新增和修改的原文仍需同步到新索引。只重建初始快照,会在切换时丢失期间的变化。

切换需要确定原文快照、补增量截止位置、索引版本、模型标识和回退条件。查询和文档必须使用兼容表示,同维度无法证明两个模型的空间相同。缓存、文档回填和返回结果也应指向同一版本;变更模型后只改查询编码器会造成混用。

索引可见范围决定静态文件能公开哪些内容。将整个索引复制到浏览器,意味着用户能够取得它保存的文本与字段;下载后靠界面过滤无法建立访问隔离。最终输出、缓存与日志需要使用相应的可见条件。

先区分近邻覆盖与任务相关性

ANN 的近邻覆盖通常以精确前 kk 项为基线:

ANNRecall⁡@k=∣Ak∩Gk∣k\operatorname{ANNRecall}@k=\frac{|A_k\cap G_k|}{k}

GkG_k 是同一集合、表示和度量下的精确前 kk 项,AkA_k 是近似索引结果。这里假定允许集合至少有 kk 项;不足时需明确分母,并规定同分项的处理。这个指标说明索引有没有保留空间中的真近邻,未判断这些近邻是否对任务有用。HNSW 原论文的问题定义使用了这一覆盖思想。

任务相关性需要独立相关判断。设查询的相关集合为 RqR_q,返回前 kk 项为 SkS_k,则:

Precision⁡@k=∣Sk∩Rq∣k,Recall⁡@k=∣Sk∩Rq∣∣Rq∣\operatorname{Precision}@k=\frac{|S_k\cap R_q|}{k},\qquad \operatorname{Recall}@k=\frac{|S_k\cap R_q|}{|R_q|}

一个精确向量检索可以有很高的近邻覆盖,同时相关性很低;一个近似结果偶然漏掉无用近邻,也可能保留了更有用的文本。报告“召回”时必须说明基线是精确近邻、人工相关集合,还是仅一个预设目标。返回不足 kk 项或没有已知相关项时,也要规定计分口径。

排名指标分别关注哪些结果

MRR 关注第一个相关结果的位置。每个查询取得第一个相关项的倒数名次,再对查询取平均;在设定截止位置内没有相关项时记 0。MRR@10 的名次是 1、2、5 时,对应贡献为 1、0.5、0.2,它没有继续奖励更多相关项。

nDCG 允许多级相关度,强调高等级相关项排得靠前。一种常见形式是:

DCG⁡@k=∑i=1k2reli−1log⁡2(i+1),nDCG⁡@k=DCG⁡@kIDCG⁡@k\operatorname{DCG}@k=\sum_{i=1}^{k}\frac{2^{rel_i}-1}{\log_2(i+1)},\qquad \operatorname{nDCG}@k=\frac{\operatorname{DCG}@k}{\operatorname{IDCG}@k}

relirel_i 是第 ii 项的相关等级,IDCG 是同一查询的理想排序分数;没有可用理想增益时,需要约定该查询怎样处理。增益函数也有不同定义,相关等级、截止位置及标注覆盖需要随结果保留。评价方法及其条件见原作者教材 Evaluation in information retrieval与排名结果评价。

指标选择应对应任务。精确查找可以看目标命中和首个结果,综述查找需要检查相关覆盖及来源多样性,实时产品还需测量延迟、吞吐与下载开销。同文档的多个片段如何计分、先去重还是先截断,会改变这些指标。

样本与比较要覆盖会改变判断的条件

样本可包含常见术语、精确标识、同义表达、长短查询、混排、歧义、无结果、版本差别、删除与权限变化。选择哪些条件取决于受众和语料。人工构造样本便于控制机制,真实查询帮助检查实际任务分布,两种样本支持的结论不同。

基线和候选应使用同一语料快照、允许集合、查询集、相关标注和结果单位。评价模型表示时先采用精确搜索或明确近似损失;评价索引时固定模型与度量。混合与重排同时记录各阶段候选覆盖,才能辨认收益来自新候选还是顺序变化。

调参使用开发集,最后结论使用独立测试集,避免反复对同一答案表调权重后声称泛化。标注浅时,未标记不等于无关;人工判断分歧可能来自任务含义或等级尺度,需要核对分歧对象。判断者是生成模型时,也需校验它的偏差与一致性,不能仅以模型自评替代相关依据。

保留语料与模型版本、查询、相关判断、参数、每阶段返回项、去重规则、过滤选择率和计分办法。运行成本要说明硬件、并发、热冷缓存、批处理、网络和请求范围,平均值与尾部延迟分别记录。不能把单个组件耗时当作完整请求延迟。

限制结论到取得的证据

Node 中通过静态索引序列化与查询,可以检查接口和算法的那条路径。浏览器下载、键盘选择、焦点和跳转需要对应运行观察。一个三文档测试可以证明预设目标在指定规则下命中,不能说明大索引下载成本、真实排序、权限撤销或所有语言表现。

对小规模语料,全扫描或简单倒排也可能符合预算;对复杂权限,需要先确定公开方式和服务端过滤。选择产品时要核对实际数据、接口、更新与失败条件,“支持中文”或“支持向量”只提供能力线索。本专题解释机制与评价方法,没有声称已完成本站的大规模检索实验或真实读者测试。

最后更新于

本页目录