
1. 项目概述当搜索代理学会“提问”想象一下你正在和一个智能助手对话想找一部“适合周末晚上看、有点感人但别太悲伤的电影”。传统的搜索引擎可能会给你一堆关键词匹配的结果比如“感人电影推荐”。但一个真正智能的、具备“代理”能力的对话式搜索系统应该能意识到你的需求是模糊的——什么叫“有点感人但别太悲伤”这时它不应该直接给出一个可能不准确的答案而是应该主动“提问”来澄清“您指的是像《绿皮书》那种温暖感人的还是《寻梦环游记》那种亲情主题但结局积极的” 这个判断“何时需要提问”的能力就是“澄清需求预测”的核心。我这次参与的“CIR at iKAT SCAAI 2026”项目正是聚焦于探索智能体对话式搜索中的这一关键环节。CIR通常指“对话信息检索”而iKAT SCAAI是一个专注于信息检索、知识图谱与人工智能前沿交叉领域的国际研讨会。我们的目标不是构建一个完整的对话系统而是深入剖析并优化其中“代理”决定是否发起澄清的决策机制。这听起来像是一个狭窄的技术点但实际上它直接决定了对话式搜索体验的流畅度与效率。一个过于“腼腆”、从不提问的代理会因误解用户意图而提供无关信息而一个“喋喋不休”、事事都要确认的代理则会严重拖慢交互进程让用户感到烦躁。我们的工作就是在两者之间找到那个精准的平衡点。2. 核心思路与方案选型从规则到学习的演进在项目初期我们系统回顾了澄清需求预测的几种主流思路。这不仅仅是技术选型更是对问题本质的理解过程。2.1 传统规则与启发式方法最直观的方法是设定规则。例如当用户查询中包含模糊性词汇如“好的”、“便宜的”、“最近的”或检测到指代不明如“它”、“那个”时系统触发澄清。我们实现了一个基于依存句法分析和关键词词典的基线系统。这种方法实现简单、可解释性强在封闭领域或句式固定的场景下如客服机器人有一定效果。然而在实际的开放域对话式搜索中我们很快发现了规则的局限性。首先模糊性不仅存在于词汇层面更存在于语义和上下文层面。用户说“我想了解人工智能”这看似明确但如果对话历史显示他之前一直在问“机器学习工程师的薪资”那么当前的查询可能隐含了“职业影响”或“技术趋势”的细分意图是否需要澄清取决于代理是否掌握了足够多的用户画像和上下文。其次规则难以量化“澄清的紧迫性”。有些模糊性无关紧要比如“好看的电影”系统可以直接推荐热门影片有些则至关重要比如“治疗头痛的药”模糊的剂量或病因可能带来风险。2.2 基于监督学习的预测模型为了克服规则方法的僵化我们转向数据驱动的监督学习。核心思路是将“是否需要澄清”定义为一个二分类任务。模型的输入是丰富的上下文特征输出是一个0到1之间的概率表示发起澄清的必要性。我们构建的特征工程涵盖了多个维度查询特征长度、词性分布、是否包含疑问词、情感极性、命名实体识别结果。对话历史特征当前轮次、历史对话的语义连贯性通过句子嵌入的余弦相似度计算、用户已表达意图的明确性。检索结果特征这是关键一环。我们模拟代理行为将当前用户查询输入到一个检索模块如基于BM25或稠密检索的模型获取top-K个候选文档。然后计算这些结果的一致性Top结果之间的语义相似度。如果高度一致说明查询意图可能明确如果差异很大则暗示模糊性。置信度检索模型给出的分数分布。如果最高分遥遥领先可能无需澄清如果前几名分数接近则意图存在歧义。覆盖度检索结果是否能覆盖查询中的所有关键概念。我们尝试了逻辑回归、随机森林和梯度提升树等经典模型。例如随机森林模型能够给出特征重要性排序我们发现“检索结果一致性”和“查询中模糊词数量”是最重要的两个特征。监督学习方法显著提升了预测的准确性但它严重依赖于高质量标注数据——即需要大量人工标注的对话片段来指明在某个特定点“应该”或“不应该”澄清。2.3 引入强化学习与离线用户模拟监督学习假设存在一个“标准答案”但在动态对话中是否澄清的决策会影响后续整个对话走向其长期收益无法通过单点标注来体现。这就引向了强化学习。我们将对话过程建模为一个马尔可夫决策过程状态当前对话上下文、用户查询、检索结果特征等。动作两个核心动作——发起澄清或直接回答。奖励这是设计的难点。我们定义了分层奖励信号短期奖励如果选择直接回答则根据后续用户是否立刻进行修正或表达不满如“不对我不是这个意思”给予负奖励如果用户接受答案或继续深入提问则给予正奖励。长期奖励衡量整个对话任务是否成功完成例如用户最终找到了满意的信息或产品以及对话轮次的效率鼓励用更少的轮次完成任务。由于在线与真人交互训练成本极高我们采用了离线用户模拟器进行训练。模拟器基于一定的用户行为模式例如面对模糊回答时有一定概率提出修正与智能体进行多轮对话生成大量的交互轨迹。我们使用离线强化学习算法如保守Q学习从这些轨迹中学习最优的澄清策略。这种方法让代理学会了“战略性提问”——有时即使当前查询有些模糊但如果根据历史判断用户可能自己会在下一步明确或者模糊点对最终目标影响不大代理会选择暂不提问以保持对话流畅。注意离线强化学习的关键在于模拟器的真实性。如果模拟器与真实用户行为偏差过大学到的策略可能在真实场景中失效。我们采用了一种混合方法用少量真人对话数据对模拟器进行校准。最终我们的方案是一个混合架构一个基于轻量级监督学习模型的“快速判断层”作为前置过滤器结合一个基于强化学习的“深度决策层”处理复杂、多轮的对话场景。快速判断层处理掉大部分明显需要或不需要澄清的简单情况深度决策层则专注于那些处于模糊地带的“高价值决策点”以此平衡系统响应速度与决策质量。3. 模型核心细节与实现要点我们选择了以Transformer为基础的预训练语言模型作为核心特征提取器和语义理解模块具体使用了DeBERTa的变体因为它对上下文依赖和细微语义差异捕捉得较好。3.1 状态表示编码状态S_t在时间步t的编码是我们模型的信息基础。我们不是简单拼接特征而是构建了一个分层编码结构# 伪代码示意状态编码流程 def encode_state(user_query, dialog_history, retrieved_docs): # 1. 文本编码层 query_embedding language_model(user_query) # [CLS] token作为查询表示 history_embeddings [language_model(utterance) for utterance in dialog_history[-3:]] # 保留最近三轮 doc_embeddings [language_model(doc[:128]) for doc in retrieved_docs[:5]] # 取前5个文档片段 # 2. 对话历史聚合使用注意力机制 history_context attention_pooling(history_embeddings, query_embedding) # 3. 检索结果特征计算层 doc_similarity_matrix cosine_similarity(doc_embeddings) # 计算文档间一致性 consistency_score 1 - doc_similarity_matrix.std() # 一致性得分标准差越小越一致 confidence_gap retrieved_scores[0] - retrieved_scores[1] # 置信度差距 # 4. 特征融合层 numerical_features [consistency_score, confidence_gap, query_length, ...] combined_representation concatenate( query_embedding, history_context, mean_pooling(doc_embeddings), numerical_features ) return combined_representation这个编码过程确保了模型能同时理解语义内容、对话结构和检索系统反馈的量化信号。3.2 动作空间与策略网络动作空间很简单就是{澄清 回答}。但“澄清”动作本身需要生成澄清问题。我们采用了分离式设计策略网络只负责做出“是否澄清”的二元决策如果决策是澄清则触发一个独立的、基于序列到序列模型的澄清问题生成模块。该生成模块以当前状态S_t为条件生成一个自然语言问题如“您能具体说明一下‘性价比高’指的是价格范围还是功能配置吗”策略网络是一个多层感知机输入是编码后的状态向量输出是每个动作的Q值在强化学习中或直接是动作概率在监督学习中。class PolicyNetwork(nn.Module): def __init__(self, state_dim, hidden_dim): super().__init__() self.fc1 nn.Linear(state_dim, hidden_dim) self.fc2 nn.Linear(hidden_dim, hidden_dim) self.fc3 nn.Linear(hidden_dim, 2) # 输出两个动作的Q值 def forward(self, state): x F.relu(self.fc1(state)) x F.relu(self.fc2(x)) q_values self.fc3(x) return q_values3.3 奖励函数设计的艺术奖励函数R(S, A)是强化学习的指挥棒。我们经过多次迭代设计了一个复合奖励函数R R_task α * R_efficiency β * R_engagement任务完成奖励在对话结束时计算。如果用户模拟器反馈任务成功例如找到了目标信息R_task 10否则为-5。效率奖励R_efficiency -0.1 * (当前轮次)。这是一个微小的负奖励鼓励代理用更少的轮次完成任务避免不必要的闲聊或过度澄清。参与度奖励这是一个即时奖励。如果代理选择直接回答后用户的下一轮回应是积极的如“谢谢这正是我想要的”或继续追问相关细节则R_engagement 1如果用户表现出困惑或负面反馈如“不对”、“我不是问这个”则R_engagement -2。这教会了代理预测用户反应。超参数α和β需要仔细调优。我们最初设置了α0.5, β1.0结果发现代理变得过于“功利”倾向于过早给出可能不准确的答案以快速结束对话。后来调整为α0.2, β1.5更强调交互质量代理学会了在关键节点上进行有价值的澄清。4. 训练、评估与离线实验流程4.1 数据准备与模拟器构建我们使用了公开的对话式搜索数据集如MSDialog、CAsT作为基础。但其中明确标注“澄清需求”的数据不多。我们采取了以下步骤数据清洗与增强过滤掉质量差的对话并通过回译等方法对查询进行同义改写增加模糊性查询的样本。弱监督标注我们设计了一套启发式规则结合检索结果的不确定性如top-5结果熵值高和后续用户的修正行为自动为对话片段打上“需要澄清”的伪标签。虽然噪声较大但为模型提供了初步的学习信号。用户模拟器我们基于BERT构建了一个简单的下一轮用户响应预测模型。模拟器根据当前代理的回应澄清或回答结合一个预设的用户目标隐藏在模拟器内部生成可能的用户回复如“接受答案”、“请求澄清”或“提供更多细节”。4.2 分层训练策略我们的训练是分阶段进行的监督预训练使用弱监督标注的数据训练一个二分类的监督学习模型。这个模型作为策略网络的“热身”起点也作为混合架构中的“快速判断层”。离线强化学习微调将预训练好的策略网络加载到强化学习框架中。我们使用模拟器生成数百万条对话轨迹采用Double DQN算法进行训练以缓解Q值过高估计的问题。经验回放缓冲区存储(S, A, R, S)元组从中采样进行训练。策略蒸馏强化学习训练出的策略网络可能很复杂。为了部署效率我们尝试将强化学习策略“蒸馏”到一个更小的监督学习模型中即用强化学习策略在大量状态上的决策作为标签来训练一个轻量级网络。4.3 评估指标超越准确率对于澄清需求预测不能只看分类准确率。我们建立了一套多维评估体系评估维度指标说明决策质量精确率、召回率、F1值针对“需要澄清”这个正类衡量模型预测的准确性。对话效率平均对话轮次完成一个搜索任务所需的平均交互次数。理想情况下好的澄清能减少总轮次。任务成功率任务完成率在测试对话中最终成功满足用户需求的比例。用户体验模拟用户满意度通过预设规则或事后人工评估对对话流畅性和帮助性打分。我们与多个基线模型进行了对比实验Baseline 1: 规则模型基于模糊词和指代消歧。Baseline 2: 监督学习模型仅使用我们特征工程的随机森林。Baseline 3: 随机策略以固定概率如0.3发起澄清。Ours: 混合强化学习模型我们的最终方案。实验结果表格显示我们的模型在任务成功率和用户体验上显著优于基线同时在对话轮次上保持中等水平说明其澄清是有效而非冗余的。5. 实战中的挑战与调优心得在实际开发和实验过程中我们遇到了不少预料之外的问题也积累了一些宝贵的经验。5.1 模糊性的程度与类型最初我们将“模糊性”视为一个整体。但后来发现模糊性至少可以分为两类概念模糊用户查询本身概念不清晰如“好的笔记本电脑”。这通常需要澄清。上下文依赖模糊查询本身清晰但结合对话历史或用户背景后产生歧义。例如用户之前问过“Python入门书”现在问“有进阶的吗”。这里的“进阶”是相对“入门”而言的对于已掌握上下文的代理可能无需澄清但对于一个新加入的代理就必须提问。我们的解决方案是在状态编码中显式地加入了“查询与历史对话的关联度”以及“历史对话中已提及概念的明确性”这两个特征帮助模型更好地区分这两种情况。5.2 澄清问题本身的质量预测到需要澄清只是第一步生成一个“好”的澄清问题同样关键。一个糟糕的澄清问题如“您能再说清楚点吗”会让用户感到沮丧。我们训练澄清生成模块时除了标准的序列生成损失还增加了一个“信息增益”奖励。即生成的澄清问题应能最大程度地缩小检索结果的范围。我们使用生成澄清后、假设用户给出理想回答时检索结果列表的熵值减少量作为辅助奖励信号引导生成模块提出更具区分性的问题。5.3 冷启动与数据偏差问题在对话开始时历史上下文为空模型主要依赖查询特征和初始检索结果。这时模型容易倾向于“保守”即不发起澄清因为缺乏足够的歧义证据。这可能导致在第一个用户查询就非常模糊时错失良机。我们通过在训练数据中增加“首轮模糊查询”的样本比例并在状态表示中为缺失的对话历史添加一个可学习的“空状态”嵌入来缓解这个问题。此外训练数据往往来自特定领域如技术问答模型可能学会该领域特有的澄清模式而在迁移到生活娱乐等领域时表现下降。我们采用了领域对抗训练的技巧在模型中间层添加一个领域分类器并让主网络学习生成领域不变的特征表示以提升泛化能力。5.4 在线学习与安全边界一个理想的系统应该能在与真实用户交互中持续学习。我们设计了一个简单的在线学习框架当用户对代理的回答给出明确的正面或负面反馈如点赞/点踩时该轮交互的(S, A)对被赋予相应的奖励/惩罚并存入一个优先经验回放缓冲区定期用于微调模型。重要提示在线学习必须设置严格的安全边界。我们设定了一个“置信度阈值”只有策略网络输出的澄清或回答动作概率高于某个阈值如0.8时才会执行该动作。对于概率处于中间模糊地带如0.4-0.6的情况系统会fallback到一个预设的安全策略比如给出一个包含多种可能性的概括性回答并委婉地邀请用户补充信息而不是强行做出可能出错的二元决策。6. 未来展望与可扩展方向虽然项目取得了阶段性成果但智能体对话式搜索中的澄清需求预测仍是一个充满挑战的开放性问题。我们认为后续可以从以下几个方向深入个性化澄清策略当前的模型对所有用户一视同仁。未来可以引入用户画像如专业程度、交互风格实现个性化的澄清阈值。对于专家型用户代理可以更“大胆”地直接给出专业答案对于新手用户则可能需要更“谨慎”地多问几句。多模态情境理解在未来的搜索场景中用户输入可能不仅是文本还包括图片、语音甚至屏幕截图。如何融合多模态信息来判断澄清需求例如用户上传了一张模糊的产品图片并问“这个怎么样”将是一个全新的课题。基于大语言模型的端到端重构随着大语言模型在对话和理解能力上的飞跃或许可以探索用提示工程或微调的方式让LLM直接承担“是否澄清”的决策以及“如何澄清”的生成。但这需要解决LLM的延迟、成本以及决策可解释性等问题。长期偏好学习系统可以记忆用户对以往澄清的反馈学习该用户的长期偏好。例如如果某个用户多次对关于“价格”的澄清表现出不耐烦系统在未来遇到价格模糊时可能会选择直接展示一个价格范围而非提问。这个项目让我深刻体会到构建一个真正智能的对话系统其难点往往不在于回答得有多“准”而在于懂得何时该“问”。一次恰到好处的提问远比十次精准但非所问的回答更能体现智能。我们目前的工作就像是在教一个聪明的助手学会“倾听”和“察言观色”而这仅仅是迈向自然、高效人机对话的第一步。在实验记录里我特意标注了一条“当模型在某个测试案例上选择‘不澄清’并成功引导对话结束时其成就感不亚于它正确回答了一个难题。”这或许就是智能体交互研究的魅力所在——它开始触及沟通的本质。