具有 zhparser 的 pgvector 镜像版本
2.8K
po-rag-stack 是一个具有向量检索、全文搜索、中文分词、Token 统计、消息队列于一体的 PostgreSQL 镜像版本,兼顾关系型数据库与向量检索场景,开箱即用。
本项目通过 GitHub Actions 自动构建和发布镜像。
linux/amd64 和 linux/arm6417.2)ghcr.io/cnrot/pg-rag-stackcoryrowe/pg-rag-stack# 克隆项目
git clone https://github.com/cnrot/postgres-rag-stack.git
cd postgres-rag-stack
# 启动服务
docker-compose up -d
# 等待服务启动完成
docker-compose logs -f postgres
# 构建镜像
docker build -t postgres-rag-stack .
# 运行容器
docker run -d \
--name postgres-rag-stack \
-e POSTGRES_DB=postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
-v postgres_data:/var/lib/postgresql/data \
postgres-rag-stack
安全地将现有 PostgreSQL 服务无缝替换为此镜像,查看发布镜像:https://ghcr.io/cnrot/pg-rag-stack
# 在你的 docker-compose.yml 中
services:
postgres:
image: coryrowe/pg-rag-stack:17.10-amd64 # 替换为本镜像
environment:
POSTGRES_DB: your_database # 仅在首次初始化时生效
POSTGRES_USER: your_user # 仅在首次初始化时生效
POSTGRES_PASSWORD: your_password # 仅在首次初始化时生效
volumes:
- your_existing_data_volume:/var/lib/postgresql/data # 保持现有数据
重要:环境变量仅在首次初始化时生效,使用现有数据卷时会被忽略。
直接在 RAG 项目中使用:
services:
rag-postgres:
image: coryrowe/pg-rag-stack:17.10-amd64
environment:
POSTGRES_DB: rag_database
POSTGRES_USER: rag_user
POSTGRES_PASSWORD: rag_password
volumes:
- rag_postgres_data:/var/lib/postgresql/data
ports:
- "5433:5432" # 避免端口冲突
rag-app:
build: .
depends_on:
- rag-postgres
environment:
DATABASE_URL: postgresql://rag_user:rag_password@rag-postgres:5432/rag_database
查看您的 docker run 命令或 docker-compose.yml 文件中的环境变量:
docker inspect postgresql | grep POSTGRES_USER
很多镜像默认使用 root 作为 superuser:
# 使用 psql 连接
docker exec -it -u root postgresql psql -U root -d postgres
SELECT extname FROM pg_extension;
虽然扩展已经预安装,但如果需要在特定数据库中手动创建:
-- 启用 pgvector 扩展
CREATE EXTENSION IF NOT EXISTS vector;
-- 启用 pgvectorscale 扩展
CREATE EXTENSION IF NOT EXISTS vectorscale;
-- 启用 pg_search 扩展
CREATE EXTENSION IF NOT EXISTS pg_search;
-- 启用 pg_tiktoken 扩展
CREATE EXTENSION IF NOT EXISTS pg_tiktoken;
-- 启用 pgmq 扩展
CREATE EXTENSION IF NOT EXISTS pgmq;
-- 启用 zhparser 扩展
CREATE EXTENSION IF NOT EXISTS zhparser;
-- 查看所有已安装的扩展
\dx
-- 查看特定扩展
SELECT extname FROM pg_extension WHERE extname IN ('vector', 'vectorscale', 'pg_search', 'pg_tiktoken', 'pgmq', 'zhparser');
-- 检查扩展是否可用
SELECT extname FROM pg_extension WHERE extname = 'vector';
-- 测试向量功能
SELECT '[1,2,3]'::vector <-> '[4,5,6]' AS distance;
-- 检查扩展是否可用
SELECT extname FROM pg_extension WHERE extname = 'vectorscale';
-- 检查扩展是否可用
SELECT extname FROM pg_extension WHERE extname = 'pg_search';
-- 检查扩展是否可用
SELECT extname FROM pg_extension WHERE extname = 'pg_tiktoken';
-- 测试 token 计数
SELECT tiktoken_count('cl100k_base', 'Hello, world');
-- 检查扩展是否可用
SELECT extname FROM pg_extension WHERE extname = 'pgmq';
-- 测试消息队列功能
SELECT pgmq.create('test_queue');
SELECT pgmq.send('test_queue', '{"message": "hello"}');
SELECT pgmq.drop_queue('test_queue');
-- 检查扩展是否可用
SELECT extname FROM pg_extension WHERE extname = 'zhparser';
-- 测试中文分词
SELECT to_tsvector('chinese', '中文搜索测试') @@ to_tsquery('chinese', '中文');
| 变量名 | 默认值 | 说明 |
|---|---|---|
| POSTGRES_DB | postgres | 数据库名称(仅在首次初始化时生效) |
| POSTGRES_USER | postgres | 数据库用户名(仅在首次初始化时生效) |
| POSTGRES_PASSWORD | postgres | 数据库密码(仅在首次初始化时生效) |
5432: PostgreSQL 默认端口数据将持久化存储在 Docker volume 中,确保数据不会因容器重启而丢失。
以下是各扩展的相关资料,可点开查看详情:
Content type
Image
Digest
sha256:dee013db2…
Size
236.4 MB
Last updated
2 months ago
docker pull coryrowe/pg-rag-stack:18.6-amd64