AFAgent Field Notes会员账号
知识目录选择核心方向与细分内容
Q24进阶实现约 12 分钟

查询改写中的实体消歧与约束保真

用户只问“它在重庆的余额呢”,怎样改写查询而不编造意图?

考察多轮指代、实体链接、澄清与原始约束保留。

查询改写实体链接多轮对话

知识内容核对 2026-10-03 · 原题来源核对 2026-10-02

本题目录

READ · UNDERSTAND · TRANSFER

阅读理解,按需巩固

我的笔记与复习 ↗

先沿着原理、问答和迁移案例阅读。需要检查理解时,再切换巩固练习或展开个人记录。

作答与个人记录

每次修改后的提交会保留为独立历史。掌握程度由你对照标准自评。

核心知识 · 查询改写中的实体消歧与约束保真

先理解核心原理

先备概念:会话状态与指代、结构化查询槽位、澄清与检索计划

改写的目的在于把已知意图表达得更可检索,不能创造缺失事实。实体、否定、时间和范围必须有来源,影响答案的歧义需要保留或澄清。

指代解析是一项受约束的状态更新

“它在重庆的余额呢”包含承接关系,却没有完整实体。可以从当前会话取得候选,并记录“它”来自哪一轮、用户当时确认了什么。把已确认实体与推测候选分开保存;一个高相似度候选不是用户授权或实体确认。

保留原句,让改写可检查

结构化意图至少区分实体、地区、指标、时点以及排除条件,未知槽位保持未知。查询可有原句支路和扩展支路,但所有支路共享可信权限范围。改写前后比较受保护槽位,尤其产品编号、否定和日期。反例是用户说“不是招行,是工行”,改写器仍将历史频繁出现的招行补回来;这不是检索质量问题,而是意图被污染。

消歧的代价与收益

若两个实体会给出不同答案,先问一个最能区分的具体问题。低风险资料搜索可并行检索候选并展示差异,不能暗中合并;资金、权限或操作类结果更需要明确口径。是否澄清取决于答案对歧义敏感的程度,而不是机械设置相似度差阈值。

用反事实验证保真

设计只改变否定、地区、日期或账户范围的成对题,检查改写是否只改变对应槽位。分别评估原问题、意图和最终检索答案,保留可追溯的证据。多轮历史变长时提取当前有效的确认与否定,不将所有历史实体平等送进候选。新消息可以修正旧状态,但不能从“昨天才说”推出业务事实今天才生效。

回到问题:怎样回答?

先从当前会话中解析“它”可能指向的实体,保留用户原句和可验证的上下文来源,再生成结构化查询意图。实体有多个候选或缺少会改变答案的条件时应澄清。改写不能擅自增加银行、日期、账户或权限;原始问题与改写结果都要进入评测,检查是否保留否定、范围和时间限制。

实现与取舍

改写需要可追溯输入

上下文选择最近明确确认的主体、用户修正和当前任务目标,不把全量聊天塞给改写器。输出实体 ID 候选、地区、指标、时间范围、证据位置与待澄清字段。可信身份和可见数据范围由服务端附加,改写器只能选择已授权候选,不能生成新的授权范围。

指代和实体链接分开

“它”可能是上一轮的招商银行,也可能是某个具体账户。先解决指代对象,再映射到数据字典中的银行、分行或账户。名字相似并不代表同一实体,候选应包含可区分的地区与组织属性。只有当前上下文足够明确时自动选择,否则用短问题确认,而不是总挑相似度最高的候选。

改写不能改变任务约束

保留“不含冻结资金”“昨天收盘”“仅本部门”等限制。可以扩展同义词用于检索,但不能把余额查询变成支出查询,也不能把“重庆分行”扩大成所有重庆地区账户。多个查询变体需要共享预算并在最终答案中回到原始口径,避免分别查到不同对象后拼接。

评测错误传播

构造多轮对话,刻意加入实体切换、否定修正、同名分行和历史过期信息。分别测实体准确率、约束保留率、错误自动选择率和澄清后的完成率。检索最终答错时保留原问句、改写和实体候选,才能判断问题来自改写而不是错误调整 Embedding 参数。

工程推演

场景
面试假设:上一轮比较招行与兴业,用户继续问“它在重庆的余额”。
设计决策
识别指代有歧义,列出受权候选并澄清银行与账户范围。
验证目标
确认后按正确范围查询,改写链可用于错误定位。
适用边界
不能用用户历史偏好替代当前问题缺失的关键实体。

连续追问与解答

沿着问题的前提和约束继续向下读。先理解参考解答,再尝试收起答案,用自己的话解释因果和取舍。

举一反三:条件变了,怎样推导?

先找出改变的条件,再判断原方案中哪些前提仍成立。下面的案例是教学推演,便于将原理迁移到新问题。

低风险技术资料搜索

改变的条件:结果用于浏览而非资金判断

延伸问题:“它的取消怎么写”存在两个库,可以少问一句吗?

推导与参考解答

可以返回两种候选库的短说明与来源,让用户选定,或在有已确认上下文时优先该库。检索计划仍分开版本与实体,不能把 A 的取消 API 配 B 的示例代码。根据用户选择更新会话状态,保留当前假设标签。

保持不变的原理:允许探索不等于允许偷偷确认,证据须与各候选解释一一对应。

用户有多个项目

改变的条件:历史都提过同一技术名,但当前项目不同

延伸问题:改写是否可取最近出现的项目配置?

推导与参考解答

先使用当前明确选定的项目作用域,再读取其已确认配置;最近一轮提到的另一个项目可能只是比较对象。作用域缺失且版本影响答案时澄清。权限边界从服务端获取,不能因为历史提到某项目就认为仍可读取。

保持不变的原理:会话相关性不等于当前对象和访问授权,意图必须在明确作用域内解析。

易错点

  • 相似度最高就自动选择
  • 改写删除否定词
  • 检索失败全部归因向量模型

参考资料

依据公开技术资料设计;参考资料支持技术机制,场景与评分标准为本站设计,不代表某公司面试原题。 新增问答与迁移案例用于原理讲解,来源核查与案例运行验证分别记录。

检查自己理解到哪一步

读完后可以对照这些标准解释原理、边界和取舍。掌握程度由你自评;需要进一步验证时,再完成下方小任务。

基础达标
能解析当前会话中的指代,并保留原始问句用于核对。
中高级信号
结构化输出候选、约束与澄清字段。
资深信号
能分层评测错误传播与自动选择风险。

巩固练习 按需完成 · 建议 15 分钟

将三轮含主体切换的对话改写成结构化意图,并标出不能自动确定的字段。

展开验收要求与检查点
  • 不编造缺失主体
  • 保留否定与时间范围
  • 澄清问题只问关键歧义

重点检查

  • 指代与实体映射分层
  • 原始约束和修正保留
  • 有明确澄清条件