Skip to main content
后端标签是简历;explain() 才是背景调查。

1. 动机

应用经常把 family 标签变成规划器分支:「向量数据库」理应支持所有向量操作,或「SQL」理应共享一种文本排序规则。真实提供商会随操作、字段策略、版本、配置与实时资源而变化。 HeavenBase 通过 Context 局部的 backend_type Registry 记录解析每个 Backend。静态标签描述候选角色;精确处理器记录、编译器输出与实时检查决定执行。工作区让提供商选择可检查,却不会假装一个标签能证明原生行为。
debug 预设对数据行使用 SQLite,并配有内存向量与搜索实例。它不需要外部服务,是推荐的首次运行方式。

2. 从 0.1.2.1 提供商矩阵中选择

协议兼容的选择器仍然是不同 Backend 身份。例如 Supabase 与 pgvector 使用 PostgreSQL 协议,却拥有不同的构造与放置行为。Milvus Lite 也不是 Milvus 服务器的别名。 可选提供商需要自己的 Python 包、凭据与可达服务。sql extra 安装维护中的 SQL 驱动;full 安装当前平台可用的内置提供商客户端。

3. 从预设开始

预设是一种完整构造形式。即使两个预设恰好解析到相似提供商,用不同的显式预设重新打开持久工作区也会发生冲突。

4. 使用显式 Backend 映射

工作区局部名称是映射键;Registry 选择器位于每个 type 中:
字段路由到 mainvecsearch,而不是直接路由到提供商类型。把凭据保存在环境插值或显式进程配置中;公共诊断会省略认证值。 需要路径定位符时,本地文件提供商使用共享 file:// 定位语法。远程提供商把物理资源名称限定到工作区与 Backend 实例,让全新进程中的清理仍然有界。

5. 按策略放置字段

存储策略表达字段意图:InlineColumnSideTableJsonFieldSparseGramIndexVectorIndexInvertedIndexGraphEdgeExternalRef。注册会把意图与命名 Backend 实例、已安装放置 profile 一起解析。 SQL Backend 可以承载 SparseGramIndex,对短关键词数组做反向包含。显式 gram Backend 仍是窄兼容路线;新应用通常把 sparse-GRAM postings 与 SQL 行存储放在一起。

6. 检查标签、能力与具体计划

静态标签来自已安装主题记录的 meta.tags。缺失可选标签定义时,原始声明会带着未解析诊断继续可见;声明不会被抹去。 全局能力描述已注册候选。工作区能力通过已配置 Backend 实例进行过滤。两者都不能代替具体查询计划:
承诺原生或便携语义前,请使用计划中的 handler_mode、回退原因、不安全原因与便携证明细节。

7. 了解提供商特定边界

  • 独立 Backend 不会形成分布式事务。
  • 本地 JSON 与 pickle 面向开发;把 pickle 视为可信本地数据。
  • Milvus 向量字段必须为必填,因为它的数据行不能表示缺失的 FLOAT_VECTOR
  • 提供商排序规则与文本操作可能不同;除非不安全查询策略显式接受提供商语义,否则 HeavenBase 可能选择精确便携扫描。
  • Pinecone 无法为所有无界归约证明穷举枚举。
  • 本地文件与嵌入式提供商仍需要显式所有权与清理;detached=True 不会让其数据变成临时数据。
  • 可达性、凭据、服务器版本与配额是实时事实,不是模块标签。
部署、备份、认证与容量规划请遵循提供商自身的运维指导。

摘要

  • Backend 类型名称标识候选项,而不是经过证明的执行。
  • Preset 简化构造;显式映射与放置表达刻意选择。
  • 标签负责描述,能力负责筛选,而 explain() 报告具体路由。

进一步探索

相关资源: