向量数据库抽象层
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 子类爆炸