在美食界,有一种神秘的职业——餐厅评审员。他们隐姓埋名走进餐厅,不能只点一道菜就交差,而是要从前菜、主菜到甜点,品尝完一整场服务:服务员如何理解需求、如何应对顾客临时改口、如何补上遗漏的信息,最后才给出一个综合分数。这套“整套晚宴”的评审思路,恰是对话式搜索评估的精髓。传统搜索只看“单次查询”这一道菜,而对话式搜索里,用户会多轮追问、澄清、修正,每一轮的答案都在前一轮的对话上生长。所以评估也必须升级:既要看整段对话是否成功,也要看每一轮的信息如何累积、功劳该归于何方,还要保证打分尺子足够稳、评估者足够专业。接下来的旅程,会像带领你成为一名训练有素的神秘顾客一样,逐层拆开对话式搜索评估的七个关键环节:评估范式如何转变、对话级 NDCG 怎么算、会话成功率如何定义、人工评估协议怎样搭建、自动模拟器如何辅助、归因问题如何破解、指标敏感性如何检验。

岗位关联

掌握对话式搜索评估,你就能在真实产品迭代中用可靠的标尺判断检索系统好坏,避免被单轮指标的假象误导,这是从事搜索、对话式推荐与大模型 RAG 评估的核心技能。

目录
  1. 可视化演示
  2. 从单道菜到整套晚宴——评估范式转变
  3. 对话级NDCG——把整套晚宴排成一部乐章
  4. 会话成功率——有没有让顾客满意离席?
  5. 人工评估协议——神秘顾客也要先校准味蕾
  6. 自动评估模拟器——练兵千遍的机器人食客
  7. 归因问题——这顿成功的饭,到底该谢谁?
  8. 指标敏感性——打分尺子本身稳不稳?
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

通过多轮NDCG累积曲线、分层评估指标体系和人工vs自动评估雷达图,展示对话式搜索评估的核心维度与方法对比。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+captions.ndcg+'

从单道菜到整套晚宴——评估范式转变

想象你是一家米其林餐厅的神秘顾客。过去的评审方式是“单道菜打分”:点一道、吃一道、记一个分数,最后把分数简单平均。可现在你发现,真正决定一顿饭成败的,是服务员与你之间一整套你来我往的互动——你最初说“想吃海鲜”,尝了前菜后改口“不要太腥”,随后又问侍酒师配什么酒。每一道菜的体验都建立在前面所有对话的铺垫之上。如果只评单道菜,你根本尝不出主厨真正的功底。

对话式搜索评估面对的正是同样的困境。传统信息检索用 NDCG@10、MAP 这类“单轮指标”,每次查询独立计算返回列表的相关性;但对话式搜索里,用户会多轮追问、澄清意图、修正错误,第五轮的问题往往只有在看过前四轮答案后才能被理解。评估的粒度因此必须从“单次查询”上升到“整段会话”。

多轮累积效果要求指标能捕捉跨轮依赖:比如用户先说“附近的咖啡馆”,再补充“要安静能办公的”,每一轮的检索质量都受上下文影响。对话质量维度则进一步分解为流畅性(轮与轮衔接自然)、连贯性(不跑题)、信息增量(新回答是否提供了新知识)以及最终满意度。传统单轮 NDCG 只能看到片段:

可以看到,单轮 NDCG 就像给每道菜独立打分——它不知道前菜里那句“不要太腥”对主菜选择的影响。真正要当好神秘顾客,必须把整场对话当作一部连续剧场,从第一句开场白到最后的确认回复,统一记录、统一评审。接下来我们引入的第一把“整餐尺子”,就是对话级 NDCG。

NDCG@K=1ZK∑k=1K2relk−1log⁡2(k+1)NDCG@K = \frac{1}{Z_K} \sum_{k=1}^{K} \frac{2^{rel_k} - 1}{\log_2(k + 1)}
这个公式衡量“单次查询”的排序质量:排得越靠前、相关性越高,得分越高;但它看不见前一轮说过什么。
  1. 相关性收益相关性越高的文档,其收益随 $2^{rel_k}$ 指数增长,保证高相关性文档获得压倒性优势。
    2relk−12^{rel_k} - 1
  2. 位置惩罚排名 k 越靠后,$\log_2(k+1)$ 越大,收益被稀释得越厉害,鼓励系统把好东西放前面。
    log⁡2(k+1)\log_2(k + 1)
  3. 归一化因子$Z_K$ 用理想排序的总收益做分母,把任意长度的查询分数压到 0~1 之间,便于跨查询比较。
    1ZK∑k=1K2relk−1log⁡2(k+1)\frac{1}{Z_K} \sum_{k=1}^{K} \frac{2^{rel_k} - 1}{\log_2(k + 1)}

