跳到主要内容

文章不给了,先检索再回答 — DPR-ConvQA(攻关三)

这一章讲三件事: 开放域怎么改写了任务;稠密检索+对比学习怎么协同;检索器质量为什么是阅读器的天花板。 这是三大挑战的最后一条,也是离今天最近的一章——本章的「检索器+阅读器」骨架,就是现在人人挂在嘴边的那套「先找资料再作答」框架(名字见第 6 节)的前身。

1. 先看现象:真实用户不会替你翻好文章

前两章的世界其实很安逸:文章总是和问题一起递到手边。原书开篇就把这个舒适区拆了:现有 ConvQA 设定要求源文章随问题提供,这与真实场景不符——真实对话里,「金标文章」不会预先给到1

于是任务扩成开放域对话式问答(OD-ConvQA,open-domain ConvQA):模型要先从一个大集合里检索出相关段落,再从中选答案。第 04 章的第四代(ORConvQA 三件套)已经在这条路上起步,但它们有一个共同习惯:把整个对话上下文原样喂给检索器。原书点破后果:无关轮次跟着混进检索,检回的段落也跟着跑偏,最终答案跟着遭殃2。而检索环节的失误特别致命:检索器传给阅读器的错误会被阅读器放大——上游一错,下游全垮3

DPR-ConvQA(Dense Passage Retrieval for ConvQA)的两步棋,恰好对准这两个病灶:①把第 06/07 章的「实体剪历史」第一次搬进检索器——原书自述这是第一次有人把精选过的上下文放进检索模块4;②用对比学习微调段落表示,让相关段落更靠得近、无关段落更推得开5

2. 检索的两代:数关键词 vs 比向量

这一节回答:为什么检索非得换成「向量」不可。

第一代检索是关键词匹配,代表是 DrQA 用的 TF-IDF:给每个词按「在这篇多常见、在全集多稀有」打权重,数问题和段落的重合词。词面对得上就有分。它在本章的考卷上输得很惨:OR-QuAC 上 F1 只有 6.3(满分为 100)——因为对话式检索的痛点恰恰是词面对不上:当前问题只有「它是什么时候发行的?」,而目标段落里是「Aadat(2004)」。原书把这类问题叫词汇失配(vocabulary mismatch),并指出对话场景里失配更严重——这正是稠密检索的主场6

第二代就是稠密检索(DPR,dense passage retrieval):用双编码器(dual-encoder)架构——问题一个编码器、段落一个编码器——把两边分别映进同一个向量空间,再用点积(两串数对应位相乘再求和,数字越大越相似)当相似度7。词面不重合没关系,「它发行的年份」和「Aadat 2004」的向量可以离得很近。代价是要训练这两个编码器——怎么训,就是下一节的对比学习。

顺带补全第 04 章的伏笔:这一代里还有条更激进的路线(PRO-ConvQA)连阅读器都不要了,直接在检索阶段预测「答案短语」——短语检索省了环节,也就没有环节可错,这是对误差传播的釜底抽薪;本书走的还是稳妥的「检索器+阅读器」两段式8

3. 走查:「他有没有歌进过电影?」怎么找到答案

主走查。 原书给的定性对比案例是一段关于民谣歌手 Gene Clark 的对话9:

#问答
Q1谁和 Clark 一起做过 White Light?—— 专辑由美国印第安裔吉他手 Jesse Ed Davis 制作……
Q2这张专辑成功吗?—— 评论界好评,商业上失败(荷兰除外)
Q3专辑失败后 Clark 做了什么?—— 1971 年春为 Dennis Hopper 的电影项目写了两首歌
Q4他有没有歌进过电影?—— 标准答案:The Farmer

Q4 的两道坎:「他」指 Clark(共指),「进过电影」呼应 Q3 的电影插曲(下钻)。走一遍 DPR-ConvQA:

① 剪历史(第 06/07 章的同款操作)
BART 给各轮生成 CE/QE;与 Q4 共享实体的轮保留:
Q3(电影、歌曲)保留;Q2(商业成败)剪掉

② 编码 + 检索
问题编码器把「Q4 + 保留的 Q3」编成一个向量
与约 1100 万个段落向量逐一算点积(第 05 章:OR-QuAC 的段落池)
取相似度最高的若干段进阅读器
——Gene Clark 的维基条目段落应排进前几名

