Milvus 是 Zilliz 开发的开源矢量数据库。Milvus 以为大量矢量嵌入提供可扩展的存储空间,以及支持矢量数据的高性能相似性搜索而闻名。
Zilliz 于 2017 年首次开发了 Milvus,并于 2020 年将该项目贡献给 Linux 基金会。Milvus 现在既可以作为 Apache License 2.0 下的开源软件使用,也可以作为 Zilliz 的云服务使用。
矢量数据库以矢量形式存储和管理数据集。它们可以帮助组织管理非结构化数据,对于高级人工智能 (AI) 和机器学习 (ML) 工作至关重要
。矢量是表示复杂概念和对象(如文字和图像)的数字阵列。
非结构化数据(如文本、视频和音频)占当今企业数据的很大一部分,但传统数据库通常不适合组织和管理这些数据。
组织可以将这些数据提供给专门的深度学习嵌入模型,这些模型输出称为“嵌入”的矢量表示。例如,单词“cat”可能由矢量 [0.2, -0.4, 0.7] 表示,而单词“dog”可能由矢量 [0.6, 0.1, 0.5] 表示。
将数据转换为矢量使组织能够以共享格式将不同种类的非结构化数据存储在一个矢量数据库中。
矢量还可以帮助组织解锁这些数据在 AI 和 ML 中的价值。矢量捕获元素之间的语义关系,使得大型语言模型 (LLM) 和生成式 AI 工具能够进行有效处理。大多数先进的 AI 和 ML 应用程序今天依赖于矢量进行训练和内容生成。
与其他矢量数据库一样,Milvus 为组织提供了一种管理和组织嵌入矢量的方法。Milvus 矢量数据库的高度可扩展的存储空间和高效的矢量搜索功能使其成为检索增强生成、推荐系统和其他 AI 应用程序的热门选择。
Milvus 是一个云原生矢量数据库,采用基于微服务的多层架构。Milvus 将存储和计算资源分离,使组织能够独立、水平地扩展每一层。
Milvus 兼容多种不同的嵌入模型。组织可以将他们的模型连接到 Milvus,Milvus 会采集嵌入以及元数据和其他相关信息。Milvus 支持流式和批量嵌入上传。
Milvus 有 4 层:
访问层:这是面向外部的一层,接受来自用户和服务的输入并返回输出。
协调器服务:Zilliz 将这一层称为系统的“大脑”,因为它负责协调负载平衡、数据管理、查询执行和其他重要任务。
工作节点:该层执行查询、更新数据和构建索引。
对象存储层:该层包括元数据存储、记录实时数据变更的日志代理,以及保存日志快照、索引文件和中间计算结果的对象存储。
Milvus 支持高性能矢量相似性搜索,这是一种返回语义上与查询相似的结果的矢量搜索。相似性搜索的优点在于,它不像传统的关键字搜索那样仅限于完全匹配。
例如,关键词搜索“最好的披萨餐厅”只会返回包含“最好”、“披萨”和“餐厅”字样的结果。如果对同一关键词进行相似性搜索,即使内容中没有使用“最好的披萨餐厅”这样的精确词,也会找到任何被强烈推荐的披萨店的结果。
Milvus 支持多种相似性搜索类型,包括 top-k 近似最近邻 (ANN) 和范围 ANN。
Milvus 还支持混合搜索,将语义矢量搜索与元数据过滤或关键词搜索等其他标准结合起来。
混合搜索可以提高搜索效率、相关性更高。考虑将关键字搜索和矢量搜索相结合的搜索。搜索可以首先使用特定关键字来基于完全匹配来筛选结果,然后使用矢量相似性搜索在这些筛选结果中搜索语义最相关的内容。
Milvus 支持多种索引类型,包括分层可导航小世界 (HNSW)、倒排文件 (IVF) 和基于 GPU 的索引。
索引矢量可以帮助加快搜索速度。例如,在索引构建过程中,HNSW 将相似的矢量聚类在一起,从而更容易更快地找到相关结果
。Milvus 的层可以相互独立扩展,这可以为组织提供一种经济高效和资源有效的方式来处理大量矢量数据和密集搜索。
Milvus 提供大量软件开发套件 (SDK),以支持各种语言的开发,包括 Python (pymilvus)、Java 和 Go。
Milvus 还可以与 Apache Spark 等分析工具、LangChain 等框架以及 IBM watsonx、Meta 的 Llama 和 OpenAI 的 GPT 模型等生成式 AI 模型集成。
大型开源社区为 Milvus 的 GitHub 存储库贡献了修复、更新和其他增强功能。
Pinecone 和 Milvus 都提供低延迟搜索和可扩展存储,但 Pinecone 是专有的矢量数据库,仅作为托管服务提供。
与Milvus一样,Weaviate也是开源的,支持混合搜索。一个关键区别是,Milvus提供的索引类型比 Weaviate 多。
Qdrant 是另一个开源矢量数据库,以其强大的功能而闻名。虽然 Qdrant 非常适合中等规模用途,但 Milvus 通常可以处理更多的矢量数据。
Chroma 注重易用性和快速本地部署。Chroma 没有分布式架构,因此可扩展性较差。虽然 Chroma 通常用于原型设计和测试,但 Milvus 可以支持更广泛的用例。
组织使用 Milvus 支持众多 AI 应用场景,包括:
检索增强生成 (RAG)
推荐系统
媒体搜索
异常和欺诈检测
RAG 是一种架构,可将 AI 模型与外部知识库连接起来,帮助模型提供相关性更高、更准确的结果。
Milvus 在 RAG 实现中很常见,因为它支持高效的混合搜索。通过将语义搜索的上下文理解与关键字搜索和元数据过滤的精确性相结合,Milvus 可以帮助从 RAG 源中获取相关文档、代码片段和其他信息。
CacheGPT,是 Zilliz 开发的 LLM 开源语义缓存,也有助于 Milvus 支持 RAG 实现。CacheGPT William 将来自生成式 AI 应用程序的响应存储为矢量嵌入。
互联服务(如 RAG 接口)无需为每次搜索都向生成式 AI 进行 API 调用。而是可以先检查缓存,仅在答案不存在时才调用生成式 AI。
Milvus 在根据过去行为将内容、产品和广告与用户相匹配的推荐系统中很受欢迎。
用户的偏好可以用矢量表示,通过相似性搜索可以找出与用户偏好接近的产品、广告和内容的矢量表示。
Milvus 的相似性搜索功能可以帮助简化图像搜索、音频搜索、视频搜索和其他媒体搜索。