想象一下你正在和朋友聊电影。你问: “谁导演了《盗梦空间》?”他们回答: “克里斯托弗·诺兰。”然后你问: “他还拍过什么电影?”
对人类来说,“他”显然指的是克里斯托弗·诺兰。但对标准搜索引擎来说,“他”这个指代是模棱两可的。这就是对话式搜索面临的根本挑战。用户自然地使用代词、省略号和依赖上下文的措辞,并假设系统能记住对话的历史。
传统上,搜索系统通过使用“改写器 (Rewriter) ”来处理这个问题——这是一个独立的模型,在搜索之前将“他还拍过什么电影?”翻译成“克里斯托弗·诺兰导演过什么电影?”。虽然有效,但这二步过程速度慢且计算成本高昂。
在中国人民大学及其合作者最近发表的一篇论文中,研究人员提出了 ChatRetriever 。 该模型完全跳过了改写步骤。相反,它调整了一个大型语言模型 (LLM) 直接充当密集检索器 (dense retriever),从而原生理解复杂的对话上下文。
在这篇文章中,我们将拆解 ChatRetriever 的工作原理,支持它的名为 CSIT 的新颖训练方法,以及为什么这可能代表了搜索的未来。
问题所在: 准确性与效率的权衡
在对话式搜索中,通常分为两大阵营:
- 对话式查询改写 (Conversational Query Rewriting, CQR): 使用 LLM 将用户的问题改写为独立的查询。
- *优点: * 非常准确,因为 LLM 很擅长理解上下文。
- *缺点: * 延迟高。在开始搜索之前,你必须先生成文本。
- 对话式密集检索 (Conversational Dense Retrieval, CDR): 使用专门的编码器将对话历史直接转换为向量 (一串数字) ,并搜索匹配的文档。
- *优点: * 非常快 (端到端检索) 。
- *缺点: * 历史上,与 LLM 相比,这些模型在处理复杂、长尾对话方面表现挣扎。
研究人员提出了一个关键问题: 我们能否利用 LLM 的原始能力,强制其充当密集检索器,从而结合第一阵营的准确性与第二阵营的速度?

如图 1 所示,目标是从上面的方法 (提示 LLM 进行改写) 转向下面的方法 (调整 LLM 以直接输出嵌入) 。
解决方案: ChatRetriever
为了创建 ChatRetriever,作者并没有简单地在搜索数据上微调 LLM。他们引入了一种称为对比式会话掩码指令微调 (Contrastive Session-Masked Instruction Tuning, CSIT) 的双重学习方法。
这种方法解决了一个特定问题: 现有的基于 LLM 的检索器通常是在简单的单轮指令上训练的。它们缺乏将冗长、混乱的对话压缩成精确搜索向量的“肌肉记忆”。
ChatRetriever 修改了一个 LLM (本文中特指 Qwen-7B-Chat) 以输出对话会话的向量表示。为了做到这一点,他们在输入末尾追加了特殊标记——[EMB]。这些标记的内部状态就变成了“搜索查询”。
训练包含两个同时进行的目标。
1. 对比指令微调 (Contrastive Instruction Tuning)
第一个目标在密集检索领域是很标准的。模型查看对话会话 (\(x\)) 和相关段落 (\(y^+\))。它试图最大化它们的向量表示之间的相似度,同时最小化与不相关段落 (\(y^-\)) 的相似度。
损失函数如下所示:

这里,\(\phi(x,y)\) 计算会话与段落之间的相似度得分。这教会模型区分好的和坏的搜索结果。
然而,仅靠对比学习是不够的。LLM 本质上是生成模型;简单地强迫它们对段落进行排序,往往会导致其过拟合于简单的关键词,而不是深入理解对话流。这就引出了第二个更具创新性的目标。
2. 会话掩码指令微调 (Session-Masked Instruction Tuning) —— “秘方”
作者提出了一种技术,迫使 LLM 将对话历史完全“消化”进其嵌入标记中。
通常,LLM 基于所有之前的词来预测下一个词。在会话掩码指令微调中,研究人员向模型提供会话历史、特殊 [EMB] 标记和目标回复。
关键转折: 当模型试图预测回复标记 (\(y^+\)) 时,研究人员掩盖了原始会话文本 (\(x\)) 。

