土法炼钢兴趣小组的算法知识备份

【向量检索引擎】一致性模型:Strong 到 Eventually 与 GuaranteeTs

文章导航

分类入口
databasestorage
标签入口
#milvus#consistency#guarantee-timestamp#bounded-staleness#tso#vector-engine

目录

「实时可搜」常被理解成「insert 返回成功后下一次 search 一定看到」。Milvus 用 可调一致性级别 把这句话拆成:你愿意为可见性等待多久。第 4、9 篇 已引入 GuaranteeTs;本文按官方文档收束四级语义与工程后果。

本文是「向量检索引擎」系列第 12 篇(共 18 篇)。→ 系列目录

版本锚定:Milvus 2.6.x Consistency LevelTimestamp;数据面路径对齐 Data Processing(Growing / Sealed)。


一、问题从哪来

Consistency Level:存算分离下,执行节点可能尚未看见全部最新流式更新;若不加约束,直接在不完整视图上 search 会丢未提交/未追上的点。系统为记录赋时间戳,并用同步时间推进执行侧的 ServiceTime;用户通过 GuaranteeTs 声明「至少要看到该时刻之前的更新」。

Timestamp:同一批 DML 共享时间戳;查询侧比较 Service_timestampGuarantee_timestamp(及可选 Graceful_time),决定立即执行还是等待。


二、四级一致性(官方)

支持级别:Strong、Bounded、Session、Eventually默认 Bounded

级别 GuaranteeTs 如何定(官方直觉) 体验
Strong 用最新时间戳 等到 ServiceTime 追上再搜;延迟↑,新鲜度↑
Bounded 早于最新的时间点,容忍有界陈旧 默认;延迟与新鲜度折中
Session 以该客户端插入到达的时间点为 GuaranteeTs 「我刚写的」优先可见
Eventually GuaranteeTs 极小(如 1),弱化检查 尽快在已有视图上返回

可在 创建 Collection 时设默认,也可在单次 search / query 覆盖(官方 API 示例)。

用户通常 不手写原始 TSO;选级别即可,由系统映射 GuaranteeTs(Timestamp 文档亦说明此点)。


三、等待条件(Timestamp 文档)

\(G\) = GuaranteeTs,\(S\) = ServiceTime,\(g\) = Graceful_time(配置的可容忍窗口)。

条件 行为
\(S \ge G\) 可立即执行
\(S + g \ge G\)(在启用 graceful 的叙述下) 可在容忍窗口内执行
仍不满足 推迟 search/query,直到水位追上

因此 Strong 相对 Eventually 的主要代价往往是 尾延迟(等待),不是另一套 ANN 算法。


四、对照 2.6 数据面:精确理解「刚写入就能搜」

2.6 Data Processing:WAL 提交后进入 Growing,由 Streaming Node 路径参与实时查询;Sealed 在 Query Node。Consistency 文档示意图仍用较笼统的 QueryNode 收流叙述——阅读时映射为:

  1. 写入成功 = 相关 Message 已按 TSO 提交到 WAL(第 5 篇);
  2. 对某次 search 可见 = 该次请求的 GuaranteeTs 所要求的更新,已进入执行路径的可见水位(Growing 与/或已 handoff 的 Sealed,视数据阶段而定);
  3. 索引最优路径就绪 = Data Node 建索 + Query Node 加载完成(第 10 篇)——这是性能问题,不是一致性级别字面承诺。

Session 保证的是 该客户端写入点 相关的可见性语义,不是「全集群所有客户端任意写入立即彼此可见」(那更接近 Strong)。


五、与 RAG 工程的选型直觉

RAG 场景 更常见选择
文档入库后立刻问答同一会话 Session 或 Strong
批量索引、可接受秒级陈旧 Bounded(默认)
离线评测、只读近似视图 Eventually 可能够用

权限过滤很严时,陈旧视图可能导致 偶发读到已撤销文档的向量——产品上常与第 11 篇过滤、应用层 ACL 一并设计,而不是只调 ef


六、学术谱系、工程间隙、开放问题

6.1 谱系

有界陈旧(Bounded Staleness)是分布式存储常见折中;Milvus 将其产品化为四级 + GuaranteeTs。TSO 提供写顺序原料(第 4、5 篇)。

6.2 工程间隙

6.3 开放问题

  1. 多副本下 ServiceTime 取 min/max/法定人数?
  2. Session 在连接池复用、跨进程客户端时的精确语义?
  3. 与 CDC 入湖(lakehouse/stream)对齐同一「可见版本号」?

七、小结

一致性级别 = GuaranteeTs 策略;代价主要是等待 ServiceTime。默认 Bounded。「能搜到」≠「索引已最优」。下一篇:Delete · Upsert · TTL


参考资料

  1. Milvus Documentation v2.6.x, Consistency Level
  2. Milvus Documentation v2.6.x, Timestamp
  3. Milvus Documentation v2.6.x, Data ProcessingStreaming Service
  4. 第 4、5、9 篇系列 index

返回 系列目录 | 上一篇:混合过滤 | 下一篇:Delete · Upsert · TTL

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。


By .