对话式 BI

BI 中的多轮对话:AI 如何维持上下文

单轮问答相对简单:用户提出问题,人工智能返回答案。多轮对话则困难得多——用户会提出引用前文结果的追问,比如“那按华东区再细分呢”“把它改成环比”,系统必须跨轮次保持上下文,才能给出连续、一致的分析。这正是有用的商业智能(BI)助手与华丽搜索引擎之间的分水岭。

什么是上下文窗口问题?

大语言模型有固定的上下文窗口,即单次能够处理的最大文本量。在多轮对话中,每一轮的提问、回答与图表说明都会占用窗口空间,轮次一多,早期信息就会被逐渐挤出。实践中,5至10轮之后模型就开始“忘记”最初的查询条件,出现答非所问或口径漂移,用户不得不反复重述需求。

把完整历史全部塞进窗口并不现实,成本与延迟都会随轮次线性增长,企业级场景尤其承受不起。更合理的方案是在模型之外维护结构化的对话状态——谁问了什么、基于哪个数据集、应用了哪些筛选条件——并在每一轮只注入与当前问题相关的上下文片段。上下文管理的关键不再是“记住多少”,而是“挑对多少”。

AI应该如何解析代词与省略指代?

用户说“现在按月度显示”,人工智能必须把“现在”解析为上一轮讨论的主题,例如“按地区划分的收入”。这类指代消解要求系统维护一张对话实体图:本轮已经提到哪些指标、维度与过滤条件,哪些仍然处于激活状态,哪些已经被用户主动放弃。

参考解析的难点在于歧义。当用户上一轮同时讨论过“华东区收入”与“华北区销量”时,“改成趋势图”究竟指哪一个?优秀的系统会结合最近提及、当前焦点与用户的明确用词综合判断,并在不确定时主动向用户确认,而不是默默猜测导致口径错误——一次静默的错误换算,可能让用户对整个系统的信任归零。

上下文窗口应该如何管理?

成熟的上下文管理通常遵循三步策略。第一步,把每一轮的查询、结果与元数据写入对话状态对象;第二步,在开启新一轮之前,把历史压缩成一份紧凑的上下文摘要,只保留关键指标、维度与结论;第三步,将摘要、当前问题以及被引用的具体实体一起送入模型,让模型把精力集中在真正相关的内容上。

这一策略的核心收益是可扩展性:无论对话进行到第几轮,送入模型的文本量都保持近似恒定,回答延迟与成本不会随轮次失控。对于企业级的BI场景,这还意味着每一次回答都可以回溯到确定的数据口径,为审计与合规留下清晰痕迹,也让用户能够放心地展开长程探索式分析。

摘要的生成质量直接决定多轮体验的成败。一份好的摘要应当回答四个问题:用户在分析什么主题、已经确认了哪些口径、得到了什么结论、还有哪些待办追问。把摘要做得太短会丢失关键信息,做得太长又挤占上下文窗口,成熟系统通常会用结构化字段(主题、指标、维度、筛选条件、结论)而不是自由文本保存状态,既便于机器检索,也便于随时向用户确认。

好的多轮对话体验应该如何衡量?

衡量标准不应只看单轮回答正确率。真正有用的指标包括:指代消解成功率——用户使用“它”“那个”“上面”等词时系统是否正确理解;上下文延续率——追问后结果是否保持同一数据口径;以及任务完成率——用户能否在不重新描述全部条件的情况下得到最终答案。

行业实践中,把指代消解成功率提升20个百分点,通常能让用户的平均会话轮数从3轮左右提高到8轮以上,而每轮追问节省的时间可达数分钟。更重要的是,多轮能力直接决定业务用户能否独立完成探索式分析——这正是对话式BI替代传统报表的价值所在,也是蜂启咨询在评估BI助手时最看重的维度。

测试方法上,企业可以用一组标准化的多轮场景做基准测试:例如连续追问五个问题、中途切换主题再切回、使用口语化指代等,观察系统的口径保持能力与响应质量。这类测试应当由业务用户参与设计,因为只有他们才清楚哪些追问真正发生在日常工作中,测试场景贴近真实,结论才有参考价值。

