前言
在 AI 应用时代,向量数据库几乎是构建 RAG(检索增强生成)系统的标配。Pinecone、Weaviate、Chroma 这些专用向量数据库固然强大,但对于已经在使用 PostgreSQL 的团队来说,有没有更轻量的方案?
答案是:pgvector。
pgvector 是 PostgreSQL 的一个扩展,让你可以直接在 Postgres 中存储向量、执行相似性搜索,完全无需引入新的数据库基础设施。
今天我要介绍的,是 Hermes Agent 生态中的 pgvector Skill——它把 pgvector 的所有核心能力封装成了可直接使用的步骤和命令,让我一起来看看它的功能和使用方法。
功能介绍
1. 向量存储
使用 vector(1536) 数据类型存储文本嵌入(1536 维是 OpenAI text-embedding-3-small 的维度),每条记录还可以附带 JSONB 格式的元数据:
CREATE TABLE IF NOT EXISTS documents ( id BIGSERIAL PRIMARY KEY, content TEXT NOT NULL, embedding vector(1536) NOT NULL, metadata JSONB, created_at TIMESTAMPTZ DEFAULT NOW());2. 高性能索引
支持两种索引策略:
- HNSW(默认推荐):搜索精度高,适合对质量要求高的场景
- IVFFlat:构建速度快,适合超大规模数据集
-- HNSW 索引CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops)WITH (m = 16, ef_construction = 64);3. 向量相似搜索
支持三种距离计算方式:
| 操作符 | 说明 |
|---|---|
<-> | 欧几里得距离(Euclidean) |
<=> | 余弦距离(Cosine) |
<#> | 内积(Inner Product) |
-- 余弦相似度搜索SELECT id, content, (1 - (embedding <=> '[query_embedding]')) AS similarityFROM documentsORDER BY embedding <=> '[query_embedding]'LIMIT 5;4. 混合搜索(向量 + 关键词)
pgvector 的另一个强大之处在于可以结合 PostgreSQL 原生的全文搜索(ts_rank),实现混合检索:
SELECT id, content, (1 - (embedding <=> '[query_embedding]')) AS vector_score, ts_rank(to_tsvector('english', content), plainto_tsquery('english', 'search terms')) AS text_scoreFROM documentsWHERE content ILIKE '%search terms%'ORDER BY (vector_score * 0.7 + text_score * 0.3) DESCLIMIT 10;5. RAG 管道支持
Skill 内置了完整的 RAG 检索流程示例,包括文档分块(chunking)和上下文组装:
-- 检索相关片段作为 LLM 上下文SELECT chunk_textFROM document_chunksWHERE document_id = ?ORDER BY chunk_embedding <=> '[question_embedding]'LIMIT 5;使用方法
环境配置
# 默认连接参数(已预配置)psql -h localhost -p 5433 -U damien -d postgres
# 或设置环境变量export PGHOST=localhostexport PGPORT=5433export PGUSER=damienexport PGDATABASE=postgres基本工作流
- 连接数据库 — 使用上面的连接命令
- 建表 — 创建 documents 表(含 vector 列)
- 创建索引 — HNSW 或 IVFFlat 加速搜索
- 插入向量 — 来自 OpenAI、Cohere 或本地模型
- 执行检索 — 相似度查询或混合搜索
- 集成 RAG — 将结果注入 LLM 上下文
Skill 中还提供了 Python 批量插入示例,直接复制即可使用。
我的评价
优点
- 零基础设施:不需要额外部署 Pinecone 或 Qdrant,直接用已有的 Postgres
- 功能完整:HNSW/IVFFlat 索引、余弦/欧氏/内积三种距离、混合搜索,全部具备
- RAG 友好:内置分块检索示例,拿来就能接 LLM
- 运维简单:一个数据库同时管关系数据和向量数据,备份、权限、监控全部统一
缺点
- 相比专用向量数据库(如 Pinecone),在超大规模(亿级向量)场景下性能有差距
- 需要手动管理嵌入向量,不支持自动向量化
适用场景
✅ 个人项目 / 中小规模应用(百万级向量以内)
✅ 已有 PostgreSQL 基础设施的团队
✅ 需要关系数据 + 向量混合查询的场景
❌ 超大规模向量检索(建议用 Pinecone / Weaviate)
总结
pgvector 是我目前见过最优雅的”渐进式 AI 能力扩展”方案——不需要学新工具,不需要改变架构,直接在熟悉的 PostgreSQL 上开启向量能力。
如果你正在构建 RAG 应用、又不想引入额外的数据库依赖,强烈推荐安装这个 Skill,连接你的 Postgres,立刻开始向量搜索。
📦 Skill 安装方式:在 Hermes 中运行
/skill pgvector即可加载。