向量数据库:Milvus 与 PGVector
向量数据库专门存储高维嵌入向量,并支持按相似度快速检索。它是检索增强生成(RAG)的关键底座:把文本切块嵌入后存入,提问时检索最相近的片段交给大模型。Milvus 是独立的向量引擎,PGVector 则是 PostgreSQL 的向量扩展。
Milvus 支持分布式部署与多种索引类型,可随数据增长横向扩容;PGVector 则让已有 Postgres 实例直接获得向量能力,免去独立运维一套系统。两者定位互补,团队可按现有技术与规模灵活取舍。
是什么
核心操作只有两类:
- 写入:把向量与原文存入,并建立索引加速。
- 查询:给定查询向量,返回最近邻的若干条。
Milvus 面向大规模与高并发,独立部署;PGVector 让既有 Postgres 直接支持向量列,适合已用 Postgres 的团队。
为什么需要
用普通数据库做相似度搜索要全表计算,效率低。向量索引(如 HNSW)把近邻查找降到亚线性,使海量知识的实时检索可行。
怎么用
Milvus 的轻量客户端用法如下:
from pymilvus import MilvusClient
client = MilvusClient("milvus_demo.db")
client.create_collection("docs", dimension=768)
client.insert("docs", [{"vector": [0.1] * 768, "text": "示例文档"}])
hits = client.search("docs", data=[[0.1] * 768], limit=3)
PGVector 则在 SQL 中开启扩展并建表:
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE items (id serial, emb vector(768));
注意点
- 维度要与嵌入模型一致,混用会导致报错。
- 索引类型影响速度与精度,需按数据量权衡。
- 向量库只管相似度,最终答案质量仍取决于切分与模型。
小结
向量数据库让相似度检索在大规模数据上可行,是 RAG 的基础设施。Milvus 适合独立的大规模场景,PGVector 适合复用现有 Postgres,选择取决于规模与运维偏好。
参考与延伸阅读
- Milvus 官方网站。已核验。https://milvus.io
- PGVector GitHub 仓库。已核验。https://github.com/pgvector/pgvector
本文累计阅读 — 次