什么时候应该重置上下文?

并非所有轮次都属于同一分析线程。当用户从“收入分析”切换到“人员编制趋势”时,人工智能应当检测到主题转移,重置当前的分析上下文,避免把旧指标带入新问题;同时保留完整的会话历史,让用户随时可以回到上一个主题继续追问,而不必从头再来。

好的系统还会区分“软切换”与“硬切换”:软切换时保留常用的筛选条件,例如组织范围与时间范围;硬切换则清空全部口径。明确这两类切换规则,可以在灵活性与准确性之间取得平衡,也避免用户在不同主题间来回切换时反复输入相同条件,把宝贵的时间浪费在重复描述上。

此外,企业还应该为对话状态设定合理的保留策略:短期会话数据在对话结束后即可归档,涉及敏感业务数据的会话则按合规要求留存并做脱敏处理。上下文管理不只是技术问题,也是数据治理问题,二者在设计之初就应统一考虑,避免系统上线后再回头补合规的课。

本文的核心要点是什么?

  • 在模型之外维护结构化对话状态,而非依赖上下文窗口硬记。
  • 用紧凑摘要代替完整历史,控制成本与延迟。
  • 用对话实体图解决指代消解,必要时主动向用户确认。
  • 检测主题转移,区分软切换与硬切换。

设计多轮对话的下一步是什么?

多轮对话能力决定了一款BI工具究竟是被动应答的查询器,还是能够陪伴业务用户完成完整分析旅程的智能助手。上下文窗口管理、指代消解与主题切换并非锦上添花,而是对话式分析可用性的地基,任何一环节缺失,都会让体验停留在“能用”而非“好用”。

对准备引入对话式BI的企业,建议在选型时用真实的五轮以上业务追问进行压力测试,观察系统在口径一致性与响应质量上的表现。蜂启咨询可以帮助企业搭建这类评估场景,并基于语义层把多轮上下文管理与企业指标口径统一起来,让每一次追问都建立在可信的数据基础之上。

对话状态应该如何建模?

把记忆外部化是正确的方向,但临时拼凑的状态物件往往不断新增栏位,最后没人确定哪一个才是权威来源。更干净的做法,是把对话状态视为一个小而带型别的结构,包含四个槽位,每个槽位在新的一轮到来时都有明确的优先顺序规则。

  • 主题——当前讨论的指标或度量:营收、毛利、员工人数、出货量。新的一轮若明确说出指标就替换主题;若没有,则维持不变。
  • 维度与筛选条件——地区、渠道、产品、时间区间,以及任何明确的限制。这是状态中最常被修改的部分,也正是「按月」或「只要上海」实际改变的内容。
  • 操作——比较、排序、趋势、分解或阈值检查。这是多数状态模型遗漏的部分;正因缺少它,能处理好「跟去年同期比」的助理,却会在「哪些地区表现最差?」上失败。
  • 结果指标——指向先前结果集的引用,使「在这些当中,哪些成长最快?」无需重跑原始查询即可求解。

优先顺序规则比结构更重要。当使用者说「现在按渠道拆分,但只看前三大地区」,三个槽位同时改变,一个维持不变。以定义好的顺序逐槽求解的系统——先筛选条件、再维度、最后主题——行为可预测;而每次都从最新一句重新推导整个状态的系统,则会出现使用者所说「助理断线了」的反复无常行为。

实务上多轮对话会在哪些地方出问题?

除了上下文视窗耗尽之外, 生产环境的部署中有四类问题反复出现,每一类都有对应的解法。

数字指涉的歧义。「那去年呢?」可能指去年同期、上一个完整年度,或在当前粒度下做年增比较。与其猜测,更好的做法是解析最可能的解读,在答案中明确说明(「去年同期,一月到三月」),并提供其他选项。说明解读只需一句话,却能消除大部分静默的误解。

下钻链超过schema范围。使用者依序要求按地区、城市、门市、产品拆分,而第四层在该粒度下并不存在。正确的回应不是报错,也不是幻化出一张图表,而是优雅地说明边界:目前可用的最细粒度是什么,以及是否愿意用近似方式呈现。妥善处理schema的边界,是让助理显得专业的重要部分。