对话级NDCG——把整套晚宴排成一部乐章

既然不能给每道菜独立打分,那怎么给整套晚宴打分呢?有经验的评审官会设计一套“时段权重”:开胃菜虽然重要,但它不该与主菜拥有同等分量;而甜点作为收尾,影响的是整体印象。越靠后出现的美味,带来的边际惊喜应当越小——毕竟你已经半饱了,惊喜感天然递减。

对话级 NDCG(Conversational NDCG,简称 ConvNDCG)就是这个思路的数学化。它先把一段对话按“轮”切分成时间序列,再让每一轮的收益随轮次位置递减,最后与理想的轮次收益序列做归一化。这样,指标会天然惩罚“前期拖沓、后期才出结果”的系统,鼓励系统在前几轮就给出高质量信息。

形式上,ConvNDCG 与单轮 NDCG 很相似,但累加单位从“文档排名位置”换成了“对话轮次”:

神秘顾客拿到这份加权乐谱,就能一眼看出系统是不是“慢热”:如果前几轮始终答非所问、直到最后一道甜点才端上主菜,ConvNDCG 会把分数狠狠压下去。这正是整套晚宴评审的第一把尺子。

ConvNDCG@T=∑t=1T2rt−1log⁡2(t+1)∑t=1T2rt∗−1log⁡2(t+1)\mathrm{ConvNDCG@T} = \frac{ \sum_{t=1}^{T} \frac{2^{r_t} - 1}{\log_2(t + 1)} }{ \sum_{t=1}^{T} \frac{2^{r_t^*} - 1}{\log_2(t + 1)} }
分子是“实际对话中每轮收益的加权和”,分母是“理想对话中每轮收益的加权和”,分数越接近 1 说明对话效率越高。
  1. 多轮累计从第 1 轮到第 T 轮,把每轮的相关性收益 $2^{r_t}-1$ 累加起来,体现整段对话的累积信息量。
    ∑t=1T2rt−1log⁡2(t+1)\sum_{t=1}^{T} \frac{2^{r_t} - 1}{\log_2(t + 1)}
  2. 位置衰减$\log_2(t+1)$ 作为分母,让越靠后的轮次收益权重越低,符合“越早给出准确答案越有价值”的直觉。
    log⁡2(t+1)\log_2(t + 1)
  3. 理想归一化$r_t^*$ 表示把各轮收益按理想顺序重排之后的评分,分母用于将分数压缩到 0~1,使不同长度的对话可比较。
    ∑t=1T2rt−1log⁡2(t+1)∑t=1T2rt∗−1log⁡2(t+1)\frac{ \sum_{t=1}^{T} \frac{2^{r_t} - 1}{\log_2(t + 1)} }{ \sum_{t=1}^{T} \frac{2^{r_t^*} - 1}{\log_2(t + 1)} }

会话成功率——有没有让顾客满意离席?

哪怕每道菜都有滋有味,神秘顾客心里始终揣着那个终极问题:这一餐,到底算不算成功?如果顾客最后没吃饱、不满意,前面所有精致的摆盘都可能变成减分项。会话成功率就是这样一个“一锤定音”的总判。

在对话式搜索中,任务完成判定通常看用户最终是否明确表示“找到答案了”或系统是否完成了用户的目标;更进一步,成功定义可以包含用户满意度——比如用户是否表达了感谢、是否不再追问。会话成功率(Conversational Success Rate,CSR)统计的正是“整个对话成功”的比例,而非某轮的成功比例。

神秘顾客的评审表第一栏,就该盖这枚“成功印章”。但光有印章还不够——成功率不会告诉你“是哪一轮力挽狂澜,又是哪一轮差点把整顿饭搞砸”。这就引出了多轮评估里最烧脑的归因问题,我们留到第六节再拆解。

