Milvus:海量向量检索这件事,它全包了

Milvus 在 GitHub 上已经拿到 45,028 Star 了。

这是一款开源向量数据库,专门处理非结构化数据的向量化存储与检索。文本、图片、音频、多模态数据,都能转成向量后快速搜索。它由 Zilliz 主要贡献,托管在 LF AI & Data 基金会下,采用 Apache 2.0 协议。

1、这玩意儿是干嘛的

一句话:把 Embedding 之后的向量存起来,并以毫秒级速度找回来。

Milvus 用 Go 和 C++ 写成,支持 CPU 和 GPU 硬件加速。它的架构原生面向 Kubernetes,可以横向扩展,支撑数千 QPS 下的十亿级向量检索,也支持单机 Docker 快速部署。如果只是本地试用,Milvus Lite 可以用 pip 直接安装,一个 Python 文件就能跑起来。

正文顶部截图

2、为什么要用它

做 RAG、语义搜索或推荐系统的人,通常卡在向量存储这一层。数据量一上来,检索延迟、索引更新、多租户隔离、冷热分层都会变成问题。每种场景换一套方案,维护成本会越来越高。

Milvus 把这一层抽象好了。它内置 HNSW、IVF、FLAT、SCANN、DiskANN 等主流索引,也支持 NVIDIA CAGRA 等 GPU 索引。向量检索之外,它还提供元数据过滤、范围搜索、混合检索,让向量与标量一起查。查询接口统一之后,上层业务基本不用关心底层索引差异。

3、核心能力

README区域截图

分布式计算与存储分离,是 Milvus 能横向扩展的关键。查询节点和数据节点可以独立扩容,K8s 上的无状态微服务也能快速恢复。副本机制把数据段加载到多个查询节点,提升吞吐和容错。

多租户方面,Milvus 支持数据库、Collection、Partition 到 Partition Key 级别的隔离,单个集群可以承载从几百到数百万的租户。

冷热数据分层把高频数据放在内存或 SSD,低频数据放到低成本存储,控制成本的同时保证关键任务性能。它还原生支持稀疏向量与 BM25 全文检索,能把稠密向量、稀疏向量存在同一张表里做混合搜索,这对需要同时做语义匹配和关键词召回的 RAG 场景很友好。

安全上,Milvus 提供强制认证、TLS 加密和基于角色的访问控制,适合企业级应用。数据插入后也能实时被检索到,适合需要持续更新的在线服务。

4、安装与使用

Python 开发者最快上手的办法:

pip install -U pymilvus

创建本地数据库:

from pymilvus import MilvusClient
client = MilvusClient("milvus_demo.db")

几行代码就能建 Collection、插数据、做向量搜索。接口设计比较直接,建表时指定向量维度,插入时把向量和元数据一起写入,搜索时传入查询向量并指定返回条数即可。

client.create_collection(
    collection_name="demo_collection",
    dimension=768,
)
client.insert(collection_name="demo_collection", data=data)
res = client.search(
    collection_name="demo_collection",
    data=query_vectors,
    limit=2,
)

5、适合哪些人用

  • 搭建 RAG 系统,需要把文档 Embedding 后批量写入向量库的开发者
  • 做语义搜索、图片搜索、推荐系统的工程师
  • 需要在 K8s 上部署可扩展向量检索服务的企业
  • 想用 LangChain、LlamaIndex、OpenAI、HuggingFace 等工具链快速接入向量存储的 AI 应用开发者

Milvus 的生态也很完整。pymilvus 提供了简单的模型封装,方便把非结构化数据直接转成向量。与 LangChain、LlamaIndex、OpenAI、HuggingFace 等框架的集成已经成熟,接入 RAG 管线不需要从零写存储层。

可视化方面可以用 Attu,监控可以接 Prometheus 和 Grafana,运维调试则有 Birdwatcher 等配套工具。数据迁移也有 VTS、Spark Connector、Kafka Connector 等方案可选。

调试则有 Birdwatcher 等配套工具。数据迁移也有 VTS、Spark Connector、Kafka Connector 等方案可选。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