向量数据库: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,选择取决于规模与运维偏好。

参考与延伸阅读

本文累计阅读