CSR=1N∑i=1NI[ ci=1 ]\mathrm{CSR} = \frac{1}{N} \sum_{i=1}^{N} \mathbb{I}[\,c_i = 1\,]
把 N 段对话中任务成功($c_i=1$)的比例算出来,就是会话成功率,取值在 0~1 之间。
  1. 成功标记$c_i$ 表示第 i 段对话目标是否达成,达成记 1,否则记 0;指示函数 $\mathbb{I}$ 把“成功”转化为可累加的数字。
    I[ ci=1 ]\mathbb{I}[\,c_i = 1\,]
  2. 平均比例对所有 N 段对话求和再除以 N,即得整个测试集上的成功率。
    1N∑i=1NI[ ci=1 ]\frac{1}{N} \sum_{i=1}^{N} \mathbb{I}[\,c_i = 1\,]

人工评估协议——神秘顾客也要先校准味蕾

一家餐厅不会被单个神秘顾客的舌头判定生死。餐厅总部会派出一个小分队,他们先一起“校准味蕾”:组织者拿出标准案例,示范“什么叫五分、什么叫三分”,直到所有人对同一道菜给出接近的打分,才开始正式探店。

对话式搜索的人工评估协议同样由三步组成:评估员培训(熟悉任务定义、常见失败模式、评分标准)、评分量表设计(通常用 5 点或 7 点 Likert 量表评价相关性、连贯性、总体满意度)、一致性检验(用 Kappa 系数确保多位评估员的打分彼此吻合)。

一致性检验中最常用的是 Cohen's Kappa:

只有味蕾校准过的神秘顾客分队,他们的评分才配写进结论里。同理,对话评估报告若拿不出 Kappa 值,审稿人和产品经理都有权质疑:“这分是谁拍的脑袋?”

κ=po−pe1−pe\kappa = \frac{p_o - p_e}{1 - p_e}
$\kappa$ 越大说明评估员打分越一致,一般认为 0.6 以上才可接受,0.8 以上为优秀。
  1. 观测一致率$p_o$ 是两位评估员实际打分完全相同的比例,直接反映表面的吻合程度。
    pop_o
  2. 偶然一致率$p_e$ 是两人完全随机乱猜时也会碰巧一致的期望比例,作为“运气基线”。
    pep_e
  3. 修正偶然后的一致性$\frac{p_o - p_e}{1 - p_e}$ 排除运气成分后,剩下的“真正一致”占最大可能改进空间的比例,因此比简单的准确率更可靠。
    po−pe1−pe\frac{p_o - p_e}{1 - p_e}

自动评估模拟器——练兵千遍的机器人食客

请一队人类神秘顾客去试吃几千顿晚餐,成本高得吓人。于是大老板想出一个办法:训练一群“机器人食客”,它们按剧本点菜、提问、改口,在电脑里把上百万次晚餐服务跑完,先筛出明显不合格的餐厅,再派人类食客去精评。

自动评估模拟器正是这么做的。用户模拟器(User Simulator)用规则或生成模型模拟人类在对话中的行为(提问、澄清、确认、放弃),交互轨迹生成器负责让模拟器和待测系统反复对话,指标自动计算模块随后跑一遍 ConvNDCG、CSR 等指标。整套流程可以在几小时内完成几千次对话,极大加速系统迭代。

一个简单的用户模拟器可用逻辑回归建模“下一轮用户是否满意”的概率:

机器人食客毕竟只能模拟“按剧本演戏”的顾客,真实人类会有天马行空的脑回路。所以行业惯例是“模拟器粗筛 + 人工精评”双层漏斗——先让机器人食客跑量,再让人类神秘顾客拍板。

r^t=σ(w⊤ht+b)\hat{r}_t = \sigma\big( \mathbf{w}^\top \mathbf{h}_t + b \big)
$\hat{r}_t$ 是模拟器预测的第 t 轮收益,$\mathbf{h}_t$ 是截至 t 轮的对话状态向量。
  1. 状态编码对话状态向量 $\mathbf{h}_t$ 把前 t 轮的用户问题与系统回答压缩成一个固定长度向量,供模型读取上下文。
    ht\mathbf{h}_t
  2. 线性得分权重 $\mathbf{w}$ 与偏置 $b$ 把状态向量映射成一个标量得分,得分越高代表该轮越可能令用户满意。
    w⊤ht+b\mathbf{w}^\top \mathbf{h}_t + b
  3. 概率化输出Sigmoid 函数 $\sigma$ 将任意实数压缩到 0~1 区间,输出即为“该轮被判定为满意”的概率。
    σ(w⊤ht+b)\sigma\big( \mathbf{w}^\top \mathbf{h}_t + b \big)

