Milvus:高效能的云原生向量数据库

Milvus:高性能云原生向量数据库

什么是 Milvus?

🐦 Milvus 是一个为大规模向量近似最近邻(ANN)检索而构建的高性能向量数据库。它能够有效地组织和搜索大量的非结构化数据,包括文本、图像和多模态信息,是连接AI应用和数据的重要桥梁。

Milvus采用编写于Go和C++的代码构造,并实现了CPU/GPU硬件加速,达到业界领先的向量搜索性能。由于具备全分布式K8s原生架构 ,Milvus不仅支持横向扩展,可以处理成千上万的搜索查询,还可以确保数据实时更新,保持数据的最新状态。此外,Milvus还支持Standalone模式,适合单机部署。而Milvus Lite是一个轻量级版本,特别适合Python用户进行快速入门。

想要零配置使用Milvus?可以尝试使用Zilliz Cloud ☁️免费体验。Milvus在Zilliz Cloud中作为完全托管的服务提供,包括无服务器专享自带云选项。

快速开始

要开始使用Milvus,您可以通过以下方式快速入门:

python 复制代码
$ pip install -U pymilvus

安装完pymilvus后,您就可以创建一个Milvus客户端:

python 复制代码
from pymilvus import MilvusClient

Milvus Lite同样包括在内,只需实例化一个客户端并指定本地文件名称以便持久化数据:

python 复制代码
client = MilvusClient("milvus_demo.db")

如果您希望连接部署在Milvus服务器Zilliz Cloud,可以使用以下代码:

python 复制代码
client = MilvusClient(
  uri="",
  token="")

通过这个客户端,您可以创建集合:

python 复制代码
client.create_collection(
    collection_name="demo_collection",
    dimension=768,  # 此示例中的向量维度为768
)

接下来,您可以插入数据:

python 复制代码
res = client.insert(collection_name="demo_collection", data=data)

最后执行向量搜索:

python 复制代码
query_vectors = embedding_fn.encode_queries(["Who is Alan Turing?", "What is AI?"])
res = client.search(
    collection_name="demo_collection",  # 目标集合
    data=query_vectors,  # 一个或多个查询向量的列表,支持批量
    limit=2,  # 返回结果的数量(topK)
    output_fields=["vector", "text", "subject"],  # 返回的字段
)

为什么选择 Milvus?

Milvus专为处理大规模的向量搜索而设计。它能够存储向量(非结构化数据的学习表示),同时支持多种标量数据(如整数、字符串和JSON对象)。用户可以通过元数据过滤或混合搜索进行高效的向量检索。以下是开发人员选择Milvus作为AI应用向量数据库的原因:

高性能与高可用性

  • Milvus具有分布式架构,将计算存储分离。通过横向扩展,Milvus可以适应不同的流量模式,独立增加查询节点以应对读重 workloads,并增加数据节点以处理写重 workloads。K8s上的无状态微服务实现了快速恢复,确保高可用性。同时,支持副本,进一步增强容错能力和吞吐量。

多种向量索引类型和硬件加速支持

  • Milvus分离了系统和核心向量搜索引擎,支持针对不同场景优化的主要向量索引类型,包括HNSW、IVF、FLAT(暴力搜索)、SCANN和DiskANN等,提供量化或内存映射的变体。Milvus优化向量搜索以支持高级功能,如元数据过滤范围搜索

灵活的多租户和冷热存储

  • Milvus支持通过数据库、集合、分区或分区键级别隔离实现的多租户。这些策略使得单个集群可以处理从数百到数百万的租户,确保优化搜索性能和灵活的访问控制。

稀疏向量以实现全文搜索和混合搜索

  • 除了通过稠密向量进行语义搜索,Milvus还原生支持使用BM25的全文搜索,以及诸如SPLADE和BGE-M3的学习稀疏嵌入。用户可以在同一集合中存储稀疏向量和稠密向量,并定义函数以重新排序来自多个搜索请求的结果。

