基于 pgvector 官方镜像构建的 PostgreSQL 镜像,在向量检索(pgvector)之外补充了 zhparser 中文分词全文检索能力,开箱即用。
| 组件 | 版本 | 说明 |
|---|---|---|
| PostgreSQL | 18(trixie) | 来自基础镜像 |
| pgvector | 0.8.2 | 向量检索扩展,来自基础镜像 pgvector/pgvector:0.8.2-pg18-trixie |
| SCWS | 1.2.3 | 中文分词库,zhparser 的依赖 |
| zhparser | master@02c0837 |
PostgreSQL 中文分词扩展(amutu/zhparser 2025-10-21 快照) |
源码包不进入仓库,由 build.sh 在构建前自动下载到 downloads/(已加入 .gitignore),并做 SHA256 校验以保证构建可复现:
./build.sh-
默认镜像名 / 标签为
pgvector-zh:0.8.2-pg18,可通过环境变量覆盖:IMAGE_NAME=myrepo/pgvector-zh IMAGE_TAG=latest ./build.sh
-
各组件的下载地址与 SHA256 固定在
build.sh顶部,升级版本时修改对应变量即可。
docker run -d --name pg \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
pgvector-zh:0.8.2-pg18启用扩展并配置中文分词:
CREATE EXTENSION vector; -- 向量检索
CREATE EXTENSION zhparser; -- 中文分词
-- 配置中文全文检索(映射具体词性可按需调整)
CREATE TEXT SEARCH CONFIGURATION zh_cn (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION zh_cn
ADD MAPPING FOR n,v,a,j,i,e,l WITH simple;
-- 验证分词效果
SELECT to_tsvector('zh_cn', '中国人民生活幸福');
-- '中国':1 '人民':2 '生活':3 '幸福':4向量检索示例:
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[2,3,4]');
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 1;├── Dockerfile # 镜像构建定义
├── build.sh # 自动下载源码并构建镜像
├── debian.sources # 阿里云 apt 镜像源配置(构建时 COPY 进镜像)
└── downloads/ # 源码缓存目录(gitignore,由 build.sh 生成)