首页 / Spring AI 入门教程 / 向量库选型与全景

Spring AI 入门教程

向量库选型与全景

本教程共 45 篇 · 第 36 篇 · 更新于 2026-08-16 · 约 7 分钟阅读

Spring AI向量数据库选型PGvectorMilvus云服务自建VectorStore

本节目标:看清 Spring AI 支持的 20 余种向量库实现,理解专用向量库、关系库扩展、搜索引擎三条技术路线,掌握一套按场景做选型决策的方法。

36.1 全景表格

Spring AI 官方文档列出的实现分三类:云托管服务、可自建的开源存储、以及仅测试用的内存实现。表中 starter 遵循统一的命名约定:spring-ai-starter-vector-store-<名称>

实现类型部署方式适用场景
Azure AI Search云搜索服务云托管Azure 生态、需要全文+向量混合检索
Azure Cosmos DB云文档数据库云托管外部模块(Cosmos DB 团队维护)、Azure 生态
Bedrock Knowledge Base云托管 RAG 服务云托管只读向量库,文档摄取由服务内部处理
Pinecone专用向量库云托管不想运维、数据量弹性增长
MongoDB Atlas云文档数据库云托管已在用 Atlas、文档型数据
Cassandra + JVector分布式数据库自建或 Astra DB海量数据、高可用写入
Milvus专用向量库自建或 Zilliz 云百万级以上、检索性能优先
Qdrant专用向量库自建或 Qdrant 云HNSW 检索、元数据过滤复杂
Weaviate专用向量库自建或 Weaviate 云十亿级对象、多模态数据
Chroma专用向量库自建或 Chroma Cloud原型验证、轻量起步
PGvectorPostgreSQL 扩展自建已有 PostgreSQL、数据同库
Redis内存存储+搜索模块自建或 Redis Cloud低延迟、高频检索、语义缓存
MariaDB关系数据库自建已有 MariaDB 技术栈
Oracle 23ai关系数据库自建企业已有 Oracle 资产
Elasticsearch搜索与分析引擎自建或 Elastic Cloud全文+向量混合搜索
OpenSearch搜索与分析引擎自建或 AWS 托管Elasticsearch 分支、AWS 生态
Typesense搜索引擎自建拼写容错、亚 50ms 检索
CouchbaseJSON 文档数据库自建文档+向量一体
Neo4j图数据库自建或 AuraDB知识图谱+向量结合
GemFire内存键值存储自建(VMware Tanzu)实时高并发读取
S3 Vector Store对象存储云托管(AWS)2.0 新增、向量与对象存储一体
SimpleVectorStore内存实现仅测试演示,禁止生产

这张表看着长,背后的分类逻辑只有三类。

36.2 三条技术路线

专用向量数据库。 Milvus、Qdrant、Weaviate、Pinecone、Chroma 都是为向量检索设计的。索引算法、分片、标量过滤都围绕向量优化,检索性能最强。代价是多一套独立系统要部署、监控、备份。

传统数据库加向量能力。 PGvector、Redis、MariaDB、Oracle、MongoDB、Cassandra 都是在原有存储上扩展向量检索。优势是复用现有基础设施:业务数据、元数据、向量放一处,事务和权限体系照旧。缺点是向量能力是”附加功能”,极端规模下性能和功能不如专用库。

搜索与分析引擎。 Elasticsearch、OpenSearch、Typesense、Azure AI Search 本来就是做检索的,向量检索只是新技能。它们最强的点是混合搜索:关键词 BM25 检索和向量检索可以融合,中文等语言场景下”精确词匹配 + 语义匹配”互补效果很好。

选路线的核心问题:向量是主角还是配角。 应用就是做语义搜索,选专用库;应用有大量业务数据,顺便要向量能力,选扩展路线;内容检索复杂、要全文+向量混排,选搜索引擎。

36.3 云服务 vs 自建

同一条路线里,还要决定用云还是自己搭。

云托管(Pinecone、Azure、Bedrock、MongoDB Atlas、各家的云版)省运维,容量弹性伸缩,起步快。代价是按量付费,数据量大时成本高;数据出境和供应商锁定也是要考虑的。

自建(Docker 起 PGvector、Milvus、Qdrant 等)成本可控,数据在自己手里,可以深度调优。代价是部署、监控、扩容、备份全要自己管,团队得有对应的运维能力。

给个粗略的参考:起步阶段、数据量小,用云或本地 Docker 都行;数据量上来之后,自建的成本优势才显现,但前提是有人运维。

36.4 选型决策五问

选库不用纠结指标,按顺序问自己五个问题。

1. 现有技术栈是什么? 有 PostgreSQL 就用 PGvector,有 Redis 就用 Redis,在 AWS 上就考虑 OpenSearch 或 S3。复用现有设施,学习成本和运维成本最低。这是最重要的一个问题。

2. 数据量多大? 十万级以下,PGvector、Redis 都轻松应付。百万级往上,开始考虑 Milvus、Qdrant 这类专用库。千万级是专用库的主场。

3. 检索是核心功能吗? 是,值得为检索单独上系统;只是辅助功能,优先扩展路线。

4. 需要混合搜索吗? 需要关键词+向量混合、拼写容错,看 Elasticsearch、OpenSearch、Typesense、Azure AI Search。

5. 谁运维? 没有专职运维,选云托管;有,自建省钱。

Tip

项目早期不要花太多时间选库。先用 SimpleVectorStore 或 PGvector 把 RAG 流程跑通,验证检索质量,再按规模换库。统一抽象保证换库只是换依赖和配置。

36.5 几个容易忽略的点

嵌入模型和向量库的维度必须一致。 换嵌入模型时,如果维度变了,旧向量库里的数据要重新生成。先定模型再定库,顺序别反。

metadata 过滤能力差异很大。 过滤表达式在 Spring AI 里是统一的,但底层实现能力不同:Redis 要求字段先注册,PGvector 翻译成 JSON 路径查询,is null 这类操作有的库还没实现。选型时把”要不要复杂过滤”问清楚。

特殊实现要留意。 Bedrock Knowledge Base 是只读的,文档摄取走服务内部流程;SimpleVectorStore 只能测试用;Cosmos DB 是外部模块,不进 Spring AI 主仓库。

36.6 小结

20 余种实现可以归成三条路线:专用向量库、传统库扩展、搜索引擎。选型先看现有技术栈,再看数据量和运维能力。云托管省心费钱,自建省钱费人。统一抽象让换库成本很低,起步别纠结,跑起来再优化。下一章把 RAG 的最后一环接上:检索增强问答与效果评估。