多轮对话实体绑定故障复盘

多轮对话实体绑定故障复盘

日期:2026-09-12 范围:药盒后端对话理解层(src/chat/understanding.py)

背景:理解层用 qwen-flash 做"意图决策 + 检索必要性 + 独立问题生成",独立问题的

药品实体绑定(指代消解)连续暴露三类故障,两轮迭代修复。测试集见

docs/当前问题与修复计划.md 附录及测试记录(scripts/template.html)。

一、三次故障对照表

故障 1(Case-1-3) 故障 2(Case-2-2) 故障 3(Case-2-3 轮4)
输入 曲普瑞林→"该药老年要调剂量吗" 普卢格列汀→鲁兹诺雷钠→"回到刚才那个药" 奥布替尼→"今天好热啊"→"这些指标异常怎么办"
错误绑定 法米替尼(上上轮) 鲁兹诺雷钠(最近一轮) 丢失实体(query 无药名→拒答)
应该绑定 曲普瑞林(最近一轮) 普卢格列汀(回切) 奥布替尼(跨闲聊回指)
现象定性 实体绑定错误:"认错人" 回切指代失败 跨闲聊回指失败

概念澄清:这不是"记忆丢失"(窗口里内容都在),也不是"记忆混乱"(答案内容没被污染),

而是实体绑定错误------记忆完好,但指代词归因到了错误实体。

二、三个根因

根因 1(模型层):弱模型注意力按"语义相关性"分配,不按"时间顺序"分配

故障 1 中,历史里法米替尼刚讲过"剂量下调至 10mg",与"调整剂量"四字强共振;

曲普瑞林轮全文没有"剂量"二字。语义上法米替尼"更相关",模型就把它当成了"该药"。

且当时历史是平铺文本(用户:...\n助手:...),模型连"谁是最近话题"都看不见。

根因 2(修复方式层):单一铁律过度拟合了上一个故障

第一轮修复定的规则是"代词一律绑最近一轮",堵住了语义劫持,却恰好判反了两个新场景:

  • 回切指代(Case-2-2):"刚才"在 A→B 语序里指 A 不是 B,"一律绑最近一轮"判反
  • 跨闲聊回指(Case-2-3):最近一轮是闲聊("今天好热啊"),没有药品实体可绑,铁律失效后模型丢锚

教训:指代绑定不是一个规则,是一张决策表 (顺承 / 点名 / 回切 / 跨闲聊回指),

修 bug 不能只堵已知的洞------prompt 工程里同样存在 overfitting。

根因 3(链路层):理解层丢锚会层层放大

故障 3 的完整链条:

复制代码
闲聊轮打锚 → 独立问题无药名 → 检索锁不了实体 → 只能吐无药名拒答
("暂未找到该药品的说明书信息"------连药名都没有,佐证 query 在理解层已丢实体)

理解层是链路最上游,它错一个词,下游检索、拒答守卫全部按错误前提运转。

修 bug 要修最上游的病灶,下游(检索层)是无辜的。

三、解决方法(两轮迭代,全部在 understanding.py 的 prompt 内)

第一轮(治故障 1)

  1. 历史文本加轮次锚_history_text):平铺文本改为
    【第1轮】...【第3轮·最近一轮】 标注,让模型看见时间
  2. prompt 加实体绑定规则 + 同构反例(few-shot 给标准答案模仿)

第二轮(治故障 2、3):单一铁律升级为四级绑定决策

复制代码
① 明确点名药品        → 绑点名的药("法米替尼呢")
② 回切表述            → 绑上一个讨论过、非最近一轮的药(A→B 后"回到刚才那个药"= A)
③ 代词/省略           → 绑【最近一轮】的药(语义再相似也不许绑更早的)
④ 最近一轮是闲聊      → 向前回溯最近一个含药品实体的轮次

并把挂掉的真题直接做成 few-shot 反例(回切场景 + 跨闲聊场景各一条)------

每出一个故障,沉淀一条反例进 prompt,回归资产越滚越厚。

四、元规律

  1. 修 bug 别只堵已知的洞 :第一轮修复被测试集 2 的两种新场景立刻打脸,
    反对 overfitting 修复的原则在 prompt 工程里同样成立
  2. 弱模型矫正三板斧 :输入结构化(轮次锚)+ 规则显式化(决策表)+ few-shot 示例
    (看一遍标准答案胜过读十条规则)------成本近零,不换模型、不动架构
  3. 这类错误是静默的 :不报错、语气笃定、排版漂亮、内容自洽(法米替尼的剂量建议
    被安到吃曲普瑞林的老人身上,护理员无从察觉),比拒答类故障危险得多
  4. 唯一防线是回归用例 :每次 prompt 改动后,新建会话全量重跑测试集,
    重点盯"上一次修复不能被下一次修复改坏"(Case-2-1 四连锁定的回归即为此设)

多轮对话测试集(药品RAG场景)

设计目标:覆盖指代、省略、追问、转折、切换实体、回退、歧义、边界异常case ,全部是多轮上下文依赖,不能单轮独立回答。

使用说明:

  1. 按顺序一轮一轮提问;
  2. 重点观察两点:①检索侧是否拿到正确药品实体;②生成层是否读懂上文,不会出现"请告诉我具体药品名称"这种失忆;
  3. 预期输出标注;可以用来回归测试你修复后的NLU、实体继承、生成上下文、元数据过滤、拒答守卫。