数据安全和细粒度访问控制

  • Milvus通过实施强制用户身份验证、TLS加密和基于角色的访问控制(RBAC)确保数据安全。用户认证确保只有持有有效凭证的用户才能访问数据库,而TLS加密则保障网络内所有通信的安全。此外,RBAC允许为用户分配特定权限以实现精细的访问控制。这些功能使Milvus成为企业应用的强大且安全的选择,保护敏感数据不被未授权访问和潜在泄露。

Milvus广受AI开发者信赖,用于构建各种应用程序,如文本与图像搜索、增强检索生成(RAG)和推荐系统。

演示和教程

Milvus提供多种演示和教程,帮助您使用Milvus构建各种类型的AI应用:

您可以探索全面的教程概述,涵盖主题如增强检索生成(RAG)、语义搜索、混合搜索、问答、推荐系统和各种快速入门指南。这些资源旨在帮助您快速高效地入门。

教程 用例 相关Milvus功能
使用Milvus构建RAG RAG 向量搜索
RAG的高级优化 RAG 向量搜索,全文搜索
使用Milvus进行全文搜索 文本搜索 全文搜索
使用Milvus进行混合搜索 混合搜索 混合搜索,多个向量,稠密嵌入,稀疏嵌入
使用Milvus进行图像搜索 语义搜索 向量搜索,动态字段
多模态搜索与多个向量 语义搜索 多个向量,混合搜索
使用Milvus的电影推荐系统 推荐系统 向量搜索
使用Milvus的图形RAG RAG 图搜索
使用Milvus的上下文检索 快速入门 向量搜索
向量可视化 快速入门 向量搜索
使用Milvus的HDBSCAN聚类 快速入门 向量搜索
使用ColPali与Milvus进行多模态检索 快速入门 向量搜索

|-------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|
| | | |

生态系统和集成

Milvus与一整套综合的AI开发工具集成,如LangChain、LlamaIndex、OpenAI和HuggingFace,使其成为增强检索生成(RAG)应用的理想向量存储。Milvus支持开放源代码嵌入模型和嵌入服务,涉及文本、图像和视频等多种模态。Milvus还提供了一个方便的pymilvus[model]实用工具,用户可以使用简单的包装代码将非结构化数据转换为向量嵌入,并利用重新排序模型优化搜索结果。

Milvus的同类项目

除了Milvus之外,还有一些同类向量数据库项目也在市场上具有影响力,它们各自具备特色功能与优势:

  1. Pinecone: 提供全托管的向量数据库服务,专注于高效的相似度搜索,尤其适合用于机器学习应用和AI的产品推荐功能。
  2. Faiss: Facebook开发的一个库,针对高效的相似度搜索进行了优化,支持多个索引和距离计算方法,适合需要强大存储和检索能力的数据密集型场景。
  3. Weaviate: 结合向量搜索和知识图谱,适合于构建语义理解应用,支持物体、图像等多种数据类型。
  4. Annoy: Spotify推出的一个C++库,用于帮助快速匹配相似项,强调高效内存利用,适合实时推荐系统和搜索引擎。

通过选择适合您的项目需求的向量数据库,您可以更好地提升AI应用的效率与准确性。

相关推荐
q***2511 小时前
Spring Boot 中使用 @Transactional 注解配置事务管理
数据库·spring boot·sql
z***3352 小时前
SQL Server 数据库管理工具的安装以及使用
数据库
shuidaoyuxing3 小时前
对 微服务 进行一次系统化、结构化的全面讲解
微服务·云原生·架构
e***0968 小时前
Sql Server数据库远程连接访问配置
数据库
2501_924064119 小时前
2025数据库性能测试工具:Utest、JMeter、HammerDB 等主流方案推荐
数据库·测试工具·jmeter·数据库性能测试·数据库负载测试·数据库压测工具·jmeter 压力测试
movie__movie9 小时前
秒杀库存扣减可以用redis原子自增么
数据库·redis·缓存
找不到、了10 小时前
MySQL 索引下推(ICP)的实战,彻底提升查询性能
数据库·mysql
b***676410 小时前
Springboot3 Mybatis-plus 3.5.9
数据库·oracle·mybatis
kitty_hi10 小时前
mysql主从配置升级,从mysql5.7升级到mysql8.4
linux·数据库·mysql·adb