归因问题——这顿成功的饭,到底该谢谁?

一顿完美的晚宴,功劳簿上写谁的名字?主厨的配方、服务员的推荐、还是侍酒师的那支配酒?神秘顾客如果只写“服务好”三个字,后厨就无法改进。这正是评估中最棘手的归因问题:最终结果到底归功于哪一轮的贡献?

在对话式搜索中,用户最终满意往往是多轮协作的结果:第二轮的澄清让系统确认了意图,第四轮的补充回答补齐了关键信息,第五轮才是那把“临门一脚”。任务完成归因要回答:哪个轮次的动作真正推动了成功?长程依赖使得第五轮的表现好坏可能源自第二轮埋下的伏笔;歧义消解则要求系统在用户表述含糊时做出正确理解,否则后续所有轮次都会被带偏。

一个朴素的归因权重是“成功门控下的轮次收益占比”:

有了这本“功劳账”,餐厅主厨才能看出是哪道菜让顾客点头买单,哪道菜差点把客人劝退。对话系统团队同样借此知道该优化检索器、澄清策略还是话术模板。

Attrt=rt⋅I[ c=1 ]∑j=1Trj⋅I[ c=1 ]\mathrm{Attr}_t = \frac{ r_t \cdot \mathbb{I}[\,c=1\,] }{ \sum_{j=1}^{T} r_j \cdot \mathbb{I}[\,c=1\,] }
第 t 轮的归因权重等于该轮收益在成功对话总收益中所占的比重,权重和为 1。
  1. 轮次收益$r_t$ 是第 t 轮的相关性打分,代表该轮输出的信息质量,是归因的基本原料。
    rtr_t
  2. 成功门控$\mathbb{I}[c=1]$ 让“最终失败的对话”不参与归因,只有成功对话中的轮次才有资格分得功劳,避免把失败归咎于单轮噪声。
    rt⋅I[ c=1 ]r_t \cdot \mathbb{I}[\,c=1\,]
  3. 归一化占比除以所有轮次的贡献总和,得到第 t 轮的归因权重;权重越大,说明该轮对成功的贡献越关键。
    rt⋅I[ c=1 ]∑j=1Trj⋅I[ c=1 ]\frac{ r_t \cdot \mathbb{I}[\,c=1\,] }{ \sum_{j=1}^{T} r_j \cdot \mathbb{I}[\,c=1\,] }

指标敏感性——打分尺子本身稳不稳?

神秘顾客的分量如果换个水杯就从 9 分跌到 3 分,说明这把评分尺子太“抖”了,测的根本不是餐厅水平,而是随机噪声。一把好的评审尺子,应该对无关扰动免疫,只对真正重要的变化敏感。

指标敏感性分析做的就是这件事:对对话记录施加小扰动(比如替换一个同义表达、把某轮措辞微调),观察评估指标是否剧烈波动;同时把自动指标分数与人工评估分数做相关性分析,验证指标是否真的反映了质量;鲁棒性验证进一步交叉不同数据集、不同评估员,确认指标排名的稳定性。

如果换只杯子分数就崩盘,神秘顾客的报告就没法采信。同理,一个对措辞抖动过于敏感的评估指标,会误导团队把噪声当成信号去优化。好的对话评估体系,最终要同时满足“人类认可、扰动稳定、能追溯归因”三把尺子。

Sens(M,δ)=Ed∼D[ ∣M(d)−M(d⊕δ)∣ ]\mathrm{Sens}(M, \delta) = \mathbb{E}_{d \sim \mathcal{D}}\Big[\, \big| M(d) - M(d \oplus \delta) \big| \,\Big]
它衡量在数据集 $\mathcal{D}$ 上,指标 $M$ 对扰动 $\delta$ 的平均敏感度;数值越小,指标越稳健。
  1. 扰动变换$d \oplus \delta$ 表示把扰动 $\delta$ 叠加到一段对话 $d$ 上,比如把某轮措辞换成同义表达。
    d⊕δd \oplus \delta
  2. 指标波动$|M(d) - M(d \oplus \delta)|$ 计算扰动前后指标值的绝对差异,差异越大说明指标越容易被无关变化带跑。
    ∣M(d)−M(d⊕δ)∣\big| M(d) - M(d \oplus \delta) \big|
  3. 期望敏感度对数据集中的所有对话求平均,得到该指标对这类扰动的平均敏感程度,用于横向对比多个候选指标。
    Ed∼D[ ∣M(d)−M(d⊕δ)∣ ]\mathbb{E}_{d \sim \mathcal{D}}\Big[\, \big| M(d) - M(d \oplus \delta) \big| \,\Big]

