做 RAG、语义检索或推荐时,要把 Embedding 向量 存起来、按相似度查,就得用向量数据库。Go 里常见的选择有三类:Pgvector(PostgreSQL 扩展)、MilvusQdrant。选哪个取决于你是否已有 Postgres、数据量和运维成本。这篇就聊这三者在 Go 里的客户端选型接入要点


  • Pgvector:是 PostgreSQL 的一个扩展,向量当一列存。适合本来就用 Postgres 的团队,不想多维护一个组件,数据量在百万级以内、QPS 不是特别夸张时很够用。Go 里用 pgx + pgvector-go 即可。
  • Milvus:独立向量库,支持大规模、分布式,适合向量数据量很大或要单独扩缩容的场景。官方有 milvus-sdk-go,接口偏「集合 + 列式插入 + 建索引再搜」。
  • Qdrant:也是独立向量库,API 设计偏 REST/gRPC,过滤条件(payload filter)和多向量支持比较顺手。Go 用 github.com/qdrant/go-client,文档和示例都比较全。