← 回到书房

学习记录

找到一样的,还是找到相关的?

从 jieba、BM25、BGE-M3 出发,用两个 recall 的集合演算理解匹配与相关性的差距。

一个检索系统可以忠实返回最相似的对象,却没有满足当前需求。要理解这个差距,可以先把几个常一起出现的名字放回各自的操作中。

从 jieba、BM25、BGE-M3 开始

jieba提供中文分词等能力,影响文本以什么单位进入后续处理。BM25根据查询词项、文档词频与长度等因素计算匹配分数;词频的增益不是无限线性增长。BGE-M3支持 dense、sparse 与 multi-vector 三种检索表示,已经提醒我们:“神经”与“词项”并不是一条只能二选一的分界。

先有可比较的表示与打分目标,再选择访问和排序方法。这些角色可以由同一个软件组合实现;上面的区分不规定一条唯一流水线。

原创设定中,查询“如何撤回旧授权”可能需要找到只写“取消先前权限”的内容;另一个查询“错误码 E17”却需要保住精确符号。前者让我们关心泛化,后者让我们关心约束。哪一种表示适合,取决于需求和材料。这个例子不报告任何模型的实测表现。

两个 recall,两个参照集合

设文档只有 a 到 h。针对当前需求,原创设定的相关集合为 R = {a, d, e, f}。给定向量及距离下,精确最近邻前三名为 N₃ = {a, b, c}。一个近似方法恰好返回 A₃ = {a, b, c}。

近邻集合召回在本例定义为 |A₃ ∩ N₃| / 3,因此是 3/3 = 100%。而针对信息需求:

  • Precision@3 = |A₃ ∩ R| / 3 = 1/3 ≈ 33.3%
  • Recall@3 = |A₃ ∩ R| / |R| = 1/4 = 25%

索引完全恢复了设定中的精确邻居,却只取到一份相关文档。近似误差在这里为零,相关性差距仍然存在。这个演算只依据设定的集合,没有运行 embedding 或 ANN 软件,也没有把八个字母冒充真实语料。

Faiss 的搜索定义以给定向量和度量为对象;IR 的 precision 与 recall以相关判断与返回集合为对象。混用参照集合,会让同一个“召回率”回答不同问题。

精确率和召回率一定此消彼长吗

仍固定 R,把返回前三名改为 B₃ = {a, d, e}。此时 precision 是 3/3 = 100%,recall 是 3/4 = 75%。两者同时上升。固定返回数量和相关集合时,多找到一个相关对象,两个比例都会改善。

另一种情况是沿同一排序放宽返回数量。加入一份不相关文档会降低 precision 而不提高 recall;加入一份相关文档会提高 recall,precision 如何变化还取决于原来的比例。所谓取舍,需要说明改变的是阈值、预算、排序还是表示。

这个区别也防止我们把 lexical 与 semantic 的选择直接等同于 precision 与 recall 的取舍。前一组描述匹配机制,后一组描述评价结果;实际关系需要任务与数据来建立。

已经获得的理解与继续位置

现在可以把三个问题分开:有没有找到给定度量下的邻居,邻居是否与需求相关,返回的信息是否在后续任务里发挥作用。每一问都可以继续深入。

下一次可以从训练正负例入手:一项模型把什么当作相关,与使用者此刻需要什么,有哪些一致与差异?也可以先改变本例的需求,使相关集合变成另一组,观察同一排序为什么获得不同评价。正文中的演算已经足以独立阅读,网页演算只是方便比较的另一种呈现。

ORIGINAL TEACHING SET / 原创集合演算

换一个集合,看看比例怎样变化。

a–h、顺序与相关集合均为设定;这里没有执行 embedding、ANN 或模型检索。

abcdefgh

深色底 = 已返回 · 下划线 = 需求相关

近邻集合召回100.0%3 / 3
Precision@333.3%1 / 3
Recall@325.0%1 / 4

返回 {a, b, c} · 参考近邻 {a, b, c} · 相关 {a, d, e, f}

来源与实际阅读范围 · 5

官方资料

jieba 官方 README

分词确定后续处理所用的文本单位。

Features 与 Algorithm 的分词说明

阅读范围见定位;未运行相关软件或模型。

基础教材

Okapi BM25: a non-binary model

BM25 将词项匹配与词频、长度因素结合。

教材 §11.4.3,词频、文档长度与参数的说明

阅读范围见定位;未运行相关软件或模型。

官方资料

BGE-M3 documentation

同一模型提供多种检索表示,机制不宜按词项/神经简单二分。

Dense / Sparse / Multi-Vector 与 hybrid 说明

阅读范围见定位;未运行相关软件或模型。

官方资料

Faiss documentation

给定向量与度量界定搜索对象。

首页 What is similarity search? 与 index 说明

阅读范围见定位;未运行相关软件或模型。

基础教材

Introduction to Information Retrieval · Evaluation

评价必须明确相关集合与返回集合。

教材 §8.3,precision / recall 定义及其讨论

仅使用集合评价定义;未覆盖完整 IR 评价体系。

留下的理解

先说明分母

近邻集合与需求相关集合不同,100% 的近邻召回不保证需求得到满足。

同时改善是可能的

固定 k 和相关集合,找回更多相关对象可以同时改善 precision 与 recall。

a–h、排序与相关集合均为原创教学设定;只计算集合比例,没有运行 embedding、ANN、BM25 或 BGE-M3。

下次,从这里继续

训练正负例中的相关性,与当前的信息需求有什么差异?

区分评价对象以后,才能进一步解释表示为何匹配或失配。

过去怎样进入当下 ↗索引也能学习——究竟学了什么? ↗

带走这份公开研究

Markdown ↓JSON ↓

含当前正文、出处、阅读范围与接续线索;链接的全文不随包附带。

已打开学习记录:找到一样的,还是找到相关的?