智能客服-用户是否反复问同一个问题计算
目录
在智能客服/对话系统里,“用户是否反复问同一个问题”本质上是一个行为信号加工问题,而不是简单的字符串匹配。下面我按工程可落地的方式给你拆解。
一、先明确:这个指标用来干什么
在你前面讨论的背景下,这个信号通常用于:
- 准确度评估的弱监督信号
- RAG / 意图识别失败的反证
- 是否需要转人工 / 升级模型的触发条件
- 自动化率 vs 准确度 trade-off 的约束
所以它不是一个“是否重复”的简单 bool,而是一个可量化、可解释的特征。
二、核心定义(推荐口径)
在同一会话或短时间窗口内,用户提出语义等价或高度相似的问题 ≥ N 次,且系统已给出过答案。
关键点有 4 个:
- 同一用户
- 时间窗口
- 语义相似,而非文本相同
- 系统已回答,但用户仍重复问
三、工程加工的标准拆解
1️⃣ 会话切分(Session / Window)
常见做法:
- 同一 session_id
- 或 5–10 分钟无操作视为新会话
- 或业务定义(下单前 / 咨询中)
你后面很多指标都会复用这个 session 维度。
2️⃣ Query 语义归一(非常关键)
不能直接用原 query,必须做 Query Canonicalization:
推荐流程:
原始 Query
→ 轻量 rewrite(去口水词、代词消解)
→ embedding 向量
→ 语义相似度计算
示例:
- “你们这个多久能到?”
- “大概几天能送达?”
- “发货要多长时间?”
→ 统一归为:delivery_time
3️⃣ 相似度判定规则
两种主流方式(可并存):
方案 A:Embedding 相似度(主流)
- 使用与 RAG 相同的 embedding 模型
- cosine similarity
经验阈值:
≥ 0.85:高度重复0.75–0.85:可能重复(需要结合上下文)< 0.75:认为是新问题
方案 B:Intent 级别(更稳)
如果你已经有 intent 识别:
same_intent
AND
(intent_confidence ≥ T)
实践中:intent 一致 + embedding 高相似 是最稳的。
4️⃣ “反复”的判定条件
推荐定义为 计数 + 时序:
在 session 内:
同一语义问题
被问 ≥ 2 次
且中间系统已给出非澄清性答案
进一步可分级:
| 等级 | 规则 | 含义 |
|---|---|---|
| Level 1 | 问 2 次 | 可能没看懂 |
| Level 2 | 问 3 次 | 答案质量可疑 |
| Level 3 | 问 3+ 次 | 明确失败 |
四、必须排除的“伪重复”
否则指标会被严重污染:
❌ 以下不应算重复
-
系统让用户补充信息
- “请提供订单号”
-
用户换条件
- “3 天能到吗?”
- “那 5 天呢?”
-
多意图问题
- 第一次问 A+B
- 第二次只问 B
👉 解决方法:
- system_action = clarification → 不计
- query rewrite 时保留 slot 变化
五、最终产出的“可用特征”
你不应该只产出一个 bool,而是一组信号:
{
"repeat_question": true,
"repeat_count": 3,
"first_answer_confidence": 0.62,
"repeat_intent": "delivery_time",
"repeat_after_answer_ms": 18000
}
这些可以用于:
- 质检打分
- 是否扣准确度
- 是否强制进大模型 / 人工
- RAG 命中失败分析
六、如何用于“准确度 ≥ 95%”的计算
常见做法(你前面问过):
将“反复问同一问题”作为负样本信号之一,而不是唯一依据
例如:
回答被判为不准确 =
重复问同一问题
AND 无新信息补充
AND 无澄清引导
或者:
accuracy_penalty = f(repeat_count)
七、一句话总结(面试/评审版)
“用户是否反复问同一个问题,并不是字符串重复,而是基于会话内的语义归一与相似度判断;当系统已给出明确回答,但用户在短时间内多次重复同一语义问题时,通常作为回答失败或置信度不足的强信号,用于准确度评估和路由升级。”
如果你愿意,我可以直接帮你设计一套 SQL / 特征计算伪代码,或者把它嵌入你当前的 RAG + intent 架构里,做到真正可上线。

浙公网安备 33010602011771号