Home
开源技术本页
绘画类
author_avatarpgai

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

标签:
ai
llm
postgresql
rag
点击访问timescale/pgai
pgai

pgai基本信息

PostgreSQL License
2151stars
100forks
23watching
最近更新时间:2024/12/01, 03:47
最新版本:pgai: v0.2.0

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 环境变量。

        PYTHONPATH=/path/to/venv/lib/python3.12/site-packages \
        VIRTUAL_ENV=/path/to/venv \
        pg_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 选项:

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

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

  2. 安装 pgai PostgreSQL 扩展:

    just ext install
    

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

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

在数据库中启用 pgai 扩展

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

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

    CREATE EXTENSION IF NOT EXISTS ai CASCADE;
    

    CASCADE 将自动安装 pgvectorplpython3u 扩展。

使用 pgai

pgai 的主要功能包括:

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

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

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

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

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

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

SELECT ai.create_vectorizer(
    <table_name>::regclass,
    destination => <embedding_table_name>,
    embedding => ai.embedding_openai(<model_name>, <dimensions>),
    chunking => ai.chunking_recursive_character_text_splitter(<column_name>)
);

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

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

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

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

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

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

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

  1. 创建一个 RAG 函数:

    CREATE OR REPLACE FUNCTION generate_rag_response(query_text TEXT)
    RETURNS TEXT AS $$
    DECLARE
       context_chunks TEXT;
       response TEXT;
    BEGIN
       -- 执行相似性搜索以找到相关的博客文章
       SELECT string_agg(title || ': ' || chunk, ' ') INTO context_chunks
       FROM (
           SELECT title, chunk
           FROM blogs_embedding
           ORDER BY embedding <=> ai.openai_embed('text-embedding-3-small', query_text)
           LIMIT 3
       ) AS relevant_posts;
    
       -- 使用 gpt-4o-mini 生成摘要
       SELECT ai.openai_chat_complete(
           'gpt-4o-mini',
           jsonb_build_array(
               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.'),
               jsonb_build_object('role', 'user', 'content', format('Context: %s\n\nUser Question: %s\n\nAssistant:', context_chunks, query_text))
           )
       )->'choices'->0->'message'->>'content' INTO response;
    
       RETURN response;
    END;
    $$ LANGUAGE plpgsql;
    
  2. 在 SQL 查询中执行你的函数:

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

参与其中

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

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

关于 Timescale

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

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

免责声明:本站大资源来自网络收集整理,小部分资源来自原创,如有侵权等,请联系处理。
AI奇想空间
AI奇想空间
https://aimazing.site
AI 奇想空间是一个汇聚人工智能工具、资源和教程的导航网站。 在这里,你可以发现最新的AI技术、工具和应用,学习如何使用各种 AI 平台和框架,获取丰富的 AI 资源。 欢迎广大 AI 爱好者加入我们的社区,开启你的AI之旅!
AI交流群
Copyright © 2024 AI奇想空间.微信