为智能体提供可靠的“对话数据仓库”访问模式,无需原始文本到SQL
摘要
一种为AI智能体提供可靠数据仓库访问的模式,使用精心策划的语义层(Databricks Genie)而非原始文本到SQL,提高了准确性和治理能力。智能体将Genie的Conversation API作为工具调用,同时接收自然语言响应和精确SQL。
在构建智能体时,我不断遇到的一个棘手问题是让它们能够回答关于结构化数据仓库的问题。针对原始表的朴素文本到SQL方法很脆弱:模型会猜测连接键、臆断列含义,并给出自信的错误数字。对我而言更有效的模式是在智能体和表之间放置一个精心策划的语义层,让智能体将其作为工具调用,而不是从头编写SQL。我使用的版本是Databricks Genie。其理念是构建一个限定于特定表集的“Genie Space”,并用示例SQL查询、用于业务定义的可重用SQL表达式以及针对标准税务或收入计算等内容的认证/可信函数来策划它。策划是核心:当智能体提问时,Genie将问题与经过验证的示例和定义进行匹配,而不是自由发挥,因此它受Unity Catalog权限管理,并且比将模型指向原始模式一致得多。在机制上,您的智能体只需将Genie Conversation API作为工具调用。您向/api/2.0/genie/spaces/{space_id}/start-conversation发送一个自然语言问题的POST请求,然后轮询消息端点直到状态变为COMPLETED。响应以附件形式返回,包含自然语言文本、Genie生成的实际SQL,以及一个attachment_id,您可以使用它从查询结果端点获取结果集。因此,您的智能体既能获得可以推理的行数据,也能获得精确的SQL,这对于透明度和让用户验证查询非常有用。它也是有状态的,因此智能体可以在同一对话中提出后续问题。还有“智能体模式”(原研究智能体)用于更复杂的问题,它会构建研究计划、运行多个查询,并返回带有引用的报告,而不是单一答案。好奇其他人是如何解决这个问题的。你们是给智能体提供这样的策划语义层,还是暴露带有防护措施的只读SQL,或者完全采用其他方法来保持结构化数据答案的可信度?
相似文章
构建数据代理
探讨从文本转SQL到自主数据代理的演变,比较了使用LangGraph自定义构建的代理与Snowflake Cortex Analyst、Databricks Genie和PowerBI Copilot等托管平台。
真正推动Genie进步的关键因素
关于为销售/管道数据搭建Genie AI自然语言查询工具的实用技巧,强调精心策划的示例SQL和元数据比自由文本指令更有效。
一种基于语义层的异构企业数据库自然语言转SQL智能体
本文提出了一种基于语义层的NL2SQL智能体,通过推理精心设计的语义模型将意图与物理执行解耦,在Spider2-snow基准上实现了94.15%的执行准确率。
AgentNLQ:一种通用的自然语言到SQL代理
本文介绍了AgentNLQ,一个用于自然语言到SQL转换的多代理系统,通过模式增强和自校正编排器在BIRD基准测试上达到了78.1%的语义准确率。
如果你给AI智能体提供真实数据和一个发送按钮,它最终会泄露。我构建了一个工作空间,从结构上使其不可能发生。
作者分享了一种开源工作空间架构,通过强制执行人工把控的出站操作并将引擎与数据仓库隔离,从结构上防止AI智能体泄露私人数据。