AI 应用场景

电商智能客服对话质量评估

阶段:离线评估与线上质检

解决的问题:传统客服质检只按单次回答打分,无法发现“多轮引导失败”的深层问题。AI 团队用 CSR 判断整段售后对话是否真正解决用户问题,用 ConvNDCG 评估每轮回复在会话中的信息增量,从而定位是“开场没听懂”还是“结尾没补全”。

具体案例:某电商客服团队对“退款流程”类对话做归因分析,发现前两轮澄清得分低是后续投诉升级的主因;优化开场澄清话术后,会话成功率提升 12%,人工复核 Kappa 值达 0.71。

大模型 RAG 系统的多轮检索评估

阶段:模型迭代前的大规模自动评估

解决的问题:人工评估几千条多轮 RAG 问答成本太高。团队构建用户模拟器,基于大模型扮演追问、澄清、否定等行为,批量生成 5 万条多轮轨迹,自动计算 ConvNDCG 与 CSR,筛出检索连接器的上下文拼接缺陷后再人工精评。

具体案例:某知识库问答产品用该流程发现:当用户第二轮补充约束条件时,ConvNDCG 从 0.82 骤降到 0.51,定位到重写模块丢失了历史实体;修复后指标回升至 0.79,线上用户满意度同步提升。

语音助手新版策略的 A/B 测试

阶段:线上实验阶段的指标监控

解决的问题:翻新旧版助手时,只看单轮唤醒率会掩盖多轮任务失败。评估团队建立统一评分量表(5 点 Likert),组织 8 名评估员培训校准,并用 Cohen's Kappa 保证一致性;同时对新旧两版做扰动测试,确认 CSR 提升不是由输入措辞噪声造成的。

具体案例:某语音助手在“多轮日程查询”场景上线新策略后,CSR 从 0.58 提升到 0.67,Kappa 值为 0.65,扰动敏感度低于旧版 30%,决策层据此确认全量上线。

Python 演示

python48 行
"""对话式搜索评估示例:ConvNDCG、CSR 与简单用户模拟器。"""import mathimport random  def conv_ndcg(conversations, top_k=5):    """对话级 NDCG:按轮次累积收益并做位置衰减。"""    total = 0.0    for turns in conversations:        dcg = 0.0        for t in range(min(top_k, len(turns))):            dcg += (2 ** turns[t] - 1) / math.log2(t + 2)        ideal = sorted(turns, reverse=True)        idcg = 0.0        for t in range(min(top_k, len(ideal))):            idcg += (2 ** ideal[t] - 1) / math.log2(t + 2)        total += dcg / idcg if idcg > 0 else 0.0    return total / len(conversations)  def success_rate(conversations, threshold=3):    """会话成功率:任一轮达到阈值即算任务成功。"""    hits = [any(r >= threshold for r in turns) for turns in conversations]    return sum(hits) / len(hits)  def simulate_conversations(n=20, max_turns=6, fail_prob=0.2):    """简单用户模拟器:随机生成多轮相关性打分(0-4)。"""    data = []    for _ in range(n):        turns = []        for t in range(random.randint(2, max_turns)):            if random.random() < fail_prob:                turns.append(random.choice([0, 1]))            else:                score = int(random.gauss(2.5 + t * 0.3, 1.0))                turns.append(min(4, max(0, score)))        data.append(turns)    return data  if __name__ == "__main__":    random.seed(42)    dialogs = simulate_conversations()    print("样本对话数:", len(dialogs))    print("ConvNDCG = %.3f" % conv_ndcg(dialogs))    print("CSR = %.3f" % success_rate(dialogs))    print("首个对话各轮评分:", dialogs[0])
目的:展示对话级 NDCG 与会话成功率的完整计算流程,并用一个参数化的简单用户模拟器生成多轮对话数据进行演示。
  1. for t in range(min(top_k, len(turns)))只取前 top_k 轮,避免超长对话稀释指标。
  2. dcg += (2 ** turns[t] - 1) / math.log2(t + 2)每轮收益按指数放大、按轮次位置衰减,对应 ConvNDCG 的核心公式。
  3. ideal = sorted(turns, reverse=True)生成理想轮次顺序,用于计算归一化分母。
  4. total += dcg / idcg if idcg > 0 else 0.0分母为 0 时跳过该对话,防止除零错误。
  5. hits = [any(r >= threshold for r in turns) ...]只要某轮达到阈值即认为整段对话成功,对应 CSR 的粗粒度判定。
  6. score = int(random.gauss(2.5 + t * 0.3, 1.0))模拟“越往后越可能答好”的对话规律,贴近真实系统的累积效果。
  7. random.seed(42)固定随机种子,保证实验可复现,这是评估工作的基本素养。

