公司动态

5分钟玩转PostgreSQL向量检索

📅 2026/7/31 5:09:05
5分钟玩转PostgreSQL向量检索
AI 数据库入门5分钟带你玩转 PostgreSQL 向量检索 (pgvector)在构建大模型应用如 RAG 检索增强生成、智能推荐系统时我们往往面临一个架构选择是引入独立的向量数据库如 Milvus、Pinecone还是直接在现有关系型数据库中解决引入独立向量数据库虽然性能强劲但会带来额外的运维成本、数据同步难题以及无法进行复杂 JOIN 查询的痛点。破局之道pgvector。它让 PostgreSQL 直接具备了向量存储与检索能力实现业务数据与向量数据的统一管理完美支持 ACID 事务和传统 SQL 操作。本文将带你用 5 分钟时间从环境搭建到核心检索快速上手 pgvector。环境准备与安装前置条件pgvector 需要PostgreSQL 13及以上版本。安装方式1. Docker 一键部署强烈推荐这是最快、最干净的方式无需污染本地环境dockerrun--namepgvector-ePOSTGRES_PASSWORDmysecretpassword-p5432:5432-dpgvector/pgvector:pg162. 源码编译安装适合本地开发如果你已有 PostgreSQL 环境可以通过源码安装cd/tmpgitclone--branchv0.7.0 https://github.com/pgvector/pgvector.gitcdpgvectormakemakeinstall启用扩展连接到数据库后执行以下 SQL 启用扩展CREATEEXTENSION vector;核心实战建表、插入与检索1. 创建向量表使用vector(dimensions)类型定义向量列。以下以 3 维向量为例实际业务中如 BGE-M3 模型通常为 768 或 1024 维CREATETABLEtblvector(id bigserialPRIMARYKEY,itemtext,embedding vector(3));2. 插入向量数据将 AI 模型生成的 Embedding 存入数据库INSERTINTOtblvector(item,embedding)VALUES(苹果,[1.0, 0.9, 0.2]),(香蕉,[1.2, 0.8, 0.1]),(猫,[6.0, 0.4, 5.0]);3. 相似度检索使用距离操作符进行余弦相似度检索查找最相似的 Top-K 结果SELECTitem,embedding[1.2, 0.8, 0.1]AScosine_distanceFROMtblvectorORDERBYcosine_distanceLIMIT2;预期结果itemcosine_distance香蕉0苹果0.02…提示为余弦距离值越小越相似-为欧氏距离#为负内积距离。性能进阶索引策略当数据量达到百万级时全表扫描将成为性能瓶颈。pgvector 提供了两种主流索引HNSW 索引推荐适合对查询性能要求高、数据更新不频繁的场景。构建速度较慢但查询极快。CREATEINDEXONtblvectorUSINGhnsw(embedding vector_cosine_ops)WITH(m16,ef_construction64);m: 每个节点的最大连接数越大索引质量越高内存占用越大。ef_construction: 构建索引时的搜索宽度越大构建越慢但索引质量越好。IVFFlat 索引适合数据量极大、构建速度要求高的场景。需要先有数据才能创建索引。CREATEINDEXONtblvectorUSINGivfflat(embedding vector_cosine_ops)WITH(lists100);lists: 聚类中心数量通常建议设置为sqrt(行数)到行数/1000之间。总结与下一步pgvector 的核心优势在于零额外运维、事务一致性和SQL 生态兼容。对于中小规模向量检索或混合检索场景它是目前性价比最高的选择。下一步思考如何结合 LangChain 或 LlamaIndex 搭建完整的 RAG 系统如何在 pgvector 中实现元数据过滤Metadata Filtering互动话题在你的项目中你更倾向于使用 HNSW 还是 IVFFlat 索引欢迎在评论区分享你的实战经验