pg_ai_query: PostgreSQL 智能查询扩展

John Doe 十一月 26, 2025

PostgreSQL 智能查询扩展(pg_ai_query)是一款功能强大的 PostgreSQL 扩展插件,它借助 OpenAI 和 Anthropic 提供的顶尖人工智能模型,能将自然语言描述转换为 SQL 查询语句。

image

什么是 pg_ai_query?

pg_ai_query 利用大语言模型(LLM)理解用户意图,并自动生成经过优化的 PostgreSQL 查询语句,从而打通了自然语言与 SQL 之间的壁垒。该扩展可直接集成到你的 PostgreSQL 数据库中,让你能够通过简单的英文描述,无缝查询数据库中的数据。

核心功能

  • 自然语言转 SQL:将简单的英文描述转换为有效的 PostgreSQL 查询语句
  • AI 驱动的查询分析:通过EXPLAIN ANALYZE分析查询性能,并提供优化思路
  • 自动模式发现:扩展会自动分析数据库模式(schema),理解表结构、表之间的关系及约束条件
  • 支持多个 AI 提供商:兼容 OpenAI(GPT-4、GPT-3.5 模型)和 Anthropic(Claude 模型)
  • 智能查询生成:生成包含合适JOIN子句、WHERE子句和LIMIT约束的优化查询语句
  • 性能优化:获取 AI 推荐的查询改进方案及索引创建建议
  • 安全优先:内置防护机制,可防范危险操作及对系统表的未授权访问
  • 高度可配置:灵活的配置系统,支持 API 密钥管理、模型选择和日志记录
  • 支持原生 PostgreSQL:作为原生扩展直接在 PostgreSQL 内部运行

工作原理

  1. 模式分析:扩展自动发现并分析数据库模式(schema)
  2. 自然语言处理:AI 模型对用户输入的自然语言查询进行处理和意图理解
  3. SQL 生成:AI 根据数据库模式和用户需求,生成对应的 SQL 查询语句
  4. 查询验证:对生成的查询语句进行安全性和正确性验证
  5. 可执行状态:向用户返回可直接执行的 SQL 查询语句

使用示例

查询生成

-- 简单查询
SELECT generate_query('show me all users created in the last 7 days');
-- 查询过去 7 天内创建的所有用户

-- 使用自定义 API 密钥
SELECT generate_query('count orders by status', 'your-api-key-here');
-- 按订单状态统计订单数量(需替换为你的 API 密钥)

-- 指定 AI 提供商
SELECT generate_query('find top 10 customers by revenue', 'your-api-key', 'openai');
-- 查询收入排名前 10 的客户(需替换为你的 API 密钥,指定使用 OpenAI 模型)

查询性能分析

-- 分析查询性能
SELECT explain_query('SELECT * FROM users WHERE active = true');

-- 获取复杂查询的优化建议
SELECT explain_query('
    SELECT u.username, COUNT(o.id) as orders
    FROM users u
    LEFT JOIN orders o ON u.id = o.user_id
    GROUP BY u.username
    ORDER BY orders DESC
');

-- 结合查询生成与性能分析
WITH generated AS (
    SELECT generate_query('find high-value recent orders') as query
)
SELECT explain_query((SELECT query FROM generated));
-- 先生成“查询近期高价值订单”的 SQL,再分析该查询的性能

支持的 AI 模型

OpenAI 模型

  • GPT-4o:最新且功能最强的模型
  • GPT-4:具备高质量推理能力和代码生成能力
  • GPT-3.5 Turbo:速度快、效率高,适用于简单查询场景

Anthropic 模型

  • Claude 3.5 Sonnet:具备高级推理能力和出色的自然语言理解能力

应用场景

  • 数据探索:无需编写复杂 SQL,即可快速探索数据库中的数据
  • 查询优化:借助 AI 分析慢查询,获取优化方案
  • 性能监控:定期分析关键查询,防范性能退化问题
  • 商业智能:通过自然语言描述生成报表及数据分析查询
  • SQL 学习:了解自然语言如何转换为 SQL 语法,学习查询优化技巧
  • 索引规划:获取 AI 推荐的数据库索引创建策略
  • 快速原型开发:为测试和开发场景快速生成查询语句
  • 文档编写:为数据库文档生成示例查询语句

架构组成

该扩展由以下几个核心组件构成:

  • 查询生成器:处理自然语言并生成 SQL 的核心引擎
  • 查询分析器:结合EXPLAIN ANALYZE和 AI 分析的性能分析引擎
  • 模式发现器:自动分析数据库结构及表之间关系的组件
  • AI 提供商集成器:处理与 OpenAI、Anthropic API 通信的组件
  • 配置管理器:管理设置、API 密钥及模型配置的组件
  • 安全验证器:确保生成的查询语句安全且符合权限要求的组件

参考

pg_ai_query:https://github.com/benodiwal/pg_ai_query