核心功能
Vald 是按云原生架构设计的分布式稠密向量近似最近邻搜索引擎,运行在 Kubernetes 上、通过 Helm 部署。官方称其具备自动向量索引与索引备份、支持横向扩展,面向十亿级特征向量的检索场景,底层近邻算法使用 NGT。与 FAISS、Annoy、hnswlib 这类进程内算法库不同,Vald 是带服务端与客户端 SDK 的完整系统。
功能亮点
云原生部署
helm repo add 之后一条 helm install 拉起整套集群,Pod、Service、Ingress 均由 chart 生成
NGT 作为内核
README 称使用最快的 ANN 算法 NGT 做近邻搜索,其中 Vald Agent NGT 组件要求 CPU 具备 AVX2
自动索引与备份
官方把自动向量索引和索引备份列为核心特性,写入后无需人工触发建索引或备份流程
多语言客户端
官方 SDK 覆盖 Go、Java、Node.js、Python,教程用 vald-client-go 演示 Insert 与 Search
适用场景
• 在 Kubernetes 集群上搭建可横向扩展的向量检索服务,供多个业务方通过 gRPC 调用
• 十亿量级特征向量的图像、音频或文本相似检索与推荐召回
• 需要索引自动备份和滚动扩缩容的生产环境,替代自建的单机 ANN 索引服务
安装配置
bash
添加 Helm 仓库并安装(README): helm repo add vald https://vald.vdaas.org/charts helm install vald-cluster vald/vald 按官方 Get Started 教程用示例配置安装: git clone https://github.com/vdaas/vald.git && cd vald helm repo add vald https://vald.vdaas.org/charts helm install vald vald/vald --values example/helm/values.yaml 查看部署状态: kubectl cluster-info kubectl get pods kubectl get svc kubectl get ingress 未使用 Ingress 时可做端口转发: kubectl port-forward deployment/vald-lb-gateway 8081:8081 卸载: helm uninstall vald 环境要求(Get Started 原文):Kubernetes v1.19~、Go v1.15~、Helm v3~,跑教程还需要 libhdf5。 注意:README 说明直接使用默认 values.yaml 会安装 nightly 镜像。
使用方法
go
官方 Get Started 使用 vald-client-go,建立 gRPC 连接后调用 Insert 与 Search。
插入向量并建立索引:
for i := range ids[:insertCount] {
_, err := client.Insert(ctx, &payload.Insert_Request{
Vector: &payload.Object_Vector{
Id: ids[i],
Vector: train[i],
},
Config: &payload.Insert_Config{
SkipStrictExistCheck: true,
},
})
if err != nil {
glg.Fatal(err)
}
}
搜索最近邻:
res, err := client.Search(ctx, &payload.Search_Request{
Vector: vec,
Config: &payload.Search_Config{
Num: 10,
Radius: -1,
Epsilon: 0.1,
Timeout: 100000000,
},
})
if err != nil {
glg.Fatal(err)
}
b, _ := json.MarshalIndent(res.GetResults(), "", " ")
完整示例见仓库中的 example/client/main.go,其他语言的用法见官方 SDK 文档。关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标Vald
价格免费
开源是
上手难度专家
相关工具
优点
- 云原生设计,Helm chart 一条命令即可部署,官方 Get Started 用 k3d 就能在本地跑通完整流程
- 内置自动向量索引与索引备份、支持横向扩展,README 明确面向十亿级特征向量的检索
- 底层采用 NGT 作为 ANN 算法,README 将其描述为最快的 ANN 算法
- 官方提供 Go、Java、Node.js、Python 等多语言 SDK,项目已进入 CNCF Landscape 的 database 分类
缺点
- 必须有 Kubernetes 集群才能运行,官方要求 v1.19 及以上,不提供单机进程内嵌入的使用方式
- Vald Agent NGT 组件硬性要求 CPU 支持 AVX2 指令集
- README 说明按默认 values.yaml 安装会拉取 nightly 镜像,生产环境需要自行固定版本
- 官方 Get Started 只给出 Go 语言的完整示例代码,其他语言 SDK 需要另行查阅文档