QueryData 是 Conversational Analytics API 中的一种自然语言转 SQL (NL2SQL) 工具,可让您的 AI 智能体和应用使用自然语言查询运维数据库。当应用或智能体使用自然语言发送问题时,QueryData 会将问题转换为特定方言的 SQL 查询,针对您的数据库运行该查询,并返回查询结果以及生成的 SQL 和 QueryData 如何解读该问题的说明。
如需详细了解如何将 QueryData 与数据库搭配使用,请参阅所支持数据库的相关文档:
- AlloyDB for PostgreSQL:QueryData 概览
- Cloud SQL for MySQL:QueryData 概览
- Cloud SQL for PostgreSQL:QueryData 概览
- Spanner:QueryData 概览(GoogleSQL 方言数据库)
- 与 MongoDB 兼容的 Firestore:QueryData 概览
主要功能
QueryData 为智能体数据库应用提供以下功能:
- 高准确率:通过将数据库架构元数据与您精选的上下文集相结合,在关键业务查询中实现近乎 100% 的准确率。
- 业务相关性:根据组织的领域术语、指标定义和业务逻辑生成 SQL,而不是仅依赖于原始表和列名称。
- 可解释性:在生成合成 SQL 查询和自然语言回答的同时,生成人类可读的意图解释,以便您和您的用户可以验证 QueryData 如何转换请求。
- 数据安全:在 AlloyDB、Cloud SQL for MySQL 和 Cloud SQL for PostgreSQL 中使用参数化安全视图,强制执行行级访问权限控制,并保护用户数据免受提示词注入攻击。
何时使用 QueryData
QueryData 专为构建交互式应用和 AI 智能体的开发者而设计,这些应用和智能体需要快速、可预测且准确地访问运营数据库数据。例如,QueryData 非常适合以下应用场景:
- 客户服务自动化:回答大量用户询问,例如“我的订单在哪里?”或“我的当前账号余额是多少?”
- 电子商务和目录搜索助理:帮助用户通过多条件问题过滤和探索结构化目录,例如“向我展示至少具有 16 GB RAM 且电池续航时间超过 10 小时的轻量级笔记本电脑”。
- 现场运营和内部工具:让员工能够实时查询实时库存水平、零件供应情况或服务工单状态。
- Agentic Workflows:在智能体开发套件 (ADK)、MCP Toolbox for Databases 或 LangChain 等 Agentic Workflows 框架中,将结构化数据库查询作为工具公开。
QueryData 的运作方式
通用大语言模型 (LLM) 不了解贵组织的私有数据值、晦涩难懂的列名称或特定于网域的业务规则。为了弥合用户提问方式与数据库存储数据方式之间的差距,QueryData 使用了以下分层上下文:
- 架构本体:数据库目录或 Knowledge Catalog 中丰富的表和列说明,用于解释表、列、状态代码和联接关系的业务含义。
- 上下文集:与数据库实例关联的精选集合,用于定义以下三个组成要素:
- 查询模板:代表性的自然语言问题,与经过验证的参数化 SQL 语句和 intent 说明配对。
- 查询分面:QueryData 动态组合查询模板的模块化 SQL 谓词和过滤条件片段,以支持分面搜索,而无需为每个过滤条件组合使用单独的模板。
- 值搜索:精确、模糊三元组或语义向量搜索查询,可将非正式用户短语、同义词或拼写错误的字词与数据库中的实际值和列相关联。
当您的应用调用 Conversational Analytics API 中的 projects.locations.queryData 方法时,QueryData 会执行以下步骤:
- 值解析:针对数据库运行值搜索查询,将提示中的实体短语(例如城市名称、商品类别或代码)映射到确切的数据库列值。
- 意图匹配和消除歧义:将用户的问题与上下文集中的查询模板和切面以及架构本体进行匹配。如果问题不明确或缺少必需参数,QueryData 可以返回消除歧义的问题,以澄清用户的意图。
- 查询合成:通过组合匹配的模板结构、适用的 facet 和解析的字面量值,或在没有模板匹配时根据架构本体生成 SQL,来合成特定于方言的 SQL 查询。
- 查询执行和响应:针对目标数据库执行生成的 SQL,并返回表格结果集、生成的 SQL 查询、意图说明和可选的自然语言摘要。
在文本转 SQL 方面实现近乎 100% 准确率的策略
在文本转 SQL 方面实现近乎 100% 的准确率是一个迭代工程过程,称为爬山法。您无需尝试预先预测每个可能的用户问题,而是从基准架构说明开始,使用 EvalBench 根据黄金 SQL 查询的代表性基准评估代理,然后解决准确率差距。
如需详细了解用于解决准确率差距的推荐策略(或方法),包括架构图、SQL 示例和评估基准,请参阅在 AlloyDB 中实现近乎 100% 准确的文本转 SQL 的六种方法,并尝试配套 Codelab,了解如何实现这些文本转 SQL 准确率方法。
总而言之,这六种方案如下:
- 方案 0:初始化上下文集并连接应用。首先,在架构中添加描述性表和列注释,然后使用 Conversational Analytics API 客户端库或 MCP Toolbox for Databases 中的
cloud-gemini-data-analytics-query工具将应用连接到 QueryData。 - 方案 1:使用查询模板注入解释。针对最重要的业务问题提供经过验证的示例 SQL 查询,并将其泛化为参数化 SQL 模板、参数化 intent 说明以及捕获语义等效问题变体的清单。
- 方案 2:使用分面模板。将基本查询模板与模块化查询方面(具有自己的清单和意图的可重用 SQL 条件)配对,以便 QueryData 可以动态组合多过滤条件查询,而无需为每个条件组合使用单独的模板。
- 方案 3:通过值搜索消除歧义。定义值搜索查询,将自然语言问题中的值短语(包括专用术语、同义词和拼写错误)与实际数据库列和值相关联,并在某个术语与多个实体类型匹配时让 QueryData 提示用户进行澄清。
- 方案 4:集成语义搜索和 AI 运算符。将结构化 SQL 模板和分面与 Vector Search 和数据库内 AI 运算符(例如 AlloyDB 中的
AI.IF和AI.RANK)相结合,以使用语义条件过滤和排名非结构化文本或多模态数据。 - 方案 5:使用参数化安全视图。通过在 AlloyDB、Cloud SQL for MySQL 和 Cloud SQL for PostgreSQL 的参数化安全视图中绑定经过身份验证的用户参数,强制执行严格的行级安全措施,并保护用户数据免受提示词注入攻击。
您可以手动应用这些方法,也可以使用开源上下文工程智能体自动执行爬山工作流,包括扩展评估集、运行 EvalBench 评估、分析准确率差距,以及提出新的模板、方面和值搜索。
后续步骤
- 阅读《在 AlloyDB 中实现近乎 100% 准确的文本转 SQL 的六种方法》白皮书。
- 浏览适用于您数据库的 QueryData 文档:
- 了解如何在 Conversational Analytics API 中为数据库数据源定义数据智能体上下文。
- 查看
projects.locations.queryDataREST API 参考文档。