问题域/PD-322

向量数据库抽象层

Vector Database Abstraction Layer

通过适配器模式支持多种向量存储后端,统一 collection/index/store 三层架构

子问题

1.多后端适配器统一接口

2.dense+sparse 混合向量支持

3.collection 生命周期管理

4.向量化队列异步处理

5.不同后端索引类型差异的透明适配(flat vs HNSW)

6.过滤表达式的类型安全 AST 与后端 DSL 编译

7.预建 collection 的只读适配(禁止创建模式)

各项目的解法1 solutions

Signals

横向对比

维度OpenViking
适配器架构CollectionAdapter 抽象基类 + 4 后端注册表工厂
索引策略Local/HTTP 用 flat,Volcengine/VikingDB 用 HNSW,sparse 自动切换 hybrid
过滤系统8 节点 frozen dataclass AST,_compile_filter 递归编译为后端 DSL
向量模式EmbedderBase 三分支继承 + CompositeHybridEmbedder 组合 dense×sparse
生命周期管理惰性加载 _load_existing_collection_if_needed + drop 先清索引再删 collection
后端差异处理模板方法 + 子类覆写 hook(_sanitize_scalar_index_fields / _build_default_index_meta / _normalize_record_for_read)

最佳实践

1.工厂模式按配置创建适配器

2.三层架构分离关注点

3.模板方法模式统一 collection 创建流程,子类只覆写后端差异 hook

4.frozen dataclass 构建不可变 FilterExpr AST 保证线程安全

5.CompositeHybridEmbedder 组合模式避免 dense×sparse 子类爆炸