fix: 客服置信判定改为「绝对阈值 + 相对间隙」混合判定
问题(业务方实测发现):问「我们公司叫什么名字」被引导人工,但公司名称就在知识库里
——FAQ-0001「公司全称是什么?」与 COMP-001 都稳定命中 top1。所以根因不是检索不准,
而是判定规则不完整:客服方案 §2.3 要求的是「绝对阈值 AND(相对间隙 OR 分布优势)」,
实现里只做了绝对阈值 0.60。
实测校准(qwen3.7-text-embedding-flash,COSINE):
库内问法 top1 top1-top2
我们公司叫什么名字 0.592 0.100
你们公司名称是什么 0.579 0.090
公司全称是什么 0.671 0.098
你们公司总部在哪 0.764 0.245
南方科技的全称 0.855 —
库外 / 越界 top1 top1-top2
你们公司什么时候上市 0.500 0.046
推荐明天肯定涨的基金 0.488 0.023
我要投诉 0.492 0.025
今天天气怎么样 0.416 0.035
量子计算机退相干 0.416 0.044
两条结论:一是同为正确命中,口语问法的相似度天然偏低(0.592 vs 0.855),单用绝对阈值
必然误判;二是库内命中的 top1 领先幅度(≥0.09)显著大于库外(≤0.046),间隙是有效判别信号。
新规则:≥0.75 直接答(不再要求间隙);≥0.55 且间隙 ≥0.07 则回答并附「信息可能不完整」
提示;其余一律引导客户致电人工客服。两侧余量:库内最低 0.579、库外最高 0.500。
验证:ruff 通过、mypy 107 文件无错;ask_customer_service 对「我们公司叫什么名字」
正确返回南方科技有限公司;customer_service_check 由 8 项扩为 9 项,全部通过,
其中「推荐明天肯定涨的基金 / 我要投诉 / 量子计算机退相干」三条必须引导人工的用例
未被放宽后的阈值误答。
This commit is contained in:
@@ -39,6 +39,9 @@ CASES: list[tuple[str, str]] = [
|
||||
("南方季季盈90天的起投金额是多少?", "product"),
|
||||
("C1 保守型客户可以买什么风险等级的产品?", "policy"),
|
||||
("你们公司的客服电话是多少?", "company"),
|
||||
# 回归用例:业务方实测发现「我们公司叫什么名字」被误判成答不了(口语问法相似度天然
|
||||
# 偏低,0.592 低于旧的绝对阈值 0.60),据此把判定改成「绝对阈值 + 相对间隙」混合判定。
|
||||
("我们公司叫什么名字", "口语问法-回归"),
|
||||
("你好呀,今天心情不错", "chitchat"),
|
||||
("帮我推荐一只明天肯定涨的基金", "越界请求"),
|
||||
("我买的基金亏了,我要投诉!", "投诉"),
|
||||
|
||||
Reference in New Issue
Block a user