绘画类

pgai

作者头像
项目作者timescale

A suite of tools to develop RAG, semantic search, and other AI applications more easily with PostgreSQL

pgai 预览图

pgai 介绍

了解项目的详细信息和使用方法

pgai 让您能够直接在 PostgreSQL 中开发 RAG、语义搜索和其他 AI 应用程序

Discord Try Timescale for free

pgai 简化了使用 PostgreSQL 构建搜索检索增强生成(RAG)和其他 AI 应用程序的过程。它补充了 PostgreSQL 中用于向量搜索的流行扩展,例如 pgvector 和 pgvectorscale,以进一步提升其功能。

概述

pgai 的目标是让开发人员更轻松地使用 AI。由于数据是大多数 AI 应用程序的基础,pgai 使您能够更轻松地在 AI 工作流中利用数据。具体来说,pgai 支持以下功能:

处理从您的数据生成的嵌入:

  • 自动创建并同步数据的向量嵌入 (了解更多
  • 使用向量和语义搜索查询您的数据 (了解更多
  • 在单个 SQL 语句中实现检索增强生成 (了解更多
  • 使用 pgvectorscale 对大量向量工作负载执行高性能、经济高效的近似最近邻搜索,该功能补充了 pgvector。

利用大语言模型进行数据处理任务:

  • 从如 Claude Sonnet 3.5、OpenAI GPT4o、Cohere Command 和 Llama 3(通过 Ollama)的模型中获取大语言模型聊天完成 (了解更多
  • 基于现有 PostgreSQL 关系数据进行分类、总结和数据丰富化 (查看示例)。

了解更多关于 pgai 的信息: 想了解关于 pgai 扩展的更多信息以及我们构建它的原因,请阅读 pgai:为 PostgreSQL 开发者提供 AI 工程超级能力

贡献:我们欢迎对 pgai 的贡献!有关更多信息,请参阅 Contributing 页面。

演示:pgai 向量化器

Auto Create and Sync Vector Embeddings in 1 Line of SQL (pgai Vectorizer)

入门指南

以下是如何开始使用 pgai 的方法:

为了快速入门,请尝试使用 pgai 向量化器进行自动数据嵌入:

  • 通过创建 免费试用帐户 来尝试我们的云服务,并查看我们的 pgai 向量化器 文档
  • 或者查看我们的 快速入门指南,在不到 10 分钟内使用自托管的 Postgres 实例快速启动并运行。

对于其他用例,请首先在 Timescale Cloud、预构建的 Docker 镜像或源码中安装 pgai。然后,选择您的冒险方式:

  • 使用 pgai 向量化器 自动化 AI 嵌入。
  • 使用 pgai 集成来自供应商的 AI。一些例子包括:
    • Ollama - 为 Ollama 配置 pgai,然后使用模型进行嵌入、聊天完成和生成。
    • OpenAI - 为 OpenAI 配置 pgai,然后使用模型进行 tokenization、嵌入、聊天完成和审查。此页面还包含高级示例。
    • Anthropic - 为 Anthropic 配置 pgai,然后使用模型生成内容。
    • Cohere - 为 Cohere 配置 pgai,然后使用模型进行 tokenization、嵌入、聊天完成、分类和重排。
  • 利用大语言模型进行数据处理任务,如分类、总结和数据丰富化 (查看 OpenAI 示例)。

安装

运行带有 pgai 扩展的 PostgreSQL 最快的方法是:

  1. 创建数据库环境。可以选择:

  2. 启用 pgai 扩展

  3. 使用 pgai

使用预构建的 Docker 容器

运行 TimescaleDB Docker 镜像,然后启用 pgai 扩展

使用 Timescale 云服务

pgai 可用于新的或现有的 Timescale 云服务。对于任何服务,启用 pgai 扩展

从源代码安装

要在 PostgreSQL 服务器上从源码安装 pgai:

  1. 在系统全局安装所需的软件

    • Python3:如果在终端运行 python3 --version 返回 command not found,请下载并安装最新版本的 Python3

    • Pip:如果在终端运行 pip --version 返回 command not found

      • 标准安装:使用 pip 支持的方法

      • 虚拟环境:通常,如果您在一个 Python 虚拟环境 中工作,则 pip 会自动安装。如果您在虚拟环境中运行 PostgreSQL,则 pgai 需要几个 Python 包。在启动 PostgreSQL 服务器之前设置 PYTHONPATHVIRTUAL_ENV 环境变量。

        bash
        1PYTHONPATH=/path/to/venv/lib/python3.12/site-packages \ 2VIRTUAL_ENV=/path/to/venv \ 3pg_ctl -D /path/to/data -l logfile start
    • PL/Python:请参考如何安装带有 plpython3u 的 Postgres 16:适用于 macOS、Ubuntu、Debian、CentOS、Docker 的配方

      macOS:Homebrew 中的标准 PostgreSQL 不包括 plpython3 扩展。以下说明展示了如何从备用 tap 安装。

      • asdf 版本管理器的 Postgresql 插件:在安装 PostgreSQL 时设置 --with-python 选项:

        bash
        1POSTGRES_EXTRA_CONFIGURE_OPTIONS=--with-python asdf install postgres 16.3
    • pgvector:请根据官方仓库的 安装说明 进行安装。

    这些扩展将在您 启用 pgai 扩展 时自动添加到您的 PostgreSQL 数据库中。

  2. 安装 pgai PostgreSQL 扩展:

    bash
    1just ext install

    我们使用 just 来运行项目命令。如果您没有 just,您可以用以下方法安装扩展:

    bash
    1projects/extension/build.py install
  3. 启用 pgai 扩展

在数据库中启用 pgai 扩展

  1. 使用如 psql v16PopSQL 的 Postgres 客户端连接到您的数据库。

    bash
    1psql -d "postgres://<username>:<password>@<host>:<port>/<database-name>"
  2. 创建 pgai 扩展:

    sql
    1CREATE EXTENSION IF NOT EXISTS ai CASCADE;

    CASCADE 将自动安装 pgvectorplpython3u 扩展。

使用 pgai

pgai 的主要功能包括:

处理从您的数据生成的嵌入:

利用大语言模型进行数据处理任务: 您可以使用 pgai 集成以下供应商的 AI:

了解如何使用触发器和后台作业直接在数据库中审查内容。

自动创建并同步数据的大语言模型嵌入

pgvectorpgvectorscale 扩展允许您 在数据库中存储向量嵌入并进行快速高效的向量搜索。pgai 向量化器 基于这些扩展 自动为数据库中的任何文本数据创建和同步嵌入。

只需一行代码,您就可以定义一个为数据表创建嵌入的向量化器:

sql
1SELECT ai.create_vectorizer( 2 <table_name>::regclass, 3 destination => <embedding_table_name>, 4 embedding => ai.embedding_openai(<model_name>, <dimensions>), 5 chunking => ai.chunking_recursive_character_text_splitter(<column_name>) 6);

这个新创建的向量化器将自动跟踪源数据表中的任何更改,并异步更新目标嵌入表。Automate AI embedding with pgai Vectorizer 向你展示了如何在你自己的数据中实现嵌入。当你在 Timescale Cloud 数据库中创建 Vectorizers 时,嵌入会在后台自动创建并同步。在自托管的 Postgres 环境中,你可以使用 Vectorizer Worker 来异步处理你的 Vectorizers。

使用向量和语义搜索查询你的数据

pgai 提供了一系列函数,让你可以通过 SQL 直接与大语言模型(LLM)进行交互,从而能够直接在数据库中进行语义搜索:

sql
1SELECT 2 chunk, 3 embedding <=> ai.openai_embed(<embedding_model>, 'some-query') as distance 4FROM <embedding_table> 5ORDER BY distance 6LIMIT 5;

这是一个完全正常的 SQL 查询。你可以将它与 where 子句和其他 SQL 功能结合使用,以进一步优化你的搜索。pgai 真正解决了向量搜索中缺少 where 子句的问题。

在单个 SQL 语句中实现检索增强生成(RAG)

类似于语义搜索,pgai 的 LLM 函数允许你直接在数据库中实现 RAG。例如:

  1. 创建一个 RAG 函数:

    sql
    1CREATE OR REPLACE FUNCTION generate_rag_response(query_text TEXT) 2RETURNS TEXT AS $$ 3DECLARE 4 context_chunks TEXT; 5 response TEXT; 6BEGIN 7 -- 执行相似性搜索以找到相关的博客文章 8 SELECT string_agg(title || ': ' || chunk, ' ') INTO context_chunks 9 FROM ( 10 SELECT title, chunk 11 FROM blogs_embedding 12 ORDER BY embedding <=> ai.openai_embed('text-embedding-3-small', query_text) 13 LIMIT 3 14 ) AS relevant_posts; 15 16 -- 使用 gpt-4o-mini 生成摘要 17 SELECT ai.openai_chat_complete( 18 'gpt-4o-mini', 19 jsonb_build_array( 20 jsonb_build_object('role', 'system', 'content', 'You are a helpful assistant. Use only the context provided to answer the question. Also mention the titles of the blog posts you use to answer the question.'), 21 jsonb_build_object('role', 'user', 'content', format('Context: %s\n\nUser Question: %s\n\nAssistant:', context_chunks, query_text)) 22 ) 23 )->'choices'->0->'message'->>'content' INTO response; 24 25 RETURN response; 26END; 27$$ LANGUAGE plpgsql;
  2. 在 SQL 查询中执行你的函数:

    sql
    1SELECT generate_rag_response('Give me some startup advice');

参与其中

pgai 仍处于早期阶段。现在正是帮助塑造这个项目方向的好时机;我们目前正在决定优先事项。查看我们正在考虑的功能列表吧。欢迎发表评论、扩展列表或加入讨论论坛。

要开始,看看如何贡献如何设置开发/测试环境

关于 Timescale

Timescale 是一家 PostgreSQL 数据库公司。想了解更多,请访问 timescale.com

Timescale Cloud 是一个高性能、开发者专注的云平台,提供用于最苛刻的 AI、时间序列、分析和事件工作负载的 PostgreSQL 服务。Timescale Cloud 非常适合生产应用,拥有高可用性、流式备份、逐步升级、角色与权限以及出色的安全性。

Stars
3.4k
Forks
164
Watch
30
版本 pgai: v0.4.0
PostgreSQL License
更新于 2025年1月10日
ai, llm, postgresql, rag
免责声明:本站大资源来自网络收集整理,小部分资源来自原创,如有侵权等,请联系处理。

相关项目

探索更多类似的开源项目