一、集合、分区、数据段
一个集合可包含多个分区,一个分区可包含多个Segment;
分区:相当于给知识库按「业务线」分文件夹(如 "产品部""技术部""销售部"),检索 "产品部文档" 时,只需要打开 "产品部" 文件夹,不用遍历整个知识库,效率更高;
Segment:相当于每个文件夹里的 "文档文件",
数据先写入 Partition,再由 Milvus 自动封装成 Segment;
检索时:先指定 Partition 缩小范围 → 加载对应 Partition 的 Segment 到内存 → 对 Segment 内数据做向量检索。
二、分区需要指定、segment不需要
| 组件 | 查找方式 | 是否需要代码配置 | 关键说明 |
|---|---|---|---|
| Segment | 完全自动 | 无需配置 | Milvus 会根据数据分布、检索条件自动定位并检索目标 Segment(包括内存 / 磁盘中的 Segment),用户无需感知 Segment 的存在 |
| 分区(Partition) | 默认全量检索所有分区;指定分区需手动配置 | 需要(指定分区时) | 1. 不配置:检索时扫描 Collection 下所有分区的 Segment;2. 配置参数:仅扫描指定分区,大幅提升检索效率 |
三、集合的状态
集合的状态
-必须先加载load集合到内存才能使用
-数据存储在磁盘上,但是搜索和索引需要在内存中进行
-加载操作就是将磁盘数据读取到内存
四、集合的生命周期
集合的生命周期
-已创建但未加载,数据在磁盘中,不占用内存
-已加载,数据在内存中,可以进行所有的操作,占用内存资源
-已释放,集合数据从内存中释放,回到未加载状态
五、索引
| 索引类型 | 适用数据规模 | 核心优势 | 典型场景 |
|---|---|---|---|
| IVF_FLAT | 中小规模(百万级) | 内存占用低,构建速度快 | 内存有限、需平衡速度与精度的场景 |
| IVF_PQ | 大规模(亿级) | 内存占用仅为IVF_FLAT的1/4 | 内存受限的大规模数据集 |
| HNSW | 中大规模(百万~十亿级) | 查询速度极快,支持高维数据 | 实时推荐、语义搜索等高并发场景 |
| HNSW_SQ | 大规模(十亿级) | 内存占用比HNSW低50% | 内存敏感的高维数据场景 |
六、一致性
| 一致性级别 | 核心说明 | 适用场景 | 性能 / 延迟 | 数据可见性 |
|---|---|---|---|---|
| Strong(强一致) | 读操作能看到所有已成功提交的写操作结果,读写严格按顺序执行 | 金融交易、核心业务数据检索 | 低 / 高延迟 | 写入后立即可见,无数据不一致 |
| Bounded Staleness(有界过期) | 读操作能看到「T 时间前 / 最多 N 版本前」的写操作结果,平衡一致性与性能 | 电商商品检索、日志分析 | 中 / 中延迟 | 可见性有可控延迟(如 1 秒),避免脏读 |
| Session(会话一致) | 同一客户端会话内,读操作能看到该会话提交的所有写操作结果,跨会话无保证 | 单用户知识库问答、个人操作 | 中 / 低延迟 | 会话内数据一致,跨会话可能延迟 |
| Eventually(最终一致) | 无严格时间 / 版本限制,写操作最终会被所有读操作看到(通常秒级) | 非核心数据检索、批量数据导入 | 高 / 低延迟 | 写入后可能延迟可见(秒级),性能最优 |
七、服务节点
| 节点类型 | 核心作用 | 关键说明 |
|---|---|---|
| Root Coord(根协调器) | 集群总控核心,管理元数据、分配资源、调度全局任务(如创建 Collection) | 集群的 "大脑",负责全局决策 |
| Proxy(代理节点) | 接收客户端请求,路由到对应节点,适配一致性级别,返回结果 | 客户端与集群的 "网关",无状态 |
| Query Coord(查询协调器) | 管理 Query Node,调度检索任务,聚合检索结果 | 检索任务的 "调度员" |
| Query Node(查询节点) | 执行向量相似度检索、标量过滤,加载数据到内存,返回检索结果 | 检索功能的 "执行者",性能核心 |
| Index Coord(索引协调器) | 管理 Index Node,调度索引构建任务,维护索引元数据 | 索引任务的 "调度员" |
| Index Node(索引节点) | 为向量数据构建索引(如 IVF_FLAT、HNSW),提升检索效率 | 索引构建的 "执行者" |
| Data Coord(数据协调器) | 管理 Data Node,分片管理、数据均衡,维护数据生命周期 | 数据存储的 "调度员" |
| Data Node(数据节点) | 处理数据写入 / 删除,将数据持久化到存储介质(如 MinIO),生成日志 | 数据写入的 "执行者" |
| Etcd | 存储集群元数据(节点信息、Collection 配置),实现节点间状态同步 | 集群的 "配置中心",依赖外部部署 |