Skip to content

行为与证据矩阵

语言: English | 简体中文

下列每项保留的项目声明都会给出其实现边界、直接证据、适用时的故障/质量实验,以及 与 Qdrant 有意保留的差异。

产品目标

目标(Goal) 公共 API / 模块 直接测试 故障或质量证据 范围内差异
固定集合模式(schema) Database.create_collection, CollectionConfig tests/unit/test_domain.py, tests/contract/test_collection.py 重新打开时检查模式指纹 仅支持一种稠密向量模式
精确且确定性的 Top-K Collection.search(exact=True), PlainVectorIndex, TopK tests/unit/test_metrics.py, test_topk.py, tests/acceptance/test_exact_collection.py 暴力搜索与平局顺序夹具 Python 参考算术,不使用 SIMD
确定性 HNSW HnswIndex, ImmutableSegment.search tests/index/test_hnsw_graph.py, test_hnsw_search.py test_hnsw_recall.py, 确定性召回率实验 教学图,而非 Qdrant HNSW/ACORN
JSON 载荷过滤器 Filter, Match, Range, HasId tests/contract/test_filters.py 有索引/无索引一致性 不支持文本、地理、日期时间或嵌套对象索引
基数规划(cardinality planning) QueryPlanner, PayloadIndexSet tests/query/test_planner.py, test_payload_index.py test_plan_parity.py 固定且可检查的阈值
载荷变更 replace_payload, merge_payload, delete_payload_keys tests/contract/test_collection.py 同一测试中的关闭/重开重放 WAL 存储完整点镜像;只进行浅层顶级字段编辑
可变/不可变生命周期 MutableSegment, ImmutableSegment, flush tests/contract/test_mutable_segment.py, tests/storage/test_segment_codec.py 跨分段验收 活跃分段位于内存;使用自定义不可变格式
版本与墓碑(tombstones) WAL sequence, StoredPoint.version tests/acceptance/test_cross_segment_search.py 大量失效候选回归;删除覆盖 由单个进程分配版本
应用前先写 WAL 的恢复 Wal, Collection.upsert/delete tests/storage/test_wal_codec.py, tests/reliability/test_wal_replay.py 损坏尾部与崩溃边界注入 单个 WAL 文件;间隔策略并非生产级刷写器
在线优化 optimize, merge, vacuum, OptimizationGate tests/storage/test_merge.py, test_vacuum.py 延迟写入、旧读取者、发布失败测试 显式完整重写;策略是纯确定性教学组件
安全回收 CollectionView, SegmentHandle tests/concurrency/test_online_optimize.py 视图释放前旧路径仍存在 进程内引用计数
标量量化(scalar quantization) ScalarQuantizer, ScalarQuantizedIndex tests/index/test_quantization.py 精确重评分及 ≥0.95 召回率下限 扫描编码后的候选;打开时重建编码
快照与恢复 create_snapshot, Database.restore_collection tests/acceptance/test_snapshot_roundtrip.py 校验和损坏、创建失败、恢复回滚 自定义集合快照;目标数据库不得有其他写入者
薄适配器与实验 miniqdrant CLI, miniqdrant.labs tests/acceptance/test_cli.py, test_labs.py 固定种子和有界夹具 不提供 REST/gRPC 服务器

必需不变量

不变量(Invariant) 强制机制 证据
维度/度量永不改变 冻结配置与持久化指纹 领域与重启测试
向量分量均为有限数 追加 WAL 前调用 validate_vector tests/unit/test_domain.py
余弦向量只归一化一次 验证过程存储归一化向量 度量/领域测试
版本严格递增 连续 WAL 序列即变更版本 WAL 编解码/重放测试
最大可见版本胜出 视图级 _latest_records 跨分段测试
最大墓碑阻止复活 拒绝候选版本 删除覆盖与清理测试
一个分段对每个 ID 只保留一个最高版本镜像 不可变 _highest_versions;可变版本守卫 可变分段/分段编解码测试
索引候选与剩余条件求值等价 候选集合加剩余过滤器 过滤器与计划一致性测试
精确排序与暴力搜索一致 基本评分加有界 Top-K 精确集合/度量测试
HNSW 输出排除已删除项和被过滤项 载荷候选准入与活跃记录 HNSW 计划/搜索测试
一次搜索使用一个稳定视图 capture_view 对句柄和可变记录取快照 在线优化器读取者测试
发布全有或全无 临时文件、fsync、替换 CURRENT 清单与优化器发布注入
WAL 序列唯一且有序 帧扫描验证序列连续 WAL 编解码/尾部测试
重放边界得到表示 在清单前发布 flush/优化器分段 崩溃边界与重启测试
重放是幂等的 分段/可变分段最大版本守卫 WAL 重放与跨重启测试
优化器不能覆盖更晚的写入 边界后的可变分段重建 带门控的延迟写入测试
过时路径等待读取者 SegmentHandle 引用 既有视图合并测试
恢复操作先验证后替换 校验和、分阶段 Collection.open、回滚 快照恢复失败测试
量化结果使用原始浮点数 过采样后调用 score(... original vector) 量化重评分测试
关闭等待所拥有的工作 优化器锁和活跃视图条件 生命周期并发测试
持久化分段 ID 无法逃逸根目录 清单 ID 格式与唯一性验证 清单路径遍历测试

声明边界

“原子”(Atomic)指经命名故障注入测试的单文件系统重命名/发布边界,并非分布式事务。 “持久”(Durable)指所选本地 WAL 策略和文档记录的 fsync 点。MiniQdrant 不声明 适合生产使用、兼容 Qdrant、支持多进程写入安全性、复制或共识,也不声明在硬件/ 文件系统故障下零数据丢失。