这是一款适用于PostgreSQL的开源向量相似性搜索工具,可无缝集成至PostgreSQL数据库,支持对文本嵌入、图像特征、音频向量等各类向量数据进行高效相似性查询。它借助优化的索引结构与搜索算法实现快速检索相似向量结果,助力用户在人工智能、机器学习、推荐系统等场景下,利用PostgreSQL便捷处理向量数据,提升查询效率与开发灵活性,且作为开源项目具备代码透明、社区支持完善、易于扩展等优势。
收藏数: 88
下载次数: 38929405
状态: active
发布者: pgvector
类型:
pgvector/pgvectorpgvector 是 PostgreSQL 的扩展,专门用于向量数据的存储、索引和相似性查询。它能让 PostgreSQL 直接处理向量类型数据(如机器学习模型输出的嵌入向量),支持高效的相似性检索,适合需要在数据库内完成向量计算的场景。
vector 类型,可存储固定维度的浮点数组(默认最大 *** 维,支持调整)。<->)、余弦相似度(<=>)、曼哈顿距离(<#>),直接通过 SQL 函数调用。根据操作系统选择对应方式:
Ubuntu/Debian:
bash# 安装 PostgreSQL 开发包(版本需与当前 PostgreSQL 一致,如 14) sudo apt-get install postgresql-server-dev-14 # 从源码编译安装 pgvector(或用 pip install pgvector) git clone [***] && cd pgvector && make && sudo make install
macOS:
bashbrew install pgvector
Windows:
推荐用 Docker 镜像(pgvector/pgvector:14),或手动编译(需先安装 PostgreSQL 开发环境)。
在目标数据库中执行 SQL:
sqlCREATE EXTENSION vector; -- 安装完成后,即可使用 vector 类型
先定义向量列,需指定维度(如 3 维、768 维,与模型输出的嵌入维度一致):
sql-- 示例:存储文本嵌入向量(假设用 BERT 生成的 768 维向量) CREATE TABLE documents ( id SERIAL PRIMARY KEY, content TEXT, embedding vector(768) -- 向量列,指定 768 维 );
直接插入向量值(格式为 [x1, x2, ..., xn]):
sql-- 插入文本嵌入向量(实际场景中通常通过应用程序生成,如 Python 的 psycopg2 插入) INSERT INTO documents (content, embedding) VALUES (' PostgreSQL 教程', '[0.12, 0.34, ..., 0.89]'), -- 省略中间维度值 ('向量数据库对比', '[0.23, 0.45, ..., 0.78]');
通过距离函数筛选相似向量,结果按距离排序(值越小越相似):
sql-- 例:查找与目标向量最相似的 Top 10 文档(余弦相似度 <=>) SELECT id, content, embedding <=> '[0.18, 0.31, ..., 0.92]' AS similarity FROM documents ORDER BY similarity -- 按相似度升序(值越小越相似) LIMIT 10; -- 欧氏距离查询(适用于高维稀疏向量) SELECT id, embedding <-> '[0.18, 0.31, ..., 0.92]' AS distance FROM documents ORDER BY distance LIMIT 10;
当向量数据量超过 10 万级时,建议创建索引加速查询。pgvector 支持多种索引类型,根据数据规模选择:
IVFFlat 索引(中等规模,百万级数据):
sql-- 创建余弦相似度索引(指定算子 vector_cosine_ops) CREATE INDEX ON documents USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100); -- lists 数量建议设为数据量平方根(如 100 万数据设 1000)
HNSW 索引(大规模,亿级数据,查询更快但内存占用高):
sql-- 创建欧氏距离索引(算子 vector_l2_ops) CREATE INDEX ON documents USING hnsw (embedding vector_l2_ops) WITH (m = 16, ef_construction = 64); -- m=16(邻居数)、ef_construction=64(构建时候选集)
VECTOR_MAX_DIM 宏。以下是 pgvector/pgvector 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务