Milvus 简介
Milvus[1] 是一个高性能的向量数据库,专为处理大规模非结构化数据(如文本、图像和多模态信息)而设计。它通过高效地组织和搜索大量向量数据来支持AI应用。
Milvus 的架构设计包括以下几个主要模块:
-
计算与存储分离:Milvus 将计算和存储分离,可以独立增加查询节点或数据节点以适应不同的流量模式。 -
无状态微服务:在 K8s 上运行的无状态微服务允许快速从故障中恢复,确保高可用性。 -
多租户支持:通过数据库、集合、分区或分区键级别的隔离策略,Milvus 支持多租户,使得单个集群可以处理数百到数百万个租户。 -
热冷存储机制:频繁访问的热数据存储在内存或 SSD 上,而较少访问的冷数据则存储在成本较低的存储介质上,从而降低成本并保持关键任务的高性能。
项目特点
核心特性
-
高性能与高可用性:Milvus 采用分布式架构,支持横向扩展,能够处理大规模向量数据的高效搜索。 -
多种向量索引类型:支持 HNSW、IVF、FLAT、SCANN 和 DiskANN 等主流向量索引类型,优化了不同场景下的搜索性能。 -
灵活的多租户支持:通过隔离策略支持多租户,确保优化的搜索性能和灵活的访问控制。 -
数据安全与细粒度访问控制:实施强制用户认证、TLS 加密和基于角色的访问控制 (RBAC),保护敏感数据免受未授权访问。 -
稀疏向量支持:除了密集向量外,还支持 BM25 和 SPLADE 等稀疏嵌入,可用于全文搜索和混合搜索。
使用场景
-
文本和图像搜索:通过高效的向量搜索技术,实现大规模文本和图像的快速检索。 -
检索增强生成:结合向量搜索和自然语言处理技术,提升生成模型的输出质量。 -
推荐系统:利用向量相似度进行个性化推荐,提高用户体验。 -
药物发现:通过多模态向量搜索,加速药物筛选和开发过程。 -
语义搜索:支持多向量和混合搜索,实现更精确的语义匹配。
项目使用
使用要求
-
编程语言版本:Python > 3.8 且 <= 3.11 -
操作系统要求:Linux (Ubuntu 20.04 或更高) 或 MacOS (Big Sur 11.5 或更高) -
依赖的框架或工具:Go >= 1.21, CMake >= 3.26.4 且 < 4, GCC 9.5, llvm >= 15 -
其他必要的配置:Docker 容器环境(可选)
安装步骤
-
安装 pymilvusPython SDK:
$ pip install -U pymilvus
-
创建 Milvus 客户端:
from pymilvus import MilvusClient
client = MilvusClient("milvus_demo.db")
-
连接到已部署的 Milvus 服务器或 Zilliz Cloud:
client = MilvusClient(
uri="<endpoint_of_self_hosted_milvus_or_zilliz_cloud>",
token="<username_and_password_or_zilliz_cloud_api_key>")
代码示例
创建一个向量集合,并插入数据进行搜索。
# 创建客户端
client = MilvusClient("milvus_demo.db")
# 创建集合
client.create_collection(
collection_name="demo_collection",
dimension=768# 向量维度
)
# 插入数据
data = [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]]
res = client.insert(collection_name="demo_collection", data=data)
# 搜索向量
query_vectors = [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]]
search_res = client.search(
collection_name="demo_collection",
data=query_vectors,
limit=2,
output_fields=["vector", "text", "subject"]
)
print(search_res)
相关资源
-
官方文档[2] -
在线演示[3] -
相关文章或教程[4] -
Discord[5]Twitter[6] -
LinkedIn[7]
注:本文内容仅供参考,具体项目特性请参照官方 GitHub 页面的最新说明。
欢迎关注&点赞&在看,感谢你的阅读~
GitHub仓库: https://github.com/milvus-io/milvus
[2]官方文档: https://milvus.io/docs
[3]在线演示: https://milvus.io/milvus-demos
[4]相关文章或教程: https://milvus.io/docs/tutorials-overview.md
[5]Discord: https://discord.gg/33mfvwep3J
[6]Twitter: https://twitter.com/milvusio
[7]LinkedIn: https://www.linkedin.com/company/the-milvus-project

