
Vespa 是 Vespa AI 开源的大规模 AI 检索平台,Apache-2.0 许可。它把关键字搜索、向量检索、过滤、排序和机器学习推理合并进单一分布式引擎。
官方明确定位:”Search, make inferences in and organize vectors, tensors, text and structured data, at serving time and any scale” 。核心差异化是张量原生(tensor-native)架构——向量只是张量的一种特例,稠密向量、稀疏向量、词法信号、结构化特征、用户行为可以在同一条查询中统一计算 。、
支持多阶段排序(first-phase recall → second-phase rerank → global-phase rerank)、ONNX/XGBoost 模型在服务层直接推理、ColBERT/ColPali 式多向量检索、多模态检索、实时索引更新 。
它是向量数据库分类中“搜索+向量+排序+推理一体化”的代表作,与 Milvus(企业级分布式向量库)、Qdrant(Rust 高性能过滤)、Weaviate(AI-native 混合检索)、Pinecone(全托管 SaaS)、VikingDB(已收录,火山/BytePlus 云原生全托管)形成清晰的差异化。
产品概述
Vespa 起源于 Yahoo 的搜索基础设施,后经开源演化,目前由 Vespa AI 维护。官方仓库描述:”Search, make inferences in and organize vectors, tensors, text and structured data, at serving time and any scale” ——这是它区别于”纯向量数据库”的根本定位 。
核心定位哲学:
官方主页开宗明义——”Beyond Vectors: Why Tensors Matter” 。三个不可妥协的设计原则:
- 张量原生:Vespa 从一开始就围绕正式的张量框架设计,向量只是 rank-1 张量;稠密、稀疏、词法、结构化、行为数据都作为张量在同一个检索与排序管道中自然参与
- 检索与排序一体:retrieval 识别候选文档,ranking 决定哪些最相关;Vespa 把多阶段排序(first-phase → second-phase → global-phase)和 ML 模型推理都放在服务层
- 单一分布式引擎:关键字搜索、向量检索、过滤、排序、ML 推理统一在一个分布式引擎中,消除多系统拼接的延迟与运维复杂度
它做什么 / 不做什么(关键归类):
- ✅ 做:作为分布式服务运行 → 接收文档(含向量/张量/文本/结构化字段)→ 构建 HNSW 索引(单向量字段)或多向量索引(mapped+indexed 张量)→ 接收查询 → 在单一查询中融合稠密向量、稀疏向量、BM25 词法、结构化过滤、地理位置、时间特征 → 多阶段排序(召回 → 本地重排 → 全局重排)→ 在服务层执行 ONNX/XGBoost/custom ranking 函数 → 毫秒级返回
- ❌ 不做:不生成 Embeddings(需外接嵌入模型或在应用层生成后提交向量)、不做业务级 Agent 编排(是 RAG/Agent 的检索与排序底座)
- 本质是 AI 检索平台:它是向量数据库分类中唯一的”搜索+向量+排序+推理一体化”引擎——传统搜索引擎强于关键字但非向量原生;独立向量数据库强于语义相似度但排序/过滤/大规模检索需外部系统 ;Vespa 把这些都放在单一分布式服务引擎中 。
技术架构 :
- 实现语言:Java(容器/编排)+ C++(内容节点/索引/排序计算)
- 数据模型:张量原生——标量(rank0)/向量(rank1)/矩阵(rank2)/高维张量统一表示
- 索引能力:
- 单向量字段:1 个 indexed 维度的张量,HNSW 索引,nearestNeighbor 查询操作符
- 多向量字段:1 个 mapped + 1 个 indexed 维度(如
tensor(paragraph{},embedding[768])),HNSW 索引,支持 ColBERT 式 late interaction
- 查询融合:稠密向量 + 稀疏向量 + 词法信号 + 结构化过滤在单一查询表达式中组合
- 多阶段排序:
- First-phase:在内容节点本地对所有匹配项执行召回排序(可用 embedding 做 ANN recall)
- Second-phase:在每个内容分区的本地 top hits 上执行重排(可用 ML 模型)
- Global-phase:在全局 top hits 上执行最终重排
- ML 推理在服务层:ONNX、XGBoost、自定义 ranking 函数直接在 serving 层执行,无需独立模型服务基础设施
- 接口:HTTP 查询 API + Document API + 配置部署包(application package)
- 部署拓扑 :
- Docker 容器:
docker.io/vespaengine/vespa或ghcr.io/vespa-engine/vespa - RPM 安装:AlmaLinux 8 等 Linux 发行版
- Kubernetes:生产推荐路径,动态扩缩容
- Vespa Cloud:全托管服务
- 本地开发:Docker 单节点开发环境
- Docker 容器:
- 实时索引:不同于 immutable-segment 向量系统,Vespa 支持持续数据摄入与更新,无需昂贵的索引重建
张量框架(核心架构创新) :
Vespa 的张量类型由维度名、维度类型(mapped/indexed)、单元值类型组成:
tensor(user{},movie{}):2 维 mapped 张量(稀疏 2D 矩阵)tensor(x[1280],y[720]):2 维 indexed 张量(图像表示)tensor(word_id{},vec[300]):mixed 张量(word2vec 风格)tensor(paragraph{},embedding[768]):多向量索引(ColBERT 式)
Vespa 在配置期利用张量类型信息优化张量表达式执行计划 。
许可策略:Apache-2.0 许可证 ,允许商用、修改、分发,无 copyleft 限制,与 Milvus/Qdrant 同属最干净许可阵营。(注:GitHub 搜索中出现的 vespa-mrs/vespa 是磁共振波谱分析的同名项目 ,非本条目所指向量检索 Vespa。)
生产验证 :
- GigaOm 在向量数据库评测中将 Vespa 评为 Leader 和 Outperformer
- 大规模生产部署案例(官方博客提及 Perplexity、Spotify 等在其上运行 AI 应用 )
- 官方明言:”Use cases such as search, recommendation and personalization need to select a subset of data in a large corpus, evaluate machine-learned models over the selected data, organize and aggregate it and return it, typically in less than 100 milliseconds, all while the data corpus is continuously changing“
💡 与同层向量数据库的关键差异:
- vs Milvus:Milvus 是 Go/C++ 云原生分布式向量库,主打万亿级向量 ANN 检索;Vespa 是 Java+C++ 的 AI 检索平台,检索+排序+ML 推理+张量计算一体化,向量只是其中一部分
- vs Qdrant:Qdrant 是 Rust 编写的高性能向量库,过滤检索最强、量化降内存极致;Vespa 是张量原生的检索平台,多阶段排序与 ML 推理在服务层原生执行
- vs Weaviate:Weaviate 是 Go 编写的 AI-native 向量数据库,hybrid 操作符融合 BM25+向量;Vespa 是更底层的张量框架,稠密/稀疏/词法/结构化/ML 排序在单一查询表达式中统一计算,表达能力更强但学习曲线更陡
- vs Pinecone:Pinecone 是全托管 SaaS(闭源);Vespa 开源 Apache-2.0,自托管/全托管多形态,且能力远超”向量数据库”范畴
- vs VikingDB(已收录):VikingDB 是火山/BytePlus 云原生全托管向量数据库,百亿级、多模态、稠密+稀疏混合检索、存算分离;Vespa 是开源等价物,且是”搜索+向量+排序+推理一体化”平台,规模与能力边界更广
核心能力
-统一检索:向量+文本+结构化(核心差异化)
- 向量搜索无限制:多个字段、每字段多向量集合、任意大小、任意数值类型(64 位到 1 位)
- 词法搜索无限制:任意字段数、文本、token
- 混合搜索:任意数量的文本、向量、元数据字段用 AND/OR 组合
- 张量原生:稠密向量、稀疏向量、词法信号、结构化特征作为张量统一计算
- 单一查询表达式:keyword match、structured filter、phrase constraint、vector similarity、tensor-based reasoning 在一条查询中融合
-多阶段排序(Ranking Built In)
- First-phase recall:在内容节点本地对所有匹配项执行召回排序,可用 embedding 做 ANN
- Second-phase rerank:在每个内容分区的本地 top hits 上用任意 ranking 函数/ML 模型重排
- Global-phase rerank:在全局 top hits 上执行最终重排
- 任意 ranking 函数:BM25 到 positional text relevance features 到 ML 模型,查询时可选
- 丰富 rank features:BM25、词位置特征、geo、时间、数组文本特征、内存文档字段、查询传入值
-服务层 ML 推理
- ONNX 模型:在服务层直接执行 ONNX 模型推理
- XGBoost 模型:在服务层直接执行
- 自定义 ranking 函数:在 serving 层执行
- 消除独立模型服务:推理在执行检索的地方进行,降低延迟,消除单独的模型服务基础设施
- LLM 集成:作为请求处理的一部分调用 LLM(应用自带、Vespa Cloud 提供、或远程标准 API 调用)
-多向量与多模态
- 多向量字段:
tensor(paragraph{},embedding[768])支持 ColBERT 式 late interaction - ColBERT/ColPali 式检索:同一 schema 中多 embedding
- 多模态检索:文本、图像、音频、结构化数据在单一引擎中跨模态检索与排序
- 图像-文本匹配、跨模态搜索:通过 multi-vector 表示
-实时索引与更新
- 持续数据摄入:不同于 immutable-segment 向量系统,Vespa 支持连续数据摄入与更新
- 无昂贵索引重建:应用保持新鲜与响应,即使在高写入吞吐下
- 部分更新:tensor 字段支持 add/remove/modify 单元格级部分更新
-高级过滤与聚合
- 结构化过滤:在向量字段上直接执行结构化过滤、地理空间查询、聚合
- 语义与业务逻辑无缝结合:在单一查询中组合语义与业务规则
- Rich grouping(faceting)与 aggregation:对所有匹配项执行丰富分组与聚合
-大规模分布式
- 十亿级规模:官方定位”any scale”检索
- 动态扩缩容:在线状态下仅通过更改分配节点资源动态扩展到任意数据或流量规模
- 多阶段排序分布式执行:召回在内容节点本地,重排在本地 top hits,全局重排在全局 top hits
- 张量计算在配置期优化:Vespa 利用张量类型信息优化执行计划
-部署与运维
- Docker 容器:
docker.io/vespaengine/vespa、ghcr.io/vespa-engine/vespa - RPM 安装:AlmaLinux 8 等 Linux 发行版
- Kubernetes:生产推荐路径
- Vespa Cloud:全托管服务
- 构建要求:Java >= 17、Maven >= 3.6.3、AlmaLinux 8 Docker 开发环境
-开发者体验
- Application Package:声明式应用配置(schema、ranking、deployment)
- 查询 API:HTTP REST API
- 文档 API:HTTP Document API
- RAG Blueprint:模块化应用模板,用于设计、部署、测试生产级 RAG 系统
- 官方资源:文档、示例代码、free online training(learn.vespa.ai)、YouTube 入门视频
优势亮点
- Apache-2.0 最干净许可:与 Milvus/Qdrant 同属最宽松许可阵营,商用、修改、分发无限制
- 搜索+向量+排序+推理一体化:单一分布式引擎完成关键字搜索、向量检索、过滤、多阶段排序、ML 推理,消除多系统拼接
- 张量原生架构:向量只是 rank-1 张量,稠密/稀疏/词法/结构化/行为数据统一计算框架
- 多阶段排序:first-phase recall → second-phase rerank → global-phase rerank,最大化精度与可解释性
- 服务层 ML 推理:ONNX/XGBoost/custom functions 直接在 serving 层执行,无独立模型服务
- ColBERT/ColPali 式多向量:原生支持 late interaction 多向量检索与多模态
- 实时索引更新:持续摄入与部分更新,无昂贵索引重建
- GigaOm Leader & Outperformer:独立分析师认可其大规模复杂数据结构处理能力
- 生产验证:Perplexity、Spotify 等在其上运行 AI 应用
- 混合检索原生:稠密向量+稀疏向量+BM25+结构化过滤在单一查询表达式中融合
- 动态扩缩容:在线状态仅通过资源分配变更即可扩展
- < 100ms 响应:大规模语料 + 机器学习模型评估 + 持续变化数据下的设计目标
局限
- 自己不生成 Embeddings:Vespa 存储和检索向量,需外接嵌入模型或在应用层生成后提交向量(也可在 Vespa 应用内通过 GPU/CPU 执行文本嵌入,但嵌入模型需自备)
- 学习曲线陡峭:张量框架、ranking 表达式、application package 配置具有较高学习门槛,相比 Milvus/Qdrant/Weaviate 的概念模型更复杂
- 运维复杂度高:Java+C++ 混合架构、多角色节点(container/content/cluster controller)、ZooKeeper 依赖,生产部署运维负担重
- 定位”重”:对于纯向量 ANN 检索需求,Vespa 的功能过剩,Milvus/Qdrant 更轻量更直接
- 与 Milvus 对比:Milvus 在纯向量检索的万亿级分布式规模上更专注;Vespa 在检索+排序+推理一体化上更强,但纯向量场景 Milvus 更简单
- 与 Qdrant 对比:Qdrant 的 Rust 单二进制部署极简、过滤检索性能极致;Vespa 功能更全面但运维复杂
- 与 Weaviate 对比:Weaviate 的 hybrid 操作符更易用;Vespa 的表达能力更强但配置复杂
- 与 Pinecone 对比:Pinecone 全托管零运维但闭源+供应商锁定;Vespa 开源可控但需自运维(或用 Vespa Cloud)
- 与 VikingDB 对比:VikingDB 是火山/BytePlus 云原生全托管向量数据库(百亿级、多模态、稠密+稀疏混合检索、存算分离);Vespa 是开源等价物且是”检索平台”而非纯向量库,能力边界更广但运维更复杂
- 资源消耗:Java 容器 + C++ 内容节点 + 机器学习推理,内存与 CPU 需求显著高于专用向量库
- 社区规模相对较小:相比 Milvus(45K Stars)、Qdrant(30K Stars),Vespa 的 GitHub Stars 规模较小(公开材料未提供精确数字)
适用人群
- 大规模搜索与 RAG 平台:需要混合检索(语义+词法+结构化)的生产级搜索与 RAG 系统
- 推荐与个性化系统:需要实时个性化排序、多阶段 ranking、ML 模型服务层推理
- 多模态检索应用:文本+图像+音频跨模态检索与排序
- 复杂 AI 检索需求:需要 ColBERT/ColPali 式 late interaction、稀疏+稠密融合、张量计算
- Agentic AI 系统:需要检索、排序、推理一体化的 Agent 记忆与检索层
- 低延迟高并发:< 100ms 响应、大规模语料、持续数据变化的场景
- 数据主权与合规:金融、医疗、政企等受监管行业,需自托管
- 已有 K8s 基础设施:可接受 Java+C++ 混合架构运维的团队
- 替代多系统拼接:原本需要”Elasticsearch + 向量数据库 + 特征存储 + 模型服务”组合的团队,用 Vespa 统一
安装与部署
1. 环境要求
- Linux x86_64 / ARM64
- Docker(快速起步)或 Kubernetes(生产)
- 构建要求:Java >= 17、Maven >= 3.6.3、AlmaLinux 8 Docker 开发环境
- 生产推荐:K8s 集群,多节点角色(container / content / cluster controller)
2. Docker 一键启动
# 拉取并运行 Vespa 容器 docker run --detach --name vespa --hostname vespa-container \ --publish 8080:8080 --publish 19071:19071 \ docker.io/vespaengine/vespa # 等待服务就绪 docker exec vespa wait_for_configuration_server # 部署示例应用 # 参考官方 getting-started 示例
3. 构建 Vespa(源码)
# 设置构建环境 export MAVEN_OPTS="-Xms128m -Xmx1024m" # 引导构建 ./bootstrap.sh java && mvn install # 或使用 AlmaLinux 8 开发容器 # 参考官方 build-install 文档
4. 定义 Schema(含张量字段)
// 示例:product schema 含多向量与张量字段
schema product {
document product {
field title type string { indexing: summary | index }
field price type int { indexing: summary | attribute }
field popularity type float { indexing: summary | attribute }
field sales_score type tensor<float>(category{}) {
indexing: summary | attribute
}
field embedding type tensor<float>(x[4]) {
indexing: summary | attribute |
index attribute { distance-metric: dotproduct }
}
}
# 多向量字段(ColBERT 式)
# field paragraph_embeddings type tensor<float>(paragraph{},embedding[768]) {
# indexing: summary | attribute |
# index attribute { distance-metric: angular }
# }
}
// Rank profile 定义多阶段排序
rank-profile product_ranking inherits default {
inputs {
query(q_category) tensor(category{})
query(q_embedding) tensor(x[4])
}
# first-phase: ANN recall
# second-phase: ML model rerank
# global-phase: final rerank
}
5. 文档写入(含张量与向量)
{
"put": "id:shopping:product::B0BFW5SXX2",
"fields": {
"title": "Keyboard Case for iPad Pro 12.9 inch",
"price": 29,
"popularity": 0.8,
"sales_score": {
"Tablet Keyboard Cases": 8.0,
"Keyboards": 2.0,
"Personal Computers": 0.1
},
"embedding": [1, 2, 3, 4]
}
}
6. 查询(混合检索 + 张量计算)
# 向量检索 + 词法 + 结构化过滤在单一查询中融合 # 使用 Vespa Query API(HTTP) curl -s "http://localhost:8080/search/" \ --data-urlencode "yql=select * from sources * where ..." \ --data-urlencode "input.query(q_embedding)=[1,2,3,4]" \ --data-urlencode "ranking=product_ranking"
7. Vespa Cloud 全托管
# 参考 Vespa Cloud 文档 # https://cloud.vespa.ai # 免费试用可用
8. 部署前必检清单
- 确认仓库位于
github.com/vespa-engine/vespa(官方) - 许可:Apache-2.0 ,商用自托管无限制
- 严格属于向量数据库分类,“搜索+向量+排序+推理一体化 AI 检索平台”子类
- 官方定位:”Search, make inferences in and organize vectors, tensors, text and structured data, at serving time and any scale”
- 开发方:Vespa AI(起源 Yahoo 搜索基础设施)
- 实现语言:Java(容器/编排)+ C++(内容节点/索引/排序)
- 核心架构:张量原生(tensor-native)——向量只是 rank-1 张量
- 核心能力:
- 统一检索:向量+词法+结构化在单一查询融合
- 多阶段排序:first-phase recall → second-phase rerank → global-phase rerank
- 服务层 ML 推理:ONNX/XGBoost/custom functions
- 多向量与多模态:ColBERT/ColPali 式 late interaction
- 实时索引更新:持续摄入,无昂贵索引重建
- HNSW 索引:单向量字段 + 多向量字段
- 部署形态:Docker / Kubernetes / RPM / Vespa Cloud
- 接口:HTTP Query API + Document API
- 生产验证:GigaOm Leader & Outperformer;Perplexity、Spotify 等生产使用
- 设计目标:大规模语料 + ML 模型评估 + 持续变化数据下 < 100ms 响应
- 自己不生成 Embeddings,需外接嵌入模型或在应用层生成后提交向量
- 与 Milvus(万亿级分布式向量库)、Qdrant(Rust 高性能过滤)、Weaviate(AI-native 混合检索)、Pinecone(全托管 SaaS)、VikingDB(已收录)差异化明确
- 学习曲线陡峭、运维复杂度高,纯向量 ANN 场景功能过剩
相关导航


Pinecone

Qdrant

Milvus

