在 Postgres 内实现向量搜索和 RAG 管道,避免维护独立向量库。RAG 应用开发者必看的基础设施方案。
一个 Postgres 服务器及扩展,可自动完成文本到 embeddings 的转换与编排,并提供接入主流 LLM 的接口。借助它,你可以快速搭建并自动维护向量搜索、全文搜索和混合搜索,从而在 Postgres 上迅速构建 RAG 和搜索引擎。
本项目大量依赖 pgvector 提供向量相似度搜索能力,依赖 pgmq 在后台 worker 中完成任务编排,并使用了 SentenceTransformers。
API 文档:https://chuckhend.github.io/pg_vectorize/
源码:https://github.com/tembo-io/pg_vectorize
pg_vectorize 提供两种方式,可为任意 Postgres 添加语义搜索、全文搜索和混合搜索能力,让你能够轻松地在 Postgres 上构建检索增强生成(RAG)。本项目既提供仅使用外部服务器的实现,也通过 Postgres 扩展提供 SQL 使用方式。
HTTP server(推荐用于托管数据库):运行一个连接 Postgres 的独立服务,并通过 REST API 对外提供接口(POST /api/v1/table、GET /api/v1/search)。
Postgres extension(SQL):将扩展安装到 Postgres 中,并使用 vectorize.table()、vectorize.search() 等 SQL 函数(需要访问 Postgres 文件系统;参见 ./extension/README.md)。
使用 docker compose 在本地运行 Postgres 和 HTTP server:
# runs Postgres, the embeddings server, and the management API
docker compose up -d
将示例数据集加载到 Postgres 中(可选):
psql postgres://postgres:postgres@localhost:5432/postgres -f server/sql/example.sql
CREATE TABLE
INSERT 0 40
通过 HTTP API 创建一个 embedding 任务。该任务会为现有数据生成 embeddings,并持续监控数据更新或新增数据:
curl -X POST http://localhost:8080/api/v1/table -d '{
"job_name": "my_job",
"src_table": "my_products",
"src_schema": "public",
"src_columns": ["product_name", "description"],
"primary_key": "product_id",
"update_time_col": "updated_at",
"model": "sentence-transformers/all-MiniLM-L6-v2"
}' -H "Content-Type: application/json"
{"id":"16b80184-2e8e-4ee6-b7e2-1a068ff4b314"}
使用 HTTP API 进行搜索:
curl -G \
"http://localhost:8080/api/v1/search" \
--data-urlencode "job_name=my_job" \
--data-urlencode "query=camping backpack" \
--data-urlencode "limit=1" \
| jq .
[
{
"description": "Storage solution for carrying personal items on ones back",
"fts_rank": 1,
"price": 45.0,
"product_category": "accessories",
"product_id": 6,
"product_name": "Backpack",
"rrf_score": 0.03278688524590164,
"semantic_rank": 1,
"similarity_score": 0.6296013593673706,
"updated_at": "2025-10-05T00:14:39.220893+00:00"
}
]
当你的 Postgres 是托管服务(RDS、Cloud SQL 等),或者无法安装扩展时,请使用 HTTP server。它只要求数据库中已提供 pgvector。HTTP 服务需要单独运行。
当你自行托管 Postgres,并且能够安装扩展时,请使用 Postgres extension。它提供数据库内的使用体验,以及用于向量化和 RAG 的直接 SQL API。
如果想查看可实际操作的 SQL 示例,或者将扩展安装到 Postgres 中,请参阅 ./extension/README.md。完整的 HTTP API 文档和部署说明请参阅 ./server/README.md。
贡献指南请参阅仓库根目录中的 CONTRIBUTING.md。