OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  PostgresML — 把机器学习能力直接带进 PostgreSQL

PostgresML — 把机器学习能力直接带进 PostgreSQL

 
  after ·  2026-03-21 18:10:14 · 1 次点击  · 0 条评论  
Logo

为 ML/AI 应用提供 Postgres + GPU 支持。

| 文档 | 博客 | Discord |


为什么要在 Postgres 中进行 ML/AI?

ML 和 AI 系统的数据本质上比模型更大、更动态。将模型移至数据库,而不是不断地将数据移至模型,效率更高、更易于管理且更可靠。


架构

Logo
PostgresML 是一个强大的 Postgres 扩展,可在数据库内无缝结合数据存储与机器学习推理。通过集成这些功能,PostgresML 消除了对独立系统和数据迁移的需求,使您能够直接在数据所在位置执行 ML 操作。

功能概览

  • 数据库内 ML/AI:直接在 PostgreSQL 中运行机器学习和 AI 操作
  • GPU 加速:利用 GPU 能力实现更快的计算和模型推理
  • 大语言模型:集成并使用来自 Hugging Face 的先进 LLM
  • RAG 管道:内置用于文本分块、嵌入、排序和转换的函数
  • 向量搜索:利用 pgvector 集成实现高效的相似性搜索
  • 多样化的 ML 算法:提供 47 种以上的分类和回归算法
  • 高性能:相比基于 HTTP 的模型服务,推理速度提升 8-40 倍
  • 可扩展性:支持每秒数百万次事务处理和水平扩展
  • NLP 任务:广泛的自然语言处理能力
  • 安全性:通过将模型和数据放在一起增强数据隐私
  • 无缝集成:与现有的 PostgreSQL 工具和客户端库协同工作

快速开始

使用 PostgresML 的唯一前提是拥有一个安装了我们的开源 pgml 扩展的 Postgres 数据库。

PostgresML 云服务

我们的无服务器云服务是最简单且推荐的入门方式。

注册免费的 PostgresML 账户。您将在几秒钟内获得一个免费的数据库,并可以访问 GPU 和先进的 LLM。

自托管

如果您不想使用我们的云服务,可以选择自托管。

docker run \
    -it \
    -v postgresml_data:/var/lib/postgresql \
    -p 5433:5432 \
    -p 8000:8000 \
    ghcr.io/postgresml/postgresml:2.10.0 \
    sudo -u postgresml psql -d postgresml

更多详情,请查看我们的 Docker 快速入门 文档。

生态系统

我们还有许多其他专门设计用于与 PostgreML 协同工作的工具和库。请记住,PostgresML 是运行在 Postgres 内部的扩展,因此您可以使用 psql 连接,或使用任何您喜欢的工具和客户端库(如 psycopg)来连接和运行查询。

PostgresML 专用客户端库:
- Korvus - Korvus 是一个 Python、JavaScript、Rust 和 C 的搜索 SDK,可在单个数据库查询中统一整个 RAG 管道。
- postgresml-django - postgresml-django 是一个将 PostgresML 与 Django ORM 集成的 Python 模块。

推荐的 Postgres 连接池:
- pgcat - pgcat 是一个支持分片、负载均衡和故障转移的 PostgreSQL 连接池。

大语言模型

PostgresML 将模型直接带到您的数据旁,消除了昂贵且耗时的数据传输需求。这种方法显著提升了 AI 驱动应用的性能、安全性和可扩展性。

通过在数据库内运行模型,PostgresML 能够实现:

  • 降低延迟并提升查询性能
  • 增强数据隐私和安全性
  • 简化基础设施管理
  • 与现有数据库操作无缝集成

Hugging Face

PostgresML 支持 Hugging Face 模型中心 上提供的各种先进的深度学习架构。此集成允许您:

  • 访问数千个预训练模型
  • 利用尖端的 NLP、计算机视觉和其他 AI 模型
  • 轻松尝试不同的架构

OpenAI 与其他提供商

虽然基于云的 LLM 提供商提供了强大的能力,但从数据库内部进行 API 调用可能会引入延迟、安全风险和潜在的合规性问题。目前,PostgresML 不直接支持与 OpenAI 等远程 LLM 提供商的集成。

RAG

PostgresML 将您的 PostgreSQL 数据库转变为一个强大的向量数据库,用于检索增强生成(RAG)应用。它利用 pgvector 实现嵌入的高效存储和检索。

我们的 RAG 实现基于四个关键的 SQL 函数:

  1. 分块:将文本分割成可管理的片段
  2. 嵌入:使用预训练模型从文本生成向量嵌入
  3. 排序:对嵌入执行相似性搜索
  4. 转换:应用语言模型进行文本生成或转换

有关在 PostgresML 中使用 RAG 的更多信息,请参阅我们的 统一 RAG 指南。

分块

pgml.chunk 函数使用指定的分割器对文档进行分块。这通常在嵌入之前完成。

pgml.chunk(
    splitter TEXT,    -- 分割器名称
    text TEXT,        -- 要嵌入的文本
    kwargs JSON       -- 可选参数(见下文)
)

更多信息请参阅 pgml.chunk 文档

嵌入

pgml.embed 函数使用数据库内模型从文本生成嵌入。

pgml.embed(
    transformer TEXT,
    "text" TEXT,
    kwargs JSONB
)

更多信息请参阅 pgml.embed 文档

排序

pgml.rank 函数使用 交叉编码器 对句子对进行评分。

这通常在执行搜索时用作重新排序步骤。

pgml.rank(
    transformer TEXT,
    query TEXT,
    documents TEXT[],
    kwargs JSONB
)

文档即将推出。

转换

pgml.transform 函数可用于生成文本。

SELECT pgml.transform(
    task   => TEXT OR JSONB,     -- 管道初始化参数
    inputs => TEXT[] OR BYTEA[], -- 推理输入
    args   => JSONB              -- (可选)管道参数
)

更多信息请参阅 pgml.transform 文档

有关生成文本的指南,请参阅我们的 文本生成指南

机器学习

部分亮点:
- 47 种以上的分类和回归算法
- 推理速度比基于 HTTP 的模型服务快 8 到 40 倍
- 每秒数百万次事务处理
- 水平可扩展性

训练分类模型

训练

SELECT * FROM pgml.train(
    'Handwritten Digit Image Classifier',
    algorithm => 'xgboost',
    'classification',
    'pgml.digits',
    'target'
);

推理

SELECT pgml.predict(
    'My Classification Project',
    ARRAY[0.1, 2.0, 5.0]
) AS prediction;

NLP

pgml.transform 函数提供了许多可用的 NLP 任务。

可用任务包括:
- 文本分类
- 零样本分类
- 标记分类
- 翻译
- 摘要
- 问答
- 文本生成
- 文本到文本生成
- 填充掩码

1 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私政策 ·  服务条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 37 ms
Developed with Cursor