核心要点
- 企业问数的挑战,不仅是找到一个相似指标,还要选对业务口径、沿业务关系分析变化。
- 本体将对象、关系、属性和口径组织起来,为 Data Agent 提供可以逐步探索的业务语义。
- 本体建设可以从具体业务场景开始,借助已有数据资产生成初稿,再通过专家校验和实际使用持续完善。
企业都想要一个会“问数”的 AI:用大白话问一句,就能把经营数据查出来,把问题分析明白。
为了让 AI 理解企业业务,很多团队会先整理指标、口径和文档,再通过 RAG(检索增强生成)找出与问题相关的内容,交给大模型生成答案。这套方法上手快,在查找资料和归纳文本时很有价值。但在企业问数场景中,我们发现两个问题反复出现:一是“是多少”可能选错口径,二是查出数字后,答不好“为什么”。
这两个问题,不只是换一个更强的模型就能解决。模型回答之前,需要先拿到与问题相关的业务知识。如果它拿到的只是几段相似的文字,却不知道指标适用什么范围、业务对象之间怎么关联,就很难靠模型自己把整件事拼完整。
为什么企业问数会遇到“选不对”和“走不通”
先看“选不对”。
假设业务人员问:“上个月销售额是多少?”企业的指标体系里,可能同时有销售额、净销售额、含税销售额,以及扣除退款后的销售额。它们的名字很像,算出的数字却可能不同。
如果系统只按名称和问题的相似度召回,就可能选中一个看起来合理、却不符合提问者意图的口径。更麻烦的是,答案有时并不会显得离谱:一个错误口径算出来的数字,也可能像模像样。
银行场景也有类似问题。管理者问“经营情况怎么样”,他想了解的可能是一组指标:一般性存款余额、贷款余额、净利润、中间业务收入等。它们未必都与“经营情况”这几个字相似,却共同构成业务人员理解的经营状况。相似度不等于业务相关性;要选对指标,还需要知道它属于什么业务、适用什么范围、怎么算。
再看“走不通”。
运营负责人看到华东区销售额下降,很可能接着问:“为什么跌了?是哪些客户、哪些品类拖累的?”这时,只找到一个销售额指标已经不够。Agent 需要知道销售额可以按区域、渠道、品类和客户等角度拆解,还要能把区域、客户、订单和商品之间的关系连起来。
如果知识只以相互独立的文档片段呈现,“客户”可能是一段文字,“订单”是另一段文字,但它们之间的业务关系未必以 Agent 可以直接使用的方式表达出来。找到了相关内容,不一定就知道下一步该查什么。
这就是我们在客户实践中看到的共同问题:当业务知识的结构和关系没有被保留下来,Agent 要么在相近口径之间选错,要么在追问“为什么”时不知道该沿哪条路继续走。
本体:把散落的业务知识组织成一张图
我们的思路是,在企业底层数据和上层 AI 应用之间,建立一层围绕业务组织的语义结构。我们把它称为本体。
可以把本体理解为一张业务地图:地图上有哪些地方,它们之间有哪些道路,每个地方有什么特征、可以做什么计算,都需要被清楚地描述出来。它并不要求把所有企业数据物理搬到一处,而是把已有的数据和知识组织成 Agent 能理解、能追溯的业务表达。
在我们的实践中,这张图主要由四部分构成:
- 业务对象,是图上的点。 客户、订单、商品、账户、存款,都是业务人员认识的对象。一个对象背后可能对应多张表,但业务人员不应该被迫先弄清每张表的名字。
- 业务关联,是点与点之间的边。 客户下单、订单包含商品,或客户开立账户、账户关联存款。这些关系把原本分散的数据连成可理解的业务路径。
- 业务属性,是对象身上的信息。 客户有等级和区域,订单有状态和金额;这些属性帮助 Agent 了解一个对象能提供哪些信息,也帮助它区分相近概念。
- 业务口径,是指标背后的计算规则。 销售额如何计算、哪些订单需要排除、存款余额由哪些部分构成,这些规则决定了最终数字的含义。
四者放在一起,AI 面对的就不再只是一些散落的表名、字段和文档片段。它可以先判断问题涉及哪个业务对象,再查看对象的属性、关联和指标口径,逐步找到回答所需的数据。
在实际使用时,还需要区分物理关系和业务关系:两个字段看起来可以连接,不意味着这条连接一定符合业务语义。对象、关系和口径都需要结合企业实际情况校验。
选对指标:先看业务身份,再逐层缩小范围
有了地图,第一步是解决“选不对”。
回到刚才的销售额例子。面对多个名称相近的指标,Agent 不应只问“哪个名字最像”,还要看每个指标的业务定义:它覆盖什么范围、包含或排除了哪些订单、挂在哪类业务对象上,以及是否适用于当前问题。
这些信息相当于指标的“身份”。用户问区域经营大盘时,Agent 可以结合提问中的区域、时间和业务场景,核对候选指标的定义;如果口径仍有歧义,就需要进一步澄清,而不是猜一个看起来最顺眼的答案。
另一点是逐层缩小范围。企业可能积累了大量指标,平铺在一起时,相近名称很容易造成干扰。如果口径按业务对象和业务域组织,Agent 可以先定位相关业务,再展开对应对象及其指标,一步步缩小候选范围。
在银行例子中,用户问“某支行的个人活期存款余额是多少”,Agent 可以先定位存款对象,查看个人活期存款的定义和计算口径,再沿账户与机构之间的关联找到支行条件,最后生成查询。这个过程既要理解“个人活期”,也要理解“某支行”是怎样映射到数据中的。
这里的关键不是保证 AI 永远不会选错,而是给它更多可以核对的业务信息,并让选择过程能够被检查。
走出“为什么”:让 Agent 沿业务关系继续探索
选对指标,只是第一步。用户问“为什么下降”时,还要沿关系继续分析。
我们希望 Agent 不只接收一次检索结果,然后根据手里的材料拼答案;它可以先查看有哪些业务对象,判断要核对哪一项口径,再沿相关关系展开可分析的维度。发现一条线索不匹配,可以回头查看其他候选;有多个可能方向,也可以分别探索和比较。
这个过程中,给模型的信息既要足够覆盖问题,又不能一次性塞进所有知识。我们的做法是通过本体分步组织上下文:每走一步,就提供当前判断需要的对象、属性、关联和口径。
拿“华东区销售额为什么下降”来说,一个可能的分析路径是:
- 确认指标。 结合问题中的区域和时间,检查采用的是哪一项销售额口径,以及计算中是否包含退款等因素。
- 寻找拆解方向。 从指标关联的业务对象出发,查看可以按哪些维度分析,例如区域、渠道、品类和客户。
- 逐层比较。 沿区域、订单、商品等业务关系,比较不同维度的变化,找到对整体变化贡献较大的方向。
- 回到数据验证。 进一步检查相关订单、退款或客户明细,为业务人员提供可以复核的依据。
假设分析发现,线上渠道某个品类的退款变化与整体下跌有关,Agent 就可以把这条线索及其数据依据呈现出来,帮助业务人员决定下一步看什么。
这个例子说明的是分析方法,不意味着有了关系图就能自动证明因果。相关性、变化贡献和真正的业务原因是不同层次的判断,最终仍需要结合指标口径、明细数据和业务规则核实。
我们所说的“从找相似到会行动”,在这里主要指 Agent 能在本体上主动探索、查找和分析,并不等同于自动执行有外部影响的业务操作。涉及写入或触发流程时,仍需要相应的权限、审批和审计。
在 DataPilot 中,这张图如何长出来?
讲到这里,很多人会问:既然本体要描述对象、关系、属性和口径,是不是得先把全公司梳理一遍,才能开始使用?
我们的实践是从一个边界清晰的业务场景开始。先围绕这个场景引入已有数据和知识,形成初步模型,再让业务人员通过真实问题验证它。随着使用和反馈增加,模型逐步得到修正;不同业务域积累成熟后,再探索如何让语义跨域复用。
从已有资产生成初稿
企业通常已经积累了不少可以利用的材料:表结构、字段类型、主外键、数据样本、知识库文档、历史 SQL、BI 看板和 ETL 中的计算逻辑。
不同材料提供的线索并不相同。表名、字段和样本值,有助于识别可能的业务对象及属性;外键等信息可以提供关联线索;知识库、历史 SQL 和 ETL 中,则可能保留了指标筛选条件、业务计算逻辑等更明确的规则。
例如,一项销售额口径可能要求排除测试订单或取消订单。这类规则不一定能从字段名称看出来,但可能已经写在企业文档或历史查询中。建模时,我们需要把这些线索结合起来,映射到业务对象及其口径,并保留与底层数据的对应关系。
大模型和 Agent 可以辅助整理这些材料,减少从头梳理的工作量。但机器生成的是初稿:它可能误解字段、遗漏条件,也可能把物理连接错当成业务关系。因此,初稿必须经过业务专家校验。
在真实问答中校验和完善
让专家直接检查一张图是一种方式;用真实问题来测试,也往往更直观。
业务人员提出经常遇到的问题,查看 Agent 选用了什么口径、沿着什么关系找数据、给出的答案是否符合业务认知。出现错误时,专家可以指出是指标定义不对、关联路径有误,还是缺少了某个业务条件。
这个过程还能帮助企业发现“暗知识”。有些规则没有写进文档,而是存在于有经验的员工脑海里:比如一个指标在特定场景下需要排除哪类记录,或遇到异常时应该先核查什么。通过问答和纠错,这些知识才有机会被记录下来。
但一次用户反馈未必适用于所有部门和所有时间。我们更重视的是:先把反馈作为待确认的线索,明确它的适用范围,再由业务人员决定如何更新共享语义。使用本身能帮助暴露问题,却不能代替对知识正确性的判断。
为什么我们不从一张全域大图开始
当一个子域的本体能够服务真实业务后,大家自然会想到下一步:能否把多个场景连起来,形成覆盖更广范围的业务理解?
这确实是我们关注的方向。但如果一开始就自上而下铺开全域建模,很容易遇到几个问题。
首先是过度抽象。不同部门为了达成统一,可能把“客户”定义成“与企业发生商业关系的主体”。这句话没有错,但太宽泛,到了具体的零售存款、对公信贷或风险管理场景,仍然需要区分不同的对象和规则。
其次是对齐成本高。跨部门反复开会可以帮助厘清分歧,但如果缺少具体问题牵引,讨论可能停留在概念层面,业务部门迟迟看不到自己的问题被解决。
还有静态化的问题。业务在变化,口径也在变化;如果本体被当成一次性工程,建完之后缺乏使用和维护,就可能逐渐偏离现实。
因此,我们更倾向于从局部开始:先让一个子域解决问题,再以经过验证的知识为基础,探索跨域关联和复用。相同概念需要识别共性,也需要保留差异;不能简单地把所有同名对象合并成一个。
我们的长期方向,是让多个业务子域的语义逐步汇聚,并探索让新场景复用已有知识。但这一方向仍需持续实践,目前还不能简单理解为所有子本体都能自动合并,或新 Agent 接入后就天然理解整家企业。
从找相似,到找路径
模型会越来越强,但企业的业务定义、数据关系和分析经验,不会因为模型能力提升就自动变得清晰。
对于企业 Data Agent,能查到数字只是第一步。更进一步,需要选对口径,知道从哪里找证据,能够沿业务关系展开分析,也能让业务人员看清结论是如何得出的。
我们对本体驱动的理解,就是把这些分散的业务知识组织起来,让 Agent 有路可走;再通过具体场景、专家校验和持续反馈,让这张图跟着业务一起演进。
从一个经常被追问“为什么”的问题开始,定义清楚相关对象和口径,走通一条可验证的分析路径,再根据使用中的错误逐步完善。让一个问题的答案更可靠,比一开始画出一张覆盖全公司的大图更有价值。