单一对话中的主题漂移。一段关于毛利的对话滑向员工人数,之后又绕回来。因此主题侦测应是软性而非二元的:维护一个分析上下文堆叠而非单一上下文,回到先前主题时就能恢复其状态,而不是重新开始。

跨轮次的权限泄漏。随著对话状态累积筛选条件与实体,它可能同时累积了使用者不应看到的数据访问权——某个在一个上下文中合法的筛选条件,会暴露出在另一个上下文中不被允许的聚合结果。每一个求解出的查询,都必须针对完整累积的状态重新授权,而不是只针对最新一轮。

如何测试多轮对话助理?

单轮评估会漏掉大部分出问题的地方。测试单位必须是「对话」而非「问题」,实用的做法是建立脚本化的对话测试集:二十到五十段多轮对话脚本,涵盖使用者实际会产生的模式——细化、下钻、比较、切换主题、返回、修正——每段都带有已知正确的最终状态与预期答案。

执行这套测试集可以得到三项指标。状态准确率:在第N轮之后,求解出的查询规格是否与预期一致?深度上的答案准确率:分别在第一轮、第五轮、第十五轮衡量准确率,因为这套架构的重点正是准确率不应随深度下降——若下降,说明外部化状态没有发挥作用。恢复率:当使用者修正助理时(「不,我是指按季」),下一轮能做对的比例有多高?

再补一个成本低但诊断价值高的生产讯号:使用者放弃当前对话并另开新对话的比例。在第三、四轮之后出现高放弃率,是上下文处理失败最清晰的指标,而且无需任何标注就能在日志中看见。

多轮BI中是什么破坏了上下文,又该如何修复?

多轮分析会在系统遗忘已说内容时失败。常见的罪魁是 Treating 每个问题为孤立请求的无状态处理;是"上季度"在各轮中含义不同的隐性假设变更;也是因前一轮被丢弃而失去锚点的丢失引用——比如"把它和北美区域对比"无处着落。用户的感受是不得不重复自己,或者更糟,收到一个对错误问题的自信回答。

修复之道是把上下文当作一等公民的状态来管理。维护一个显式的会话对象,记录前几轮已解析的实体、过滤器、时间范围和指标定义,并将其带入每一个新查询,使后续追问建立在既定基础之上。当引用含糊时,依据该状态来解析而非猜测,并在确实不清时向用户确认。对长会话定期摘要为紧凑的上下文快照,使模型不会随对话变长而丢失主线。当状态被刻意对待,一场十轮的探查就会像与一位全程在场的分析师协作一般。

常见问题

因为整套对话历史被重复放入上下文视窗,而上下文视窗是有限的资源。五到十轮之后,较早的内容会被截断或挤出,模型便开始像前面的对话从未发生过一样回答。解法是把状态外部化为结构化物件,每一轮只发送精简的摘要。

分为四个带型别的槽位并配备明确的优先顺序规则:主题(当前讨论的指标)、维度与筛选条件、操作(比较、排序、趋势、分解),以及指向先前结果集的指标。依照定义好的顺序逐槽求解,是让追问行为可预测的关键。

透过维护一个实体图,记录迄今出现过的指标、维度与筛选条件,再据此解析代词与省略语。对结构化状态做确定性解析,远比让模型从原始历史中推论指涉对象可靠,而且让解析过程可被审计。

在侦测到主题切换时——使用者从一个分析主题转向无关的另一个主题。较佳做法是维护上下文堆叠而非单一上下文,这样回到先前主题时能恢复其状态,而不必重新开始;即使重置,历史仍应可被取回。

测试对话,而非单一问题。建立二十到五十段脚本化的多轮对话,涵盖细化、下钻、比较、主题切换与修正,并衡量状态准确率、第一轮与第五轮及第十五轮的答案准确率,以及使用者修正后的恢复率。
预约个性化演示

准备好改变您的数据策略了吗?

了解蜂启咨询的对话式分析平台如何在整个运营中解锁实时洞察——从上游数据到下游决策。

预约演示 了解解决方案
3x
典型首年 ROI
78%
更快解决查询
92%
6 个月内采用率
50+
数据连接器