③ 阅读 + 定答案
BERT 阅读器在每段上算「开头/结尾」概率(第 04 章第 6 节同款)
最终分 = 检索分 × 阅读分,跨段取最高
→ 答案:「The Farmer」✔

对照:对手 ConvADR-QA 同题答「American Dreamer」✘
——它把整段历史(含 Q3)原样喂进检索,混进来的杂讯让
检索把「电影项目名」所在段落排在了前面;
阅读器在错误的段落里再准,也只能抽出一个错误的答案
图说:第②步的排名走势为示意;对比结果(American Dreamer vs
The Farmer)是原书 Table 5.3 的真实记录。

这条走查把本章的核心命题演完了:阅读器的天花板是检索器画的。 原书的消融把话说死:本章阅读器与对手 PRO-ConvQA 是同款,优势几乎全部来自检索器10

4. 对比学习:让相关的段靠得更近

这一节讲双编码器怎么练出来。机制只有一个动作:拉近正样本,推远负样本。

对比学习(contrastive learning)不是检索的发明——最早的用武之地是人脸识别:同一个人的两张照片拉近,不同人的推远11。搬进检索后,「同一张脸」换成了「含答案的段落」:含答案的段落是正样本,其余是负样本;训练目标是让问题和正样本的向量距离最小化12

训练用的罚则:把问题与「1 个含答案段落 + 若干不含答案的段落」放在一起比,模型认错了就罚——把它往「认得对」的方向掰。直觉就是「一道多选题,逼模型认出正确选项」。(这套罚则在论文里有个缩写学名,不记也行。)

剩下的工程问题是:负样本从哪来? 从 1100 万段里现挑太贵。本书用的是 in-batch negatives 策略:一个训练批(一次一起喂进模型的一组题)里放 B 个问题、各配一段含答案的段落——那么其他 B−1 个问题的答案段落,恰好可以当作本问题的负样本;一批 16 个问题,每个问题白得 15 个负样本,不用额外检索13

这是一笔漂亮的算力(训练要烧的机器与电)套利:反正这些段落已经算完向量了,顺手当反例用。

5. 证据与边界

先看成绩(两套考卷,Recall/MRR 评检索、F1/HEQ 评答题)14:

模型RecallMRRF1HEQ-Q
DrQA(TF-IDF)0.26.30.1
OR-ConvQA(整段历史)31.431.329.424.1
ConvADR-QA(历史答案入模)77.966.838.432.1
DPR-ConvQA80.168.439.934.2

(OR-QuAC;TopiOCQA 上次序相同:DPR-ConvQA 77.2/65.3/35.9 vs ConvADR-QA 75.6/63.4/35.2。)三个观察:

  1. 代际差触目惊心:TF-IDF 的 Recall 只有 0.2——1100 万段里几乎一无所获;稠密检索把它抬到 80.1,两个数量级的差距;
  2. 分数随对话变长而下滑——所有模型都逃不掉,历史越长依赖越难解15;
  3. TopiOCQA 全线低于 OR-QuAC,原因是软肋被考卷精确命中:TopiOCQA 的对话中途换主题,而本书模型的剪枝逻辑建立在「实体延续」上——话题一跳,实体断了,历史选择反而成了包袱16;再叠一层罚分:它的答案是自由文本(第 05 章的考卷对照),词面 F1 对换措辞的答案天然吃亏,分数又被压低一截。可视化分析还展示了一个直观案例:对「Anna Politkovskaya 谋杀」主题的问题,DrQA 的检索结果整团落在无关段落中间,而精选历史的模型都靠得更近17

再记三条边界:①级联误差没有根除——检索器的召回率(该找回来的找回来了多少)不到 100%,阅读器就在错误的候选里做题;②两套考卷都是英文维基域;③计算成本不低——阅读器训练用了两块各 16GB 内存的 NVIDIA Tesla P100 训练卡18

6. 这章在今天的位置

这一节把 2024 年的论文接到 2026 年的行业现状上。