常见误区

误区评估对话系统时,把每轮查询当成独立检索任务算 NDCG,最后对所有轮次求平均,以为这样就算多轮评估了。

正解对话轮次之间存在强依赖,第二轮的问题依赖第一轮的答案。逐轮独立计算会忽略累积效果,也无法惩罚“前期答不好、后期才补救”的系统。必须使用会话粒度的 ConvNDCG 或类似指标,让轮次收益按位置衰减并统一归一化。

为何常见:单轮指标计算简单、工具链成熟,而且很多人没意识到多轮依赖会显著放大指标失真。

误区只要用户最后说了一句“谢谢”,这段对话就算成功,前面所有轮次的表现都不重要。

正解成功判定应当基于任务目标是否真正达成(如用户拿到可用的营业时间、完成预约流程),并结合用户中途的反悔、澄清等信号。“谢谢”可能只是礼貌性结束语,并不代表任务成功;仅凭末轮还会严重误导归因分析。

为何常见:末轮信号最容易采集,人类天然倾向用“最后说的话”代表整体体验。

误区有了用户模拟器,就不再需要人工评估员了,模拟器想生成多少对话都行,评估又快又便宜。

正解模拟器只能覆盖有限的用户行为模式,真实用户的模糊表达、情绪化反馈、突发需求很难被穷举。行业标准做法是“模拟器大规模初筛 + 人工小批量精评”,两者互补,缺一不可。

为何常见:自动评估省时省力且可复现,容易让人忽略仿真与现实之间的鸿沟。

误区用户最后成功找到答案,那一定是最后一轮回答的功劳,前面几轮都不重要,优化最后一轮就行。

正解最终成功往往是多轮协作的结果:澄清意图的轮次、补充信息的轮次都贡献了关键信息。归因问题要求把信用按合理规则分配给各轮(比如成功门控下的收益占比),帮助团队精准定位优化点,否则会陷入“哪轮最像就改哪轮”的盲动。

为何常见:人对因果链的追溯天然倾向于“就近原则”,最近的轮次最容易背锅或领功。

面试题

Q1. 对话式搜索评估相比单轮检索评估,最核心的差异在于?

单选题 · easy

  • A.把最后一轮结果作为唯一依据
  • B.把每轮当做独立查询来打分
  • C.评估多轮交互的累积效果← 正确答案
  • D.完全忽略上下文只测速度

答案:C。对话式搜索的精髓在于多轮累积,C 正确。A 只看末轮会丢掉前序信息;B 是单轮评估的做法;D 忽略上下文则完全偏离对话本质。就像神秘顾客必须品尝整套晚宴,而不是只盯最后那道甜点。

Q2. ConvNDCG 中位置衰减因子 log2(t+1) 的作用是?

单选题 · mid

  • A.让越靠后的轮次收益权重越大
  • B.让越靠后的轮次收益权重越小← 正确答案
  • C.让所有轮次的收益权重完全相同
  • D.让相关性评分变为指数级收益

答案:B。$\log_2(t+1)$ 位于分母,轮次 t 越大分母越大,收益被稀释得越多,因此是越靠后权重越小,B 正确。A 方向反了;C 完全等权会失去位置感知;D 描述的是分子 $2^{r_t}-1$ 的作用,与衰减因子无关。

Q3. 会话成功率(CSR)衡量的是?

