✕
Authored by
Authored on
先把向量数据库部署起来,选型就先选Milvus,如下为AI生成内容
Milvus 向量数据库介绍
Milvus 是一款开源的、专为大规模向量相似性搜索和分析而设计的向量数据库。它致力于管理海量的非结构化数据,并为其提供高效的检索和分析能力。在人工智能和机器学习应用中,非结构化数据(如图像、视频、音频和文本)通常被转换为高维向量(Embeddings),Milvus 的核心任务就是对这些向量进行存储、索引和搜索。
核心功能与特性
高性能相似性搜索
Milvus 能够在上亿甚至百亿规模的向量数据集中实现毫秒级的相似性搜索。它支持多种常用的相似性度量方法,包括欧氏距离 (L2)、内积 (IP)、杰卡德距离 (Jaccard) 等,以满足不同场景的需求。
丰富的索引类型
为了在查询效率和准确率之间取得平衡,Milvus 提供了多种先进的近似最近邻搜索 (ANNS) 索引算法。常见的索引类型包括:
FLAT: 精确搜索,保证 100% 的准确率,但速度较慢,适用于小规模数据集。
IVF 系列 (IVF_FLAT, IVF_SQ8): 基于倒排文件的索引,通过聚类将向量空间划分为多个单元,查询时只搜索相关的单元,以提高效率。
HNSW: 基于图的索引,具有高查询性能和高召回率,是目前最受欢迎的索引之一。
ScaNN: 谷歌开源的高性能索引,通过向量量化实现快速搜索。
云原生与高可用
Milvus 采用面向云原生设计的微服务架构,实现了存储与计算的分离。它可以轻松部署在 Kubernetes 等容器编排平台上,支持弹性伸缩、故障自愈和高可用性,能够根据业务负载动态调整资源。
混合搜索能力
除了向量相似性搜索,Milvus 还支持对标量字段(如字符串、布尔值、数值等)进行属性过滤。这种混合搜索能力允许用户在执行向量搜索的同时,附加过滤条件,从而实现更精确、更复杂的查询。
多语言支持与生态
Milvus 提供了丰富的多语言 SDK,包括 Python, Java, Go, Node.js 等,方便开发者集成。同时,它与 LangChain, LlamaIndex, Towhee 等主流的 AI/ML 框架和工具链深度集成,形成了强大的生态系统。
系统架构
Milvus 2.0 版本的架构主要由四个层面组成:
接入层 (Access Layer)
由一组无状态的 Proxy 组成,负责接收客户端请求、验证请求合法性,并将请求转发给内部组件。
协调服务 (Coordinator Service)
负责集群管理、元数据管理、任务分配等核心协调工作。包含 Root Coordinator, Data Coordinator, Query Coordinator, Index Coordinator 等多种角色。
工作节点 (Worker Nodes)
负责执行具体的任务。主要包括:
Query Node: 加载内存中的向量数据,并执行向量搜索和混合查询。
Data Node: 订阅增量日志流,处理数据插入、删除等操作。
Index Node: 负责为向量数据构建索引。
存储层 (Storage)
负责数据的持久化。包括元数据存储(通常使用 etcd)、日志存储(通常使用 Pulsar 或 Kafka)以及对象存储(如 MinIO, S3)。
应用场景
Milvus 作为 AI 应用的基础设施,被广泛应用于各种需要处理非结构化数据的场景中。
图像/视频检索
通过对图像或视频内容提取特征向量,实现以图搜图、视频片段检索等功能。
文本搜索引擎
用于构建语义搜索引擎、智能问答系统 (Q&A)、文本推荐等,理解用户查询的真实意图而非仅仅匹配关键词。
推荐系统
通过计算用户和物品的向量表示,实时推荐相似或相关的商品、音乐、新闻等内容。
生物信息学
用于蛋白质结构分析、DNA 序列比对等,加速药物研发和基因研究。
网络安全
通过分析系统日志或网络流量的向量化表示,实现异常行为检测和威胁识别。
更多信息,请访问官方网站: Milvus Official Website