「先检索、再让模型基于检回的段落作答」——这个骨架今天有个更响亮的名字:RAG(Retrieval-Augmented Generation)——三个词连读:先检索资料、再增强问题、最后生成回答。差别只有一处:阅读器的位置上,BERT 换成了 LLM,「抽取答案 span」变成了「基于段落生成回答」。我们书架上现成的两份拆解可以接上:Ragas 文档把 RAG 定义为「先从知识库检索相关片段,再让 LLM 基于这些片段作答」19;而现代 RAG 引擎(如 dsrag)的默认组件插槽——嵌入模型加重排器——正是本章「双编码器检索」的直接后代20

更妙的是,本书「精选历史再检索」的主张,在 LLM 时代不但没过时,反而升级成了行业关键词「上下文工程」:上下文窗口(模型一次能读进去的字数上限)再大,塞进去的噪声照样烧钱、照样带偏答案——第 07 章那张「11 个负样本掉 15 分」的价目表,在「百万 token(上百万个词片段)」的时代只会更触目。作者在第 09 章的未来方向里自己点了转型的方向(让 LLM 先生成再检索)——那是下一章的话题。

7. 可带走的

  1. 开放域 = 先检索后回答;检索器的召回是阅读器的天花板,消融证明本章优势全部来自检索器;
  2. 关键词检索在对话场景会死于词汇失配——「它是什么时候发行的」在词面上找不到「Aadat 2004」;
  3. 双编码器+点积:问题和段落各编一个向量,同空间比距离;词面不重合也能配上;
  4. 对比学习一句话:拉近含答案段落、推远无关段落;训练即一场「多选题考试」;
  5. in-batch negatives 是算力套利:批内别人的答案段落顺手当自己的负样本,一个 batch 白得 B−1 个;
  6. TF-IDF 与稠密检索在对话检索上差两个数量级(Recall 0.2 vs 80.1);
  7. 话题切换是实体剪枝的软肋——考卷一换设定,优势立刻缩水;
  8. 本章骨架就是今天的 RAG:阅读器从 BERT 换成 LLM,「精选上下文」的思想原样存活。

8. 原文地图

主题原书章原文位置
retriever-reader、检索错连累阅读器、整段上下文之害Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:7(搜「retriever-reader pipeline」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:14(搜「reader vulnerable」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:16(搜「entire conversational context」)
真实场景无金标文章、开放域两步走Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:35(搜「unlike the real-world scenario」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:38(搜「gold passages are not」)
首次把精选上下文放进检索器、对比学习目标Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:204(搜「first attempt to incorporate curated」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:26(搜「representation learning, which minimizes」)
词面失配与稠密检索Ch5text/12-ch02-04-2-4-conversational-machine-reading-comprehension.txt:343(搜「vocabulary mismatch」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:46(搜「optimal solution」)
对比学习源流:人脸/xMoCo/PRO-ConvQACh5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:168(搜「contrastive loss for facial」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:172(搜「xMoCo」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:175(搜「PRO-ConvQA」)
双编码器、同一向量空间、点积Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:272(搜「dual-encoder architecture」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:272(搜「into one embedding」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:274(搜「dot product」)
训练目标与 in-batch negativesCh5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:281(搜「minimum distance」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:297(搜「in-batch negatives」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:307(搜「B training instances」)
阅读器与最终得分Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:315(搜「traditional BERT」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:317(搜「select the start and end」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:323(搜「product of the retriever score」)
超参与硬件、数据集规模Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:354(搜「whereas 384 for the passage encoder」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:360(搜「P100」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:376(搜「3,920」)
基线与主结果表Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:393(搜「TF-IDF」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:434(搜「6.3」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:440(搜「80.1」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:446(搜「77.2」)
代际差、优势归因检索器Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:467(搜「DrQA performs poorly」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:474(搜「advantage comes from the retriever」)
TopiOCQA 掉分原因、话题切换Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:478(搜「better than the Topi」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:480(搜「frequent topic switching」)
检索可视化、轮数越长越难Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:517(搜「Politkovskaya」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:549(搜「grows longer」)
Gene Clark 与台风 Zola 定性对比Ch5text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:588(搜「White Light」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:606(搜「songs released in films」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:612(搜「typhoon Zola」) · text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:619(搜「Hiroshima Prefecture」)

Footnotes

  1. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 35 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:35,搜「unlike the real-world scenario」)。开放域需要先检索再选答案的说法在第 37–39 段。

  2. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 15–17 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:16,搜「entire conversational context」)。检索混入无关段、拉低整体表现的推理链在第 15–18 段。

  3. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 14 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:14,搜「reader vulnerable」)。

  4. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 204 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:204,搜「first attempt to incorporate curated」)。

  5. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 26 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:26,搜「representation learning, which minimizes」)。原文:最小化正样本间距离、最大化负样本间距离,提供更好的段落表示。

  6. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 340–344 段(text/12-ch02-04-2-4-conversational-machine-reading-comprehension.txt:343,搜「vocabulary mismatch」)。DrQA 的 TF-IDF 检索器见第 393 段(搜「TF-IDF」);其 OR-QuAC 成绩见 Table 5.2(第 434 段,搜「6.3」)。

  7. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 270–273 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:272,搜「dual-encoder architecture」)。双编码器把问题与精选历史映进同一嵌入空间,检索分为向量点积(第 273 段)。

  8. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 175–177 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:175,搜「PRO-ConvQA」)。原文:该模型不做传统 retriever-reader 流水线,直接在检索模块预测答案短语,省去阅读器环节;短语检索避免误差传播的说法另见第 6 章引文(text/19-ch06-chapter-6-conclusion-and-future-directions.txt:119,搜「phrase retrieval」)。

  9. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」Table 5.3(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:586,搜「Example 1」)。对话在第 588–609 段:Q4 的「he」需要共指消解,ConvADR-QA 答「American Dreamer」(第 608 段),DPR-ConvQA 答「The Farmer」(第 609 段)。

  10. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 474 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:474,搜「advantage comes from the retriever」)。原文:阅读器与 PRO-ConvQA 相同,优势来自基于精选历史+对比学习的检索器。

  11. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 168 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:168,搜「contrastive loss for facial」)。原文:早期对比学习工作计算人脸识别的对比损失。

  12. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 281 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:281,搜「minimum distance」)与第 99–100 段(搜「positive sample」:含答案段落为正样本)。损失函数(负对数似然)在公式 5.4(第 287–288 段)。

  13. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 297 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:297,搜「in-batch negatives」)。批内互用金标段落、每题 B−1 个负样本在第 307–308 段(搜「B training instances」);降低算力负担的说法在第 306 段(搜「lowers the computation burden」)。

  14. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」Table 5.2(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:433,搜「OR-QuAC」)。OR-QuAC 各行在第 434–440 段(DPR-ConvQA 80.1/68.4/39.9/34.2/1.9 在第 440 段);TopiOCQA 各行在第 442–446 段。Recall/MRR 的用途在第 384 段(搜「Recall and MRR」)。

  15. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 549 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:549,搜「grows longer」)。原文:对话越长,历史依赖越难解决,各模型精度下滑。

  16. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 478–483 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:478,搜「better than the Topi」)。原因=TopiOCQA 频繁话题切换,整段上下文不适合其任务定义;OR-QuAC 话题稳定所以模型表现好。

  17. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 517 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:517,搜「Politkovskaya」)。原文:DrQA 的检索落在无关段落中间,图引导与历史答案模型更靠近相关段落。

  18. 出处:「CHAPTER 5: History Modeling for Open-Domain Conversational Question Answering」第 360 段(text/18-ch05-chapter-5-history-modeling-for-open-domain-conve.txt:360,搜「P100」)。

  19. 补充(不在书里,依据我们的 frontier 书架):RAG 的通行定义。依据: shelf=ai-frontier-reference/ragas#index.md 事实=ragas 文档把 RAG 定义为「先从知识库检索相关片段,再让 LLM 基于这些片段作答」,并指出其两大失败模式对应忠实度等评测指标。

  20. 补充(不在书里,依据我们的 agent 书架):现代 RAG 引擎的组件构成。依据: shelf=ai-agent-reference/dsrag#04-pluggable-components.md 事实=dsrag 的默认组件插槽包含 Embedding(把文本变成向量)与 Reranker(对初排结果重新打分)等可插拔件,即「稠密向量检索+重排」仍是当代 RAG 的标准骨架。