单选题 · mid

  • A.检索结果召回率加上精确率
  • B.整段对话任务成功的比例← 正确答案
  • C.用户点击的平均次数占比
  • D.系统每一轮响应的速度分数

答案:B。CSR 统计的是整段对话中任务成功(如用户明确找到答案)的比例,B 正确。A 是检索指标;C 反映点击行为而非任务成败;D 衡量性能而非质量。

Q4. 下列哪些因素会引发多轮评估中的归因问题?

多选题 · hard

  • A.轮次之间存在长程依赖关系← 正确答案
  • B.用户需求在对话中不断演变← 正确答案
  • C.系统每轮都是独立完成检索
  • D.检索结果总是完全正确无误

答案:AB。长程依赖(A)使靠前轮次埋下的伏笔影响后续成败;需求演变(B)让各轮贡献交织在一起,两者都令“功劳属于谁”难以切分。C 若每轮完全独立就不存在多轮归因难题;D 结果全对则无需归因。

Q5. 人工评估协议中,保证多个人打分可比较的关键步骤是?

单选题 · easy

  • A.每位评估员自由发挥打分
  • B.统一培训和一致性校验← 正确答案
  • C.只安排一位资深评估员打分
  • D.机器随机抽取分数直接打分

答案:B。统一培训保证所有评估员理解同一套标准,一致性校验(如 Kappa)量化打分吻合度,B 正确。A 自由发挥必然导致标准漂移;C 单人打分无法估计主观偏差;D 随机打分完全不可信。

Q6. 自动评估模拟器的主要优势是?

单选题 · mid

  • A.完全替代人类评估员的工作
  • B.大规模生成对话并快速算分← 正确答案
  • C.彻底消除所有归因问题的头疼
  • D.精确复刻真实顾客的一切行为

答案:B。模拟器能在几小时内生成数千条对话并自动计算指标,B 正确。A 模拟器无法覆盖真实用户的模糊与情绪化行为;C 归因问题依然存在;D 模拟器只是近似,无法精确复刻真实行为。

Q7. 指标敏感性分析通常包含哪些做法?

多选题 · hard

  • A.对对话输入施加小扰动测试← 正确答案
  • B.与人工评估结果做相关性← 正确答案
  • C.固定数据集不重复多次实验
  • D.只记录对系统有利的样例

答案:AB。扰动测试(A)观察指标是否受无关变化影响;与人工评分求相关(B)验证指标是否反映真实质量,两者都是敏感性分析的标准做法。C 不做重复实验会掩盖方差;D 选择性记录样本属于评估作弊。

Q8. 对话级 NDCG 与单轮 NDCG 最大的计算差异是?

单选题 · mid

  • A.累加单位从文档排名换成对话轮次← 正确答案
  • B.对每轮结果做完全相同的权重加成
  • C.完全不考虑轮次顺序直接求均值
  • D.使用用户的点击量替换相关性评分

答案:A。ConvNDCG 把 NDCG 中按文档排名累加改为按对话轮次累加,并沿用位置衰减思想,A 正确。B 等权加成违背衰减设计;C 忽略顺序会失去对话的时序信息;D 用点击量替换相关性属于另一类指标设计,不是两者核心差异。

Q9. 评估对话式搜索时,判定一段对话“成功”最可靠的信号是?

单选题 · easy

  • A.用户明确表达目标已经达成← 正确答案
  • B.系统返回任意一条网页链接
  • C.用户与系统对话轮次足够多
  • D.系统单轮响应速度非常快

答案:A。用户明确表示找到答案或完成目标是任务完成的黄金标准,A 正确。B 返回链接不代表满足需求;C 轮次多可能意味着系统反复兜圈子;D 响应快只说明性能好,与任务成功无关。

Q10. 关于多轮对话评估的归因,下列说法正确的是?

多选题 · hard

  • A.最终成功通常是多轮协作的结果← 正确答案
  • B.应该把全部功劳归给最后一个轮次
  • C.只有失败对话才需要进行归因分析
  • D.归因需要用合理方法分配各级信用← 正确答案

答案:AD。多轮成功往往由澄清、补充、确认等多个轮次共同促成,A 正确;D 正确,归因的核心正是设计合理的信用分配方案。B 错在把功劳全归末轮,违背多轮协作事实;C 错在失败对话同样需要归因以定位改进点。