把AI裝進數據庫:PostgresML和Korvus的新思路
當下機器學習應用開發就像是接力賽:從數據庫取數據,傳到應用服務器,再送到 ML 服務,處理完原路返回。每一棒都是延遲。更別提,開發者還需在SQL和應用代碼之間不斷“翻譯”,這無形中增加了認知負荷和工程的復雜度。
這時候,生態無比繁榮的開源數據庫 Postgres 再次帶來了驚喜,PostgresML 團隊直接讓 AI 模型跑在數據庫中。

今天我們就介紹這個體系的兩個關鍵項目:PostgresML和Korvus。這兩個項目的關系很清晰,PostgresML作為底層,用 Rust 編寫,提供 pgml schema 下的各種函數,能夠處理模型加載、GPU 調度、向量運算等任務。而Korvus基于此對外提供各種語言( Python、JavaScript、Rust、C等)的SDK封裝。這樣的組合,顯而易見降低了復雜度。
傳統 RAG 架構:
用戶請求 → API服務器 → 向量數據庫 → API服務器 → LLM服務 → API服務器 → 用戶PostgresML + Korvus:
用戶請求 → Postgres(包含所有處理) → 用戶PostgresML:數據庫即 AI 運行時
PostgresML 是一個 Postgres 擴展,讓數據庫具備了完整的機器學習能力。
安裝后,你可以在 SQL 里直接訓練模型:
-- 訓練分類模型
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;更強大的是深度學習支持。PostgresML 集成了 Hugging Face 模型庫,可以直接在數據庫內運行大語言模型:
-- 生成文本
SELECT pgml.transform(
task => 'text-generation',
inputs => ARRAY['Once upon a time'],
args => '{"model": "gpt2"}'
);
-- 文本嵌入
SELECT pgml.embed(
'sentence-transformers/all-MiniLM-L6-v2',
'PostgresML is bringing AI to the database'
);關鍵特性:
- 47 種機器學習算法
- GPU 加速推理
- 支持 Hugging Face 上的預訓練模型
- 內置向量數據庫功能(基于 pgvector)
- 推理速度比 HTTP 服務快 8-40 倍
這個性能提升來自幾個方面:沒有網絡開銷、沒有序列化成本、數據和計算在同一進程。
Korvus:讓 RAG 變成一條 SQL
有了 PostgresML 的基礎能力,團隊進一步開發了 Korvus。如果說 PostgresML 是引擎,Korvus 就是為 RAG 場景優化的 SDK。
Korvus 的核心理念:"One query to rule them all"。整個 RAG 流程壓縮成一個數據庫查詢。

看一個完整例子:
from korvus import Collection, Pipeline
import asyncio
# 1. 初始化
collection = Collection("korvus-demo-v0")
pipeline = Pipeline(
"v1",
{
"text": {
"splitter": {"model": "recursive_character"},
"semantic_search": {"model": "Alibaba-NLP/gte-base-en-v1.5"},
}
},
)
# 2. 添加pipeline
await collection.add_pipeline(pipeline)
# 3. 插入文檔
documents = [
{"id": "1", "text": "Korvus is incredibly fast and easy to use."},
{"id": "2", "text": "Tomatoes are incredible on burgers."},
]
await collection.upsert_documents(documents)
# 4. RAG查詢 - 這里是關鍵
results = await collection.rag({
"CONTEXT": {
"vector_search": {
"query": {"fields": {"text": {"query": "Is Korvus fast?"}}},
"limit": 1
},
"aggregate": {"join": "\n"}
},
"chat": {
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
"messages": [
{
"role": "system",
"content": "You are a friendly assistant"
},
{
"role": "user",
"content": "Given the context:\n{CONTEXT}\nAnswer the question: Is Korvus fast?"
}
],
"max_tokens": 100
}
}, pipeline)這一個??rag()??調用在數據庫內完成了:
- 將查詢文本向量化
- 在向量索引中搜索相似文檔
- 聚合搜索結果作為上下文
- 調用 LLM 生成回答
沒有外部 API,沒有多次往返,就是一個查詢。
部署和使用
最簡單的方式是 Docker:
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或者使用 PostgresML Cloud,免費 tier 就提供 GPU 訪問。
對于 Korvus,安裝后只需設置數據庫連接:
pip install korvus
export KORVUS_DATABASE_URL="postgresql://..."小結
PostgresML 提供基礎能力,Korvus 簡化使用體驗,兩者結合讓"在 SQL 里跑 AI"從技術可能變成了工程現實,大大降低了開發者上手 AI 的門檻。
“后端即服務”、“數據庫即服務”、“表格即服務”越來越流行,這背后其實是一種趨勢,大家越來越關注如何用最簡單的方式解決問題,而不是為了技術而技術。
github:
??https://github.com/postgresml/postgresml??
??https://github.com/postgresml/korvus??
本文轉載自??AI工程化??,作者:ully

















