跳转到主要内容

你的数据库模式是 AI Agent 的心智模型

阅读需 2 分钟Tian PanTian Pan

大多数构建智能体(agent)的团队将数据库模式(schema)视为后端关注的问题。这种模式是由工程师为工程师设计的,遵循了数十年关系型数据库的最佳实践:积极规范化、避免冗余、拆分引用表、强制执行外键。这种方法对于联机事务处理(OLTP)系统是正确的,但对于 AI 智能体来说通常是错误的。

当智能体读取你的模式以确定如何回答问题时,它并不是在解析数据结构,而是在构建你业务的心智模型。如果你的模式是为已经理解该领域的应用程序代码构建的,那么智能体将根据为别人绘制的地图进行工作。结果就是幻觉式的联接、错误的聚合,以及原本只需两步却需要八步的工具调用链。

这主要不是提示词(prompting)的问题。你可以在系统提示词中添加模式描述,提供少样本示例(few-shot examples),并通过思维链(chain-of-thought)生成查询——但仍然会得到错误的结果。根本问题在于你的实体模型编码了 LLM 无法读取的假设。对智能体友好的模式仅凭结构就能使正确答案一目了然。

规范化陷阱

规范化是传统数据库设计的优点。第三范式消除了冗余,防止了更新异常,并保持了数据的一致性。它也是智能体 SQL 错误最常见的单一来源。

关于 LLM 如何处理不同模式形式的研究显示了一个清晰的模式:对于简单的检索查询,反规范化模式的表现显著优于规范化模式,而规范化模式在复杂的聚合方面具有优势。问题在于智能体经常面临检索查询——“获取客户当前的计划”或“这类产品有哪些”——而规范化模式将这些查询中的每一个都转化为多表联接,模型必须从头开始进行推理。

规范化模式导致的四种最常见失败模式是:

联接类型混淆。 模型在正确答案需要左外联接(LEFT OUTER JOIN)时默认使用内联接(INNER JOIN)。当记录在联接表中可能没有对应行时(例如没有发货的订单、没有订阅的用户),这很重要,因为内联接会静默丢弃这些行。智能体会返回自信但错误的结果。

基础表选择错误。 当规范化模式拥有如 usersuser_profilesuser_preferences 之类的表时,智能体经常为查询选择错误的锚点表。它们会从听起来与问题最相关的实体开始,而不是从正确代表查询语义的实体开始。

空值处理失败。 反规范化模式以不同方式暴露可空性问题。在规范化模式中,缺失的关系表现为缺失的外键行。在反规范化的模式中,它是一个空的列值。当空值的含义在模式中不明确时,智能体很难正确应用 IS NULL / IS NOT NULL 过滤器。

命名不透明。FLEX_FIELD_1status_cdacct_type 这样的列名对于没有应用层上下文来解码它们的模型来说是不透明的。隐晦的名称迫使智能体猜测或产生关于列代表什么的幻觉。如果它猜错了,它就会使用错误的过滤器,你就会得到结构有效但在语义上错误的结果。

为什么你的实体模型会成为智能体的心智模型

更深层的问题是概念性的。编写应用程序代码的人类工程师通过数月的背景信息来理解领域:产品会议、代码审查、团队内部知识。他们知道 status = 2 意味着“活跃”,因为他们在两年前的 Slack 讨论中读过那条注释。

智能体获取你的模式、可能还有一些描述,以及一个用户问题。它必须仅凭这些来重建你的领域模型。如果你的模式具有表现力——表名读起来像句子,关系显而易见,引用数据具有人类可读性——智能体就可以快速构建准确的模型。如果你的模式是为应用效率而构建的规范化关系结构,那么智能体在每次查询时都在对外部代码库进行逆向工程。

这直接影响工具调用的次数。查询设计不当模式的智能体会发出更多调用:首先探索模式结构,然后检查状态列包含哪些值,接着验证使用哪个联接,最后纠正初始错误结果。这些往返过程增加了延迟和成本。直接表达领域语义的模式可以显著减少这种探索开销。

减少工具调用的引用数据模式

引用数据——状态、类型、类别、省份/州的查找表——是产生不必要工具调用的常见放大器。一个带有独立 order_statuses 表(包含如 1: pending2: shipped3: delivered 等行)的模式要求智能体联接该表或进行单独的查找调用,仅仅为了按状态过滤订单。

替代方案是直接呈现引用数据。这并不意味着从你的存储模型中消除查找表,但它确实意味着你向智能体公开的内容应该是可读的值,而不是 ID。

三个实用的模式:

内联枚举类列。 对于低基数的引用数据,直接存储字符串值(status = 'shipped'),而不是指向状态表的外键。这是一种反规范化,但它是正确的一种。智能体可以编写 WHERE status = 'shipped' 而无需知道 ID 映射。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 9 分钟

当数据库迁移悄然摧毁 AI Agent 的世界模型

一次常规的列重命名可能在不触发任何告警的情况下悄悄破坏 AI Agent 的推理。Schema-Prompt 契约测试和 CI 门禁如何在用户发现之前捕获这种漂移。

insider
ai-agents
阅读需 10 分钟

租赁智能:CFO 的 LLM 支出心理模型

Token 支出表现得更像销售成本(COGS)而非研发费用(R&D)——将随用量扩大的成本当做固定成本来定价,正是让财务团队措手不及的原因。本文提供了一个预测 LLM 支出、识别利润陷阱并决定何时“租赁智能”才划算的实用模型。

insider
llm
阅读需 10 分钟

Schema 驱动的 Prompt 设计:让你的数据模型主导 Prompt 结构

你的实体 Schema 形态直接决定了 LLM 输出的可靠性。了解规范化、嵌套深度、字段排序和枚举约束如何影响幻觉率 —— 以及掌握让 Prompt 到输出的映射更具可预测性的重构模式。

insider
llm
阅读需 11 分钟

如何在 CI 中对 AI Agent 工作流进行集成测试,而无需完全 Mock 模型

一种针对 AI Agent 的三层 CI 测试架构,既能避免实时 API 调用产生的成本,也能避免完全 Mock 模型带来的空洞感 —— 通过使用 StubLLM 测试替身、VCR 录制回放以及工具契约测试,在编排 Bug 进入生产环境前将其捕获。

insider
ai-agents
阅读需 9 分钟

测试无法察觉却破坏了一切的模型升级

你迁移到了更新的模型,所有评估都通过了,延迟也降低了,但支持工单却不断增加。本文将探讨这类能够绕过所有断言的回归问题,以及如何在用户发现之前捕捉到它们。

insider
llm