分为4大类:基础指代追问、复杂多轮跳转、边界异常场景、混淆干扰场景。


下面是用到的测试集

测试集1:基础代词/省略追问(复现你线上故障:"我听不懂你说的这些是啥意思")

Case‑1‑1

复制代码
轮1:奥布替尼有哪些药物相互作用?
轮2:我听不懂你说的这些是什么意思。

✅预期:识别"这些"指代奥布替尼的药物相互作用;检索限定奥布替尼;用通俗语言解释;不召回其他药品;不会回复"请提供药品名称"。

Case‑1‑2

复制代码
轮1:请讲一下法米替尼的不良反应
轮2:那它禁忌是什么?
轮3:上面这些需要重点监测哪些指标?

✅预期:轮2代词"它"继承法米替尼;轮3"上面这些"继承前面不良反应+禁忌,实体始终锁定法米替尼。

Case‑1‑3("该药、此药"变体)

复制代码
轮1:曲普瑞林适合哪些人群?
轮2:该药在老年患者需要调整剂量吗?

✅预期:正确继承曲普瑞林,不要空实体放行。


测试集2:多轮递进追问(连续多轮上下文,逐步深挖)

Case‑2‑1 连续深挖4轮

复制代码
轮1:阿帕替尼的用法用量
轮2:肝功能不全要怎么调整?
轮3:如果出现血压升高该如何处理?
轮4:那和抗凝药联用要注意什么?

✅预期:全程实体锁定阿帕替尼;每一轮的问题都依赖上文,不能失忆,不能混入别的药品chunk。

Case‑2‑2:先问A,追问B,再切回A(非常容易丢实体)

复制代码
轮1:普卢格列汀的主要副作用是什么?
轮2:那鲁兹诺雷钠禁忌症?
轮3:回到刚才那个药,漏服怎么办?

✅预期:轮3"刚才那个药"指普卢格列汀;不要继承上一轮的鲁兹诺雷钠。

Case‑2‑3:长距离指代,中间插入无关闲聊

复制代码
轮1:奥布替尼服用需要监测哪些实验室指标?
轮2:帮我总结3条关键点
轮3:今天好热啊
轮4:那这些指标异常之后怎么处理?

✅预期:跳过闲聊,"这些指标"仍然指向奥布替尼的监测指标;不要因为中间闲聊丢失会话实体。


测试集3:边界&异常case(重点测守卫、实体继承失效、拒答分支)

Case‑3‑1:第一轮有实体,第二轮完全无实体,纯指代(你线上bug复现用例)

复制代码
轮1:奥布替尼有什么禁忌?
轮2:能再通俗讲一遍吗?

✅预期:继承奥布替尼;不要返回"请告诉我药品名称"。

Case‑3‑2:会话切换新药品,覆盖旧实体

复制代码
轮1:奥布替尼不良反应
轮2:说一说阿帕替尼的服用注意事项
轮3:那它漏服怎么处理?

✅预期:轮3"它"指向阿帕替尼,不是奥布替尼;实体被新query覆盖。

Case‑3‑3:多轮后,用户提出完全和药品无关问题(测闲聊分支,不走RAG检索)

复制代码
轮1:法米替尼的储存条件
轮2:给我讲个笑话

✅预期:识别为闲聊意图,拒绝走向量检索链路,不召回说明书chunk。

Case‑3‑4:指代但是历史没有有效实体,应当拒答

复制代码
轮1:讲个笑话
轮2:那它的副作用是什么?

✅预期:会话历史没有任何药品实体,直接拒答:"请告诉我具体药品名称,我才能为您解读说明书",禁止把"它"送入检索,召回一堆乱七八糟的药品

Case‑3‑5:指代+知识库不存在的药品

复制代码
轮1:XX虚构药ABC123的不良反应
轮2:那它的禁忌是什么?

✅预期:第一轮识别药品不存在直接拒答;第二轮不要继续继承这个不存在的实体。


相关推荐
七夜zippoe1 小时前
AI Agent 的核心能力循环:感知→规划→执行→反思→记
人工智能·ai·agent·循环·核心能力
碣石潇湘无限路1 小时前
科技优惠日报(详情版)· 2026-09-12:16 家厂商 73 条有效优惠
ai·云计算·云服务·优惠活动
kaixin_啊啊1 小时前
Codex论文辅助全流程
人工智能·笔记·学习·ai·大模型
科技每日热闻2 小时前
AWS Activate云积分可以用于哪些云服务和AI开发场景?
人工智能·ai·云计算·aws
筝筝ba2 小时前
1987 NDX收盘价格复盘
人工智能·科技·ai·gpu算力
墨白曦煜2 小时前
拆解 Tool Calling Agent:从裸写闭环到 LangGraph 安全状态机实现
ai
科技每日热闻2 小时前
初创企业从 MVP 迭代到规模化运营,什么样的云平台能够兼顾技术能力与成本管控?
ai
RobinDevNotes2 小时前
Palmier Pro:AI时代的Mac视频编辑器
人工智能·ceph·macos·ai·音视频·视频编辑·mcp
粉色大象2 小时前
handdrawn‑architecture‑video:开源SVG架构图转手绘4K动画视频|本地AI Agent Skill
人工智能·ai·ai作画·系统架构·开源·aigc·音视频