看图 2 右侧的“会话掩码注意力矩阵 (Session-Masked Attention Matrix)”。
- 会话 (Session) 标记可以看到彼此 (标准做法) 。
- 回复 (Response) 标记 (底部的蓝色方块) 不能 回顾会话标记 (白色方块) 。它们只能看到特殊标记 (Special Tokens) (绿色方块) 。
这强制形成了一个瓶颈。因为模型在生成回复时无法“作弊”去查看对话历史中的具体单词,它必须将所有必要的语义信息压缩到那些特殊的 [EMB] 标记中。如果 [EMB] 标记不能完美地代表用户的意图,模型将无法重构回复。
输入序列的结构如下:

该目标的损失函数确保在仅给定特殊标记的情况下,最大化回复的概率:

组合目标
最终的训练配方结合了这两个概念。模型学会对段落进行正确排序 (对比损失) ,同时学会将对话历史压缩成密集向量 (会话掩码损失) 。

超参数 \(\alpha\) 平衡了这两个目标。这种双重方法将 LLM 从文本生成器转变为功能强大的“ChatRetriever”。
实验结果
这种复杂的训练真的有效吗?研究人员在五个标准基准 (CAsT-19, CAsT-20, CAsT-21, QReCC, 和 TopiOCQA) 上,将 ChatRetriever 与广泛的基线模型进行了对比测试。
基线模型包括:
- 对话式查询改写 (CQR): T5QR, ConvGQR, 以及基于 LLM 的改写器。
- 对话式密集检索 (CDR): ConvDR, LeCoRE。
- 基于 LLM 的检索器: RepLLaMA, E5-mistral。
主要性能

表 1 揭示了几个主要发现:
- CDR 领域的 SOTA: ChatRetriever (最底行) 显著优于所有其他对话式密集检索方法 (如 ConvDR 和 LeCoRE) 。
- 匹敌 LLM 改写器: 历史上,密集检索器落后于 LLM 改写方法 (如 LLM4CS) 。ChatRetriever 缩小了这一差距,达到了与最佳改写技术相当的性能,在某些情况下甚至更好。
- 通用 LLM 检索器表现不佳: 注意通用的 LLM 检索器如 RepLLaMA 和 E5_mistral (它们在标准搜索上表现良好) 在对话数据集上表现挣扎。这证明了特定的对话微调是必要的。
需要多少数据?
你可能认为训练一个 70 亿参数的模型需要海量数据。令人惊讶的是,ChatRetriever 很快就变得有效了。

如图 3 所示,模型性能 (以 NDCG@3 衡量) 在仅仅 500 到 1000 个训练步数内就有效提升。这表明“知识”已经在 LLM 内部;CSIT 方法只是为了检索而有效地对齐它。
消融研究: 我们需要掩码吗?
为了证明“会话掩码”组件是必要的,作者进行了消融研究。

- w/o SIT (无 SIT): 去除会话掩码指令微调导致所有数据集上的准确率显著下降。
- w/o R-CoT (无 R-CoT): 去除“表示性思维链 (Representational Chain of Thought)” (使用多个
[EMB]标记而不是仅一个) 也会损害性能。 - Vanilla IT (普通 IT): 用标准的指令微调代替掩码策略比什么都不做要好,但仍然不如掩码方法。
这证实了强制瓶颈——让模型仅依赖嵌入标记来生成回复——对于获得高质量的表示至关重要。
鲁棒性评估
现实世界的对话是混乱的。用户会改变话题、给出模糊的反馈或修改他们的约束条件。作者不仅在静态数据集上进行了测试;他们还模拟了“嘈杂”的对话来测试鲁棒性。
他们通过两种方式修改上下文:
- 部分回复修改: 逐轮生成新的回复,以模拟偏离的对话。
- 全上下文修改: 使用 ChatGPT 完全重写对话历史,同时保持搜索意图不变。
在这两种场景下,与其他密集检索器相比,ChatRetriever 展现出了最高的稳定性 (性能标准差最低) 。它在处理多变的措辞方面表现得非常像 LLM 改写器,但保留了检索器的架构。
结论
ChatRetriever 代表了对话式搜索向前迈出的重要一步。通过直接调整 LLM 用于检索,我们在不牺牲理解能力的情况下绕过了查询改写的延迟。
其核心创新——对比式会话掩码指令微调 (CSIT)——为如何将生成模型转化为表示模型提供了蓝图。它迫使模型将其推理压缩为向量形式,从而产生一个像聊天机器人一样“思考”但像密集检索器一样“搜索”的系统。
对于信息检索领域的学生和研究人员来说,这篇论文凸显了一个明显的趋势: “生成”与“检索”之间的界限正在变得模糊。未来的搜索引擎可能不仅仅是查找关键词;它们将利用 LLM 潜在的推理能力,一次性理解用户会话的整体。
](https://deep-paper.org/en/paper/2404.13556/images/cover.png)