跳到内容
Coding with AI · Lecture 08
Esc
↑↓导航↵打开⌘J预览
本页内容

检索靠字面重合,还是学出来的向量?

公平比较检索器,要固定问题、文档库和判据,只换一个部件。

这一页为什么在这里

第二个决策点:知识放在外面以后,第一件事是“取”。2020 年春,检索靠字面重合(BM25),还是学出来的向量(DPR)?先让学生押,再让学生说“怎么比才公平”:同一批问题、同一个文档库、同一个判据,只换检索器。这是方法线的第二招:只换一个部件,差别才算得到它头上。

上屏

  • 第 1 步:两栏。左「字面重合(BM25)」:问题和段落都看成一袋词;共有的词越多、越少见,分越高;几十年来最强的基线。右「学出来的向量」:问题和段落各变成一个向量(第三讲那一招),意思近的离得近;用词不同、意思相同也能找到;2020 年以前在开放域问答上没有稳赢 BM25。底部:2020 年春,要在 2,100 万段维基百科里检索,你押哪个?
  • 第 2 步:题面“怎么比才公平?”四行对照框:同一批问题(Natural Questions:真实的搜索问题)|同一个文档库(2,100 万段维基百科,每段 100 词)|同一个判据(取回的前 20 段里有没有答案)|只换:检索器(高亮)。

讲

第 1 步 · 教师可说的话

在两种检索方案之间押注

知识放在外面,第一件事是“取”。2020 年以前,取靠字面重合,BM25 这类方法用了几十年,又快又稳。学出来的向量早有人试,意思相近就能找到,哪怕用词不同;但在开放域问答上一直没稳赢。2020 年春天,换你来给两千多万段维基百科做检索,押哪个?

指图与比较

在两种检索方案之间押注

第 2 步 · 教师可说的话

设计公平的部件比较

押之前先想:怎么比才算公平?问题要一样,文档库要一样,判据要一样,比如前 20 段里有没有答案;只换检索器这一个部件。否则分数高了,你分不清是检索器的功劳,还是别的东西变了。

指图与比较

设计公平的部件比较

本页衔接

下一页看同分布下只换检索器的真实结果。

连续教师稿原文

知识放在外面,第一件事是“取”。2020 年以前,取靠字面重合,BM25 这类方法用了几十年,又快又稳。学出来的向量早有人试,意思相近就能找到,哪怕用词不同;但在开放域问答上一直没稳赢。2020 年春天,换你来给两千多万段维基百科做检索,押哪个?

押之前先想:怎么比才算公平?问题要一样,文档库要一样,判据要一样,比如前 20 段里有没有答案;只换检索器这一个部件。否则分数高了,你分不清是检索器的功劳,还是别的东西变了。

完整推理

BM25 的直觉。 把问题和段落都看成一袋词,不管顺序。一个词在段落里出现得越多,分越高,但增长会饱和(词频);这个词在整个文档库里越少见,越有区分力,权重越大(逆文档频率);长段落按长度归一,避免靠篇幅占便宜。它不用训练,又快又稳,几十年里一直是检索的强基线。弱点是认字不认意:“汽车”和“轿车”对它是两个词。

学出来的向量(双编码器)。 用一个编码器把问题变成向量,另一个编码器把段落变成向量,用两个向量的内积衡量相关;意思相近的离得近(第三讲的嵌入)。好处是用词不同也能找到;难处是要有足够的问答对来训练。在 2020 年以前,这类方法在开放域问答上并没有稳定赢过 BM25。

当年的两难。 RAG 需要一个检索器从 2,100 万段里取材料。押 BM25 稳妥;押向量,可能更好,也可能白忙。

怎么比才公平。 问题、文档库、判据都相同,只换检索器;否则分数差了,分不清是检索器的功劳,还是别的东西变了。DPR 用的判据是“前 20 段里有没有含答案的段落”(top-20 检索准确率),它测的是取到没有,不是最后答对没有:取到以后,阅读器还可能读错。

学生可能的回答与误区

  • 第 1 步|多数人押向量,理由是“深度学习更好”。这正是下两页要检验的直觉:Q09 里它赢了,Q10 里换个领域它输了。
  • 第 1 步|押 BM25 的理由常是“专有名词和编号多的时候,字面匹配更准”。这是对的直觉,Q10 会看到它在哪些领域成立。
  • 第 2 步|“比最后的问答准确率就行。”那样会把阅读器的差别也算进来;要评检索器,就只看检索这一步。
  • 第 2 步|把“前 20 段含答案的比例”当成最终问答准确率。它只说明取到了,取到和用对是两关(Q12)。

教学构造与出处

  • 教学构造:两栏的概括与“你押哪个”的题面是课件做的。
  • DPR · Dense Passage Retrieval for Open-Domain Question Answering:Karpukhin 等,arXiv 2004.04906v3,EMNLP 2020;读 §2–§4:BM25 基线、双编码器、维基百科切成 100 词一段(约 2,100 万段)、前 k 段检索准确率。来源支持。
  • 第三讲讲过的向量表示(嵌入)在这里当作已知。

在课堂中打开

这个页面有帮助吗?