术语
AutoID
AutoID 是主字段的一个属性,用于确定是否为主字段启用自动递增功能。AutoID 的值基于时间戳定义。有关详细信息,请参阅create_schema。
自动索引
Milvus 会根据经验数据,自动为特定字段选择最合适的索引类型和参数。当您无需控制具体的索引参数时,此功能最为理想。有关更多信息,请参阅add_index。
Attu
Attu是 Milvus 的全能管理工具,可显著降低系统管理的复杂性和成本。
Birdwatcher
Birdwatcher是 Milvus 的调试工具,它通过连接 etcd,允许您监控 Milvus 服务器的状态并进行实时调整。它还支持 etcd 文件备份,有助于开发人员进行故障排查。
Bulk Writer
批量写入器是Milvus SDK(例如 PyMilvus、Java SDK)提供的一款数据处理工具,旨在将原始数据集转换为与 Milvus 兼容的格式,以实现高效导入。
批量插入
批量插入(Bulk Insert)是一项 API,它允许在单次请求中导入多个文件,从而提升写入性能,并优化大规模数据集的操作。
Cardinal
由 Zilliz Cloud 开发的 Cardinal 是一种尖端的向量搜索算法,可提供无与伦比的搜索质量和性能。凭借其创新的设计和广泛的优化,Cardinal 的性能比 Knowhere 高出数倍至一个数量级,同时还能自适应地处理各种生产场景,例如不同的 K 值、高过滤率、不同的数据分布等。
Channel
Milvus 作为其流式服务架构的一部分,采用了PChannel和VChannel 两种类型的通道。每个 PChannel 对应一个由Woodpecker 管理的 WAL 流,而每个 VChannel 则对应 Collection 中的一个分片。流式服务负责管理这些通道,以确保数据一致性和故障恢复。
Collection
在 Milvus 中,Collection 相当于关系型数据库管理系统(RDBMS)中的表。Collection 是用于存储和管理实体的主要逻辑对象。有关更多信息,请参阅《管理 Collections》。
依赖
依赖项是指另一个程序运行所依赖的程序。Milvus 的依赖项包括 etcd(存储元数据)、MinIO 或 S3(对象存储),以及 Woodpecker 等消息队列(管理快照日志)。有关更多信息,请参阅《数据基础设施》。
动态Schema
动态模式允许您在不修改现有Schema的情况下,向Collection中插入包含新字段的实体。这意味着您无需了解Collection的完整Schema即可插入数据,并可包含尚未定义的字段。您可以在创建Collection时启用“Dynamic Field”功能,从而启用此无Schema能力。有关更多信息,请参阅“启用Dynamic Field”。
Embeddings
Milvus 提供了内置的嵌入函数,可与流行的嵌入提供商配合使用。在 Milvus 中创建 Collection 之前,您可以使用这些函数为数据集生成 Embeddings,从而简化数据准备和向量搜索流程。要了解如何实际生成 Embeddings,请参阅《使用 PyMilvus 模型生成文本 Embeddings》。
实体
实体由一组代表现实世界对象的字段组成。Milvus 中的每个实体都由一个唯一的主键表示。
您可以自定义主键。若未手动配置,Milvus 会自动为实体分配主键。若选择自定义主键,请注意 Milvus 目前不支持主键去重。因此,同一 Collection 中可能存在重复的主键。更多信息,请参阅《插入实体》。
字段
Milvus Collection 中的字段相当于 RDBMS 中的表列。字段可以是用于结构化数据(例如数字、字符串)的标量字段,也可以是用于嵌入向量的向量字段。
过滤
Milvus 支持通过谓词进行标量过滤,允许您在查询和搜索中定义过滤条件以优化结果。
过滤搜索
过滤搜索将标量过滤器应用于向量搜索,使您能够根据特定条件优化搜索结果。有关更多信息,请参阅“过滤搜索”。
混合搜索
自 Milvus 2.4.0 起,混合搜索(Hybrid Search)作为一种混合搜索 API 正式推出。您可以搜索多个向量字段并将其融合。对于结合了标量字段过滤的向量搜索,称为“过滤搜索”。有关更多信息,请参阅混合搜索。
索引
向量索引是从原始数据衍生而来的重组数据结构,可大幅加速向量相似度搜索过程。Milvus 支持面向向量字段和标量字段的多种索引类型。有关更多信息,请参阅《向量索引类型》。
Kafka-Milvus 连接器
Kafka-Milvus 连接器是指用于 Milvus 的 Kafka 接收端连接器。它允许您将向量数据从 Kafka 流式传输到 Milvus。
Knowhere
Knowhere是 Milvus 的核心向量执行引擎,集成了多个向量相似度搜索库,包括 Faiss、Hnswlib 和 Annoy。 Knowhere 还专为支持异构计算而设计。它能够控制在何种硬件(CPU 或 GPU)上执行索引构建和搜索请求。这也正是 Knowhere 名称的由来——它“知道”该在何处执行操作。
日志快照
日志快照是一种二进制日志,它是分段中的较小单元,用于记录和处理 Milvus 中数据的更新与变更。分段中的数据会被持久化到多个二进制日志中。Milvus 中有三种类型的二进制日志:InsertBinlog、DeleteBinlog 和 DDLBinlog。 有关更多信息,请参阅元数据存储。
度量类型
相似度度量类型用于衡量向量之间的相似性。目前,Milvus 支持欧几里得距离(L2)、内积(IP)、余弦相似度(COSINE)以及二进制度量类型。您可以根据具体场景选择最合适的度量类型。更多信息,请参阅《相似度度量》。
MemoryBuffer
MemoryBuffer 是 Woodpecker 的一种轻量级部署模式,它将传入的写入数据临时缓存于内存中,并定期将其刷新到云对象存储。该模式最适合于小规模部署中的批处理密集型工作负载,或优先考虑简便性而非性能的生产环境。有关更多信息,请参阅《Woodpecker 架构》。
Mmap
内存映射文件通过将文件内容直接映射到内存中,实现高效的数据处理。当内存受限且无法加载全部数据时,此功能尤为有用。该技术可在一定程度上提升数据容量并维持性能。但是,如果数据量远超内存容量,搜索和查询速度可能会显著下降。 有关更多信息,请参阅《支持 MMap 的数据存储》。
Milvus 备份
Milvus Backup是一款用于创建数据副本的工具,可在发生数据丢失事件后用于恢复原始数据。
Milvus CDC
Milvus CDC(变更数据捕获)是一款用于将数据变更从一个 Milvus 集群复制到另一个集群的工具,用于主备灾难恢复。
Milvus CLI
Milvus 命令行界面(CLI)是一款支持数据库连接、数据操作以及数据导入和导出的命令行工具。它基于Milvus Python SDK,允许用户通过终端使用交互式命令行提示符执行命令。
Milvus 迁移
Milvus Migration是一款开源工具,旨在简化从各种数据源向 Milvus 2.x 迁移数据的过程。
Milvus 集群
在 Milvus 的集群部署中,服务由一组节点提供,以实现高可用性和轻松的可扩展性。
Milvus Standalone
在 MilvusStandalone 的独立部署模式下,所有操作(包括数据插入、索引构建和向量相似度搜索)均在一个单一进程中完成。
多向量
自 2.4.0 版本起,Milvus 支持在一个 Collection 中包含多个向量字段。更多信息请参阅“混合搜索”。
分区
分区是 Collection 的划分。Milvus 支持将 Collection 数据在物理存储上划分为多个部分。此过程称为分区,每个分区可包含多个分段。更多信息,请参阅“管理分区”。
Partition Key
字段的Partition Key属性可根据Partition Key值将实体划分到不同的分区中。这种分组机制确保具有相同Partition Key值的实体被存储在同一分区中,从而在通过Partition Key字段进行过滤查询时,系统可跳过无关的分区,从而加快搜索操作的速度。有关更多信息,请参阅“使用Partition Key”。
PChannel
PChannel 代表物理通道。每个 PChannel 对应一个由 Woodpecker 管理的 WAL 流。默认情况下,在启动 Milvus 集群时,系统会分配一组 PChannel 来存储记录数据插入、删除和更新的日志。有关更多信息,请参阅“流式服务”。
PyMilvus
PyMilvus 是 Milvus 的 Python SDK。其源代码已开源,托管在GitHub 上。您可以灵活选择 MilvusClient(新版 Python SDK)或原始的 ORM 模块来与 Milvus 进行交互。
查询
查询(Query)是一种 API,它使用指定的布尔表达式作为过滤条件来执行标量过滤。有关更多信息,请参阅“获取与标量查询”。
QuorumBuffer
QuorumBuffer 是 Woodpecker 的一种部署模式,专为对延迟敏感、需要同时具备实时响应能力和强容错能力的高频读写工作负载而设计。它作为高速写入缓冲区运行,采用三副本多数投票写入机制,确保强一致性和高可用性。更多信息请参阅《Woodpecker 架构》。
范围搜索
范围搜索允许您查找位于搜索向量指定距离范围内的向量。有关更多信息,请参阅范围搜索。
Schema
Schema 是定义数据类型和数据属性的元数据。每个 Collection 都有其专属的 Collection Schema,用于定义 Collection 的所有字段、自动 ID(主键)分配的启用状态以及 Collection 描述。字段 Schema 也包含在 Collection Schema 中,用于定义字段的名称、数据类型及其他属性。 有关更多信息,请参阅“管理Schema”。
搜索
搜索是一项用于执行向量相似度搜索操作的 API,其执行需要向量数据。有关更多信息,请参阅“单向量搜索”。
分段
分段是自动创建的数据文件,用于存储插入的数据。一个 Collection 可能包含多个分段,每个分段可容纳大量实体。在向量相似度搜索过程中,Milvus 会检查每个分段以生成搜索结果。
分段分为两种类型:增长型和封存型。增长型分段会持续收集新数据,直到达到特定阈值或时间限制,之后便会转为封存型。一旦封存,分段将不再接受新数据,并被转移到对象存储中。 与此同时,新数据将被路由到一个新的增长型分段中。从增长型分段转换为密封型分段,是由达到预定义的实体限制或超过增长状态的最大允许持续时间所触发的。有关更多信息,请参阅《设计细节》。
Spark-Milvus 连接器
Spark-Milvus 连接器实现了 Apache Spark 与 Milvus 之间的无缝集成,将 Apache Spark 的数据处理和机器学习 (ML) 功能与 Milvus 的向量数据存储和搜索能力相结合。
分片
Milvus 通过分片将写入操作分布到多个节点上,从而提升数据写入性能;这些分片是根据主键的哈希值组织而成的。这充分利用了集群的并行计算能力。
分区通过指定分区名称来减轻读取负载,而分片则将写入负载分散到多台服务器上。
稀疏向量
稀疏向量使用向量 Embeddings 来表示单词或短语,其中大多数元素为零,仅有一个非零元素表示特定单词的存在。诸如 SPLADEv2 之类的稀疏向量模型在域外知识搜索、关键词感知和可解释性方面优于稠密模型。 有关更多信息,请参阅《稀疏向量》。
流式服务
流式服务是 Milvus 内部流式系统模块的一个概念,它基于写前日志(WAL)构建,以支持各种与流式处理相关的功能。这些功能包括流式数据摄取/订阅、集群状态的故障恢复、流式数据转换为历史数据,以及对不断增长的数据进行查询。 该服务由流式协调器、流式节点集群和流式客户端组件构成。更多信息,请参阅《流式服务》。
非结构化数据
非结构化数据(包括图像、视频、音频和自然语言)是指不遵循预定义模型或组织方式的信息。此类数据约占全球数据的80%,可通过各种人工智能(AI)和机器学习(ML)模型转换为向量。
VChannel
VChannel 代表虚拟通道。每个 VChannel 代表 Collection 中的一个分片。每个 Collection 都会被分配一组 VChannel,用于记录数据的插入、删除和更新操作。VChannel 之间在逻辑上相互独立,但在物理层面上通过流式服务共享资源。有关更多信息,请参阅“流式服务”。
向量
嵌入向量是对非结构化数据(如电子邮件、物联网传感器数据、Instagram 照片、蛋白质结构等)的特征抽象。从数学角度讲,嵌入向量是一个由浮点数或二进制数组成的数组。 现代嵌入技术用于将非结构化数据转换为嵌入向量。自 2.4.0 版本起,Milvus 同时支持稠密向量和稀疏向量。
WAL 存储
预写日志(WAL)存储是分布式系统中数据持久性和一致性的基础。在任何更改提交之前,都会先记录在日志中——这确保了在发生故障时,您可以精确地从中断处恢复。 Milvus 使用 Woodpecker 作为其 WAL 存储系统,该系统同时支持 MemoryBuffer 和 QuorumBuffer 模式。更多信息请参阅《Woodpecker 架构》。
Woodpecker
Woodpecker 是 Milvus 2.6 中一款云原生的 WAL 系统,取代了 Kafka 和 Pulsar。凭借零磁盘架构和两种部署模式(MemoryBuffer 和 QuorumBuffer),它可在对象存储上提供高吞吐量、低运维开销以及无缝的可扩展性。 更多信息,请参阅《Woodpecker 架构》。
Zilliz Cloud
Zilliz Cloud 上的全托管 Milvus 服务,具备更多企业级功能和高度优化的性能。