# https://github.com/jdagdelen/hyperDB 项目说明书

生成时间：2026-07-02 14:23:45 UTC

## 目录

- [Project Overview and Architecture](#page-1)
- [Core HyperDB Class and Vector Math](#page-2)
- [Usage, Embedding Models, and Data Flow](#page-3)
- [Persistence, Deployment, and Extensibility](#page-4)

<a id='page-1'></a>

## Project Overview and Architecture

### 相关页面

相关主题：[Core HyperDB Class and Vector Math](#page-2), [Usage, Embedding Models, and Data Flow](#page-3)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [README.md](https://github.com/jdagdelen/hyperDB/blob/main/README.md)
- [hyperdb/__init__.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/__init__.py)
- [setup.py](https://github.com/jdagdelen/hyperDB/blob/main/setup.py)
- [requirements.txt](https://github.com/jdagdelen/hyperDB/blob/main/requirements.txt)
- [demo/pokemon.jsonl](https://github.com/jdagdelen/hyperDB/blob/main/demo/pokemon.jsonl)

</details>

# Project Overview and Architecture

## 项目目的与定位

HyperDB 是一个面向大语言模型 Agent 的本地向量数据库，强调"hyper-fast"（超高速）体验。从 [README.md](https://github.com/jdagdelen/hyperDB/blob/main/README.md) 的描述来看，项目以戏谑的口吻（"Not entirely a joke"）自我宣传，但核心定位是：提供一个简单接口、可与任意 LLM Agent 兼容的轻量级向量检索层。其核心卖点可归纳为三点：

- 简单接口：面向所有 LLM Agent 的统一调用范式（资料来源：[README.md:7-8]()）
- 高性能后端：基于 C++ 并通过 MKL BLAS 进行硬件加速（资料来源：[README.md:9-10]()）
- 富文档结构：支持 `ids` 与 `metadata` 的高级索引能力（资料来源：[README.md:11-12]()）

安装方式为标准的 `pip install hyperdb-python`（资料来源：[README.md:16-18]()），可选的 `sentence-transformers` 依赖用于本地 embedding 模型（资料来源：[README.md:22-24]()）。

## 高层架构

根据 README 的描述，HyperDB 的高层架构可视为三层组合：Python 接口层 → 计算后端层（C++/MKL BLAS）→ 数据持久化层。下图展示了用户在典型会话（构造 → 嵌入 → 保存/加载 → 查询）中的数据流：

```mermaid
flowchart LR
    A[文档 JSONL] --> B[HyperDB 构造器 key=info.description]
    B --> C[嵌入计算]
    C --> D[(本地向量索引)]
    D --> E[save .pickle.gz]
    E --> F[(磁盘文件)]
    F --> G[load HyperDB]
    G --> H[query top_k=5]
    H --> I[返回 Top-K 文档结果]
```

整体数据流体现了 README 中给出的端到端使用示例：从 `demo/pokemon.jsonl` 加载（资料来源：[README.md:33-35]()），通过 `key` 字段抽取描述文本，经嵌入后保存为 `pokemon_hyperdb.pickle.gz`（资料来源：[README.md:50-52]()），再以 `query()` 进行语义检索（资料来源：[README.md:61]()）。

## 核心组件

### HyperDB 类

`HyperDB` 是面向用户的统一入口，位于 `hyperdb/__init__.py`（资料来源：[hyperdb/__init__.py]()）。其公开方法基于 README 中演示的接口推断包括：

| 方法 | 功能 | 引用 |
|------|------|------|
| `__init__(documents, key=...)` | 使用指定字段抽取文本并构建索引 | [README.md:38-39]() |
| `save(path)` | 将实例序列化到 gzip 压缩 pickle | [README.md:50-52]() |
| `load(path)` | 从磁盘恢复 HyperDB 实例 | [README.md:55-57]() |
| `query(text, top_k=N)` | 返回与输入最相关的 Top-K 文档 | [README.md:61]() |

README 中的检索结果示例显示，`query()` 输出既包含文档文本，也保留了诸如 `Name`、`Pokedex ID`、`Type` 等原始元数据（资料来源：[README.md:64-80]()），这印证了 README 中"advanced features such as `_ids_` and `_metadata_`"的能力描述（资料来源：[README.md:11-12]()）。

### 依赖与构建

`setup.py` 负责将 `hyperdb-python` 打包并发布至 PyPI（资料来源：[setup.py]()）；`requirements.txt` 定义了运行期依赖（如 numpy 等数值计算库，资料来源：[requirements.txt]()）。C++ 计算后端的 MKL BLAS 绑定通常以原生扩展的形式随 wheel 分发，因此普通用户无需另行编译即可享受硬件加速（资料来源：[README.md:9-10]()）。

### 数据格式

`demo/pokemon.jsonl` 提供了演示用数据集，采用 JSON Lines 格式，每行一条 Pokémon 文档（资料来源：[demo/pokemon.jsonl]()）。注意 README 示例中可见明显的数据残留：起始部分 `db` 实例被重复打印了两次（资料来源：[README.md:38-46]()），这表明文档撰写时存在复制粘贴冗余，使用时应以第二次出现的构造语句为准。

## 社区讨论与路线图关注点

README 与社区讨论共同勾勒出几个值得关注的演进方向：

- **品牌命名建议（#11）**：社区建议将项目更名为 "HyperBS"（Hyper Better Search），以更好反映其面向 Agent 的搜索定位（资料来源：[README.md:5]() 与社区议题 #11）。
- **嵌入模型扩展（#1）**：用户希望加入对 LLAMA 等非归一化 embedding 的支持，从而同时利用方向与幅值信息（社区议题 #1）。当前 README 主要演示 OpenAI 风格的嵌入范式，归一化假设隐含在检索公式中（资料来源：[README.md:38-80]()）。
- **企业级能力（#13）**：社区询问云部署、访问控制、数据合规等特性（社区议题 #13）。这些需求尚未出现在 README 的功能列表中（资料来源：[README.md:7-12]()），可作为未来路线图的参考。
- **Kubernetes 部署（#2）**：有讨论希望增加 K8 部署支持以便接入云服务（社区议题 #2）。当前实现面向本地单进程场景（资料来源：[README.md:50-57]()），暂未涉及容器编排相关内容。
- **最新版本 v0.1.2**：首个正式标签版本，引入了由贡献者 @parasj 改进的 save format（社区上下文），呼应 README 中 `save()/load()` 的 `.pickle.gz` 形态（资料来源：[README.md:50-57]()）。

## 常见使用注意事项

基于 README 示例可直接归纳出的注意事项：

1. **字段路径语法**：构造时通过 `key="info.description"` 抽取嵌套字段，说明支持点号路径访问（资料来源：[README.md:38-39]()）。
2. **Top-K 参数**：`query()` 必须显式提供 `top_k`；README 演示中取值为 5（资料来源：[README.md:61]()）。
3. **可选依赖**：`sentence-transformers` 仅在使用 Hugging Face 本地模型时需要，OpenAI 风格嵌入可独立运行（资料来源：[README.md:22-24]()）。
4. **持久化格式**：当前唯一展示的 save/load 介质为 `.pickle.gz`，即 gzip 压缩的 pickle（资料来源：[README.md:50-57]()）；v0.1.2 对该格式进行了改进（社区上下文）。

## See Also

- 检索与查询接口使用：参见仓库内 `HyperDB` 类的公开方法定义（[hyperdb/__init__.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/__init__.py)）
- 数据集示例与字段约定：参见 [demo/pokemon.jsonl](https://github.com/jdagdelen/hyperDB/blob/main/demo/pokemon.jsonl)
- 安装与构建元信息：参见 [setup.py](https://github.com/jdagdelen/hyperDB/blob/main/setup.py) 与 [requirements.txt](https://github.com/jdagdelen/hyperDB/blob/main/requirements.txt)
- 项目宣传与基准截图：参见 [README.md](https://github.com/jdagdelen/hyperDB/blob/main/README.md)

---

<a id='page-2'></a>

## Core HyperDB Class and Vector Math

### 相关页面

相关主题：[Project Overview and Architecture](#page-1), [Usage, Embedding Models, and Data Flow](#page-3)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [hyperdb/hyperdb.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/hyperdb.py)
- [hyperdb/galaxy_brain_math_shit.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/galaxy_brain_math_shit.py)
- [hyperdb/__init__.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/__init__.py)
- [README.md](https://github.com/jdagdelen/hyperDB/blob/main/README.md)
- [demo/pokemon.jsonl](https://github.com/jdagdelen/hyperDB/blob/main/demo/pokemon.jsonl)
- [pyproject.toml](https://github.com/jdagdelen/hyperDB/blob/main/pyproject.toml)
</details>

# Core HyperDB Class and Vector Math

## 概述

HyperDB 是一个面向 LLM Agent 设计的本地向量数据库核心，其设计目标是在保持极简接口的同时，提供基于硬件加速的相似度检索能力。整个包的核心由 `HyperDB` 类承担，它负责文档装载、向量嵌入、索引保存与最近邻查询；所有底层的线性代数运算被隔离在独立的 `galaxy_brain_math_shit` 模块中，以追求与 MKL BLAS 后端的高效衔接。资料来源：[README.md:1-21]()

`HyperDB` 的接口被刻意设计为与所有主流大语言模型 Agent 兼容，调用形式简单到只需传入一个文档列表和一个指向文档正文的键路径即可完成建库。资料来源：[README.md:9-15]()

## HyperDB 类的构造与初始化

`HyperDB` 类的初始化需要两个核心参数：待索引的 `documents`（可迭代的字典列表）以及用于提取正文的 `key`（键路径）。该键路径允许使用点号语法深入嵌套字段，例如 `"info.description"`，这意味着 HyperDB 不要求文档扁平化，原生支持嵌套 JSON 结构。资料来源：[README.md:39-46]()

| 参数 | 类型 | 作用 |
| --- | --- | --- |
| `documents` | `list[dict]` | 待索引的原始文档集合 |
| `key` | `str` | 用于提取正文的嵌套键路径 |
| `embedding_function` | 可选 callable | 用于将文本转换为向量的函数 |

构造完成后，`HyperDB` 会在内部把每篇文档按 `key` 抽取的正文依次送入嵌入函数，得到一组定长向量并存入矩阵化的数据结构。这种"构造即建库"的模式避免了外部显式调用 `fit()` 的繁琐步骤。资料来源：[hyperdb/hyperdb.py]()

```python
from hyperdb import HyperDB

db = HyperDB(documents, key="info.description")
```

## 向量数学与相似度计算

所有数值计算都被委托给 `galaxy_brain_math_shit` 模块，其命名虽带有戏谑意味，但实际承担了最关键的余弦相似度计算、向量归一化以及批量矩阵运算。该模块与 MKL BLAS 衔接后，可在 CPU 上获得近似 GPU 的吞吐能力。资料来源：[hyperdb/galaxy_brain_math_shit.py]()

> 社区讨论中提及 LLaMA 等模型输出的 embedding 并未归一化到单位长度，这意味着用户既能表达方向也能表达幅度；HyperDB 的向量数学层需要处理这种未归一化情况。资料来源：[Issue #1 "🦙 LLAMA embeddings"](https://github.com/jdagdelen/hyperDB/issues/1)

下图展示了从原始文档到最近邻结果的端到端数据流：

```mermaid
flowchart LR
    A[documents list] --> B[key 字段抽取]
    B --> C[embedding_function]
    C --> D[向量矩阵]
    D --> E[galaxy_brain_math_shit 余弦相似度]
    Q[query 文本] --> C
    C --> QV[查询向量]
    QV --> E
    E --> R[top_k 最近邻结果]
```

## 查询、持久化与故障模式

`query()` 方法接收一段文本与 `top_k`，返回按相似度排序的若干文档。该方法在内部把查询文本也走一遍相同的嵌入流程，再与已索引向量做批量相似度比较。资料来源：[README.md:55-61]()

`save()` 与 `load()` 方法负责将整个 `HyperDB` 实例（含原始文档与已计算向量）序列化到磁盘。从 v0.1.2 发布说明可知，序列化格式已由社区贡献者 `@parasj` 改进，从而支持更高效的压缩存储。资料来源：[README.md:48-53]() 与 [Release v0.1.2](https://github.com/jdagdelen/hyperDB/releases)

典型失败模式包括：

- **键路径错误**：当 `key` 在某篇文档中不存在时，抽取会抛出 `KeyError`，应在调用前对数据做校验。
- **embedding 维度不一致**：若自定义嵌入函数对不同文档返回不同长度的向量，后续相似度计算会失败。
- **未归一化向量**：与社区 #1 议题相关，使用 LLaMA 类未归一化 embedding 时，余弦相似度结果会同时受方向与幅度影响，需要在文档中明确说明假设。
- **K8s 部署限制**：社区 #2 议题反映出当前包并未提供 Kubernetes 部署模板，CLI 入口缺失会限制云端批处理场景。资料来源：[Issue #2 "K8 Support"](https://github.com/jdagdelen/hyperDB/issues/2)

## See Also

- [Installation & Optional Dependencies](../README.md)
- [LLAMA Embeddings 兼容性讨论](https://github.com/jdagdelen/hyperDB/issues/1)
- [Kubernetes 部署支持请求](https://github.com/jdagdelen/hyperDB/issues/2)

---

<a id='page-3'></a>

## Usage, Embedding Models, and Data Flow

### 相关页面

相关主题：[Core HyperDB Class and Vector Math](#page-2), [Persistence, Deployment, and Extensibility](#page-4)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [README.md](https://github.com/jdagdelen/hyperDB/blob/main/README.md)
- [hyperdb/__init__.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/__init__.py)
- [demo/demo.py](https://github.com/jdagdelen/hyperDB/blob/main/demo/demo.py)
- [demo/pokemon.jsonl](https://github.com/jdagdelen/hyperDB/blob/main/demo/pokemon.jsonl)
- [requirements.txt](https://github.com/jdagdelen/hyperDB/blob/main/requirements.txt)
</details>

# 用法、嵌入模型与数据流

## 概览

HyperDB 是一个面向 LLM 代理场景的本地向量数据库，以"高速、简单、可持久化"为核心卖点。本页围绕三个主题展开：库的基础使用范式、可选的嵌入模型接入方式、以及文档从输入到检索的完整数据流。所有示例与说明均基于仓库自带的 `demo/` 目录与 [README.md](https://github.com/jdagdelen/hyperDB/blob/main/README.md) 公开内容。资料来源：[README.md:1-15]()

## 基本使用模式

库的入口是 `HyperDB` 类（定义于 [hyperdb/__init__.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/__init__.py)），构造时需要传入文档列表以及用于生成嵌入的字段键 `key`。`demo/demo.py` 演示了读取 `demo/pokemon.jsonl` 中的 151 条宝可梦条目，并以 `info.description` 作为嵌入键。资料来源：[README.md:42-51]()

```python
from hyperdb import HyperDB
db = HyperDB(documents, key="info.description")
```

构造完成后，实例即可用于实时检索，也支持通过 `save()` / `load()` 进行持久化（采用 `pickle.gz` 压缩格式）。检索入口为 `query()` 方法，通过 `top_k` 控制返回的最近邻数量：

```python
results = db.query("Likes to sleep.", top_k=5)
```

返回结果保留了原始文档字段（如 `Name`、`Pokedex ID`、`Description` 等），便于直接喂回下游 LLM 代理使用。资料来源：[README.md:53-71]()

## 嵌入模型支持

HyperDB 默认面向 OpenAI 嵌入接口设计。社区曾就 LLAMA 等开源模型集成进行讨论（参见 Issue #1 "🦙 LLAMA embeddings"）：由于 LLAMA 向量通常未归一化到单位长度，可同时表达方向与幅度，与 OpenAI 行为存在差异，若直接接入默认管线需额外处理（例如显式归一化）。资料来源：[README.md:5-15]()

若希望完全离线运行，可安装可选依赖 `sentence-transformers` 以接入 Hugging Face 的本地模型：

```bash
pip install hyperdb-python
pip install sentence-transformers
```

具体依赖列表可参考 [requirements.txt](https://github.com/jdagdelen/hyperDB/blob/main/requirements.txt)。在切换嵌入模型时必须保证维度一致，否则旧向量库将无法被新模型复用。资料来源：[README.md:30-38]()

## 数据流与持久化

下图展示了从原始 JSONL 到查询结果的端到端流程：

```mermaid
flowchart LR
    A[JSONL 文档] --> B[HyperDB 构造]
    B --> C[key 字段抽取]
    C --> D[嵌入模型<br/>OpenAI / HF]
    D --> E[向量存储<br/>C++ + MKL BLAS]
    E --> F[query 文本]
    F --> G[查询嵌入]
    G --> H[相似度计算]
    H --> I[top_k 文档]
```

向量相似度的核心运算由 C++ 后端结合 Intel MKL BLAS 加速，因此索引一旦构建，重复查询的开销极低。`save()` 会将向量与元数据一并写入 `pickle.gz`；自 v0.1.2 起采用了由 @parasj 改进的保存格式，提升了向后兼容性与跨版本可读性。资料来源：[README.md:5-9]()、[README.md:53-63]()

## 常见注意事项

- **字段缺失**：`key` 指定的字段若在部分文档中缺失，需自行预处理，否则嵌入阶段会抛错。
- **维度一致性**：切换嵌入模型前后的维度必须保持一致，否则 `load()` 旧向量库会失败。
- **LLM 代理兼容性**：库的设计目标是"兼容所有 LLM 代理"，因此 `query()` 的返回结构应保持稳定；自定义后处理时需注意这一点。
- **LLAMA 等未归一化向量**：接入非 OpenAI 模型时，需评估是否对查询与文档向量同时做 L2 归一化，以维持余弦相似度语义。

## 另请参阅

- 项目主页与 Logo：[README.md](https://github.com/jdagdelen/hyperDB/blob/main/README.md)
- 核心类定义：[hyperdb/__init__.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/__init__.py)
- 演示脚本：[demo/demo.py](https://github.com/jdagdelen/hyperDB/blob/main/demo/demo.py)
- 示例数据：[demo/pokemon.jsonl](https://github.com/jdagdelen/hyperDB/blob/main/demo/pokemon.jsonl)
- 依赖清单：[requirements.txt](https://github.com/jdagdelen/hyperDB/blob/main/requirements.txt)

---

<a id='page-4'></a>

## Persistence, Deployment, and Extensibility

### 相关页面

相关主题：[Core HyperDB Class and Vector Math](#page-2), [Usage, Embedding Models, and Data Flow](#page-3)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [README.md](https://github.com/jdagdelen/hyperDB/blob/main/README.md)
- [setup.py](https://github.com/jdagdelen/hyperDB/blob/main/setup.py)
- [requirements.txt](https://github.com/jdagdelen/hyperDB/blob/main/requirements.txt)
- [hyperdb/hyperdb.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/hyperdb.py)
- [demo/demo.py](https://github.com/jdagdelen/hyperDB/blob/main/demo/demo.py)
</details>

# Persistence, Deployment, and Extensibility

## 概述

hyperDB 自定位为"超高速本地向量数据库",面向 LLM Agent 用例。其持久化、部署与扩展能力均围绕"本地优先、Python 包分发、可插拔嵌入后端"三条主线展开。本页基于仓库当前主分支内容梳理这三方面能力,并对照社区讨论指出已知的局限与尚未实现的功能。

资料来源：[README.md:1-10]()

## 持久化机制

hyperDB 通过 `HyperDB.save()` 与 `HyperDB.load()` 方法提供开箱即用的本地持久化能力,采用 **gzip 压缩的 pickle** 作为单一归档格式。

### 接口与文件扩展名

```python
# 保存实例
db.save("demo/pokemon_hyperdb.pickle.gz")

# 从文件恢复
db.load("demo/pokemon_hyperdb.pickle.gz")
```

读取示例数据后,直接对实例调用 `save()` 即可生成 `.pickle.gz` 文件;后续进程可通过 `load()` 路径将同一索引还原到内存中,无需重新计算向量。文件后缀明确使用 `.pickle.gz`,意味着底层同时使用 Python `pickle` 与 `gzip` 双层封装。

资料来源：[README.md:46-62]()

### 与版本演进的关联

最新发布版本 **v0.1.2** 的发布说明明确指出"Incorporates @parasj's improved save format",即首次标签化发布引入了改进后的保存格式。这意味着早期用户在跨版本加载索引时需要留意文件格式兼容性,旧版本生成的 `.pickle.gz` 在 v0.1.2 及之后可能需要重新构建。

资料来源：[社区上下文:Latest Release v0.1.2]()

### 持久化数据流

```mermaid
flowchart LR
    A[documents 列表] --> B[HyperDB 构造]
    B --> C[内存中向量化]
    C --> D{HyperDB.save}
    D --> E[.pickle.gz 文件]
    E --> F{HyperDB.load}
    F --> G[重建 HyperDB 实例]
    G --> H[query top_k]
```

## 部署模式

### 包分发

hyperDB 通过 PyPI 以单一 Python 包分发,名称为 `hyperdb-python`。安装入口极其简洁:

```bash
pip install hyperdb-python
```

仓库根目录的 `setup.py` 与 `requirements.txt` 描述了运行期依赖,核心为数值计算栈(用于后端 C++ 向量存储与 MKL BLAS 硬件加速),并未引入任何服务端进程或数据库守护进程。

资料来源：[README.md:18-20]()
资料来源：[setup.py]()
资料来源：[requirements.txt]()

### 可选依赖

仅有当用户希望使用本地 Hugging Face 模型进行嵌入时,才需要额外安装 `sentence-transformers`:

```bash
pip install sentence-transformers
```

此设计将"使用云端 OpenAI 等托管嵌入"与"使用本地开源嵌入"两条路径解耦,基础包保持轻量。

资料来源：[README.md:24-26]()

### 已知部署局限

当前仓库不包含任何服务端组件、容器化定义或编排模板,因此以下部署形态尚未在代码层面提供:

| 形态 | 仓库现状 | 社区关注 |
| --- | --- | --- |
| 单机本地脚本 | 完全支持 | — |
| Docker 镜像 | 未提供 | — |
| Kubernetes (K8s) 部署 | 未实现 | Issue #2(4 条评论) |
| 云端托管 / 多租户 | 未实现 | Issue #13 |
| 访问控制与数据合规 | 未实现 | Issue #13 |

Issue #2 与 Issue #13 反映了用户对云原生与企业级能力的明确需求,但截至当前主分支,这些能力仍属于"路线图"层面,需要使用者自行在外层封装。

资料来源：[社区上下文:Issue #2, Issue #13]()

## 扩展性

### 自定义键与文档结构

构造 `HyperDB` 时通过 `key` 参数指定文档中需要被嵌入的字段路径,例如 `HyperDB(documents, key="info.description")` 会读取每条文档 `info.description` 字段作为待编码文本。这一约定使得 hyperDB 可直接索引任意带层级结构的 JSON 对象,而无需对原始数据做额外投影。

资料来源：[README.md:32-44]()

### 元数据与 ID

README 在"Advantages"小节明确指出:hyperDB 支持以 `_ids` 与 `_metadata` 形式附加额外信息。这意味着用户可在文档中携带唯一标识符与附加属性,并在 `query()` 返回结果中保留这些字段,从而支撑上层的检索增强生成(RAG)链路。

资料来源：[README.md:12-14]()

### 嵌入后端的可替换性

hyperDB 的核心抽象将"文档 → 向量"的编码步骤外置,允许调用方传入由 OpenAI、HuggingFace 或其他服务生成的嵌入结果。社区 Issue #1 提到 LLaMA 嵌入"未归一化到单位长度,可以同时表示方向与幅值",暗示 hyperDB 在设计上需要兼容非归一化向量——任何新的嵌入后端只要遵循相同的数据契约即可接入,无需修改核心存储代码。

资料来源：[社区上下文:Issue #1]()

### 扩展边界

需要注意的是,hyperDB 并不提供插件注册表、Hook 钩子或中间件接口;扩展主要通过"外部生成嵌入 + 传入文档"的隐式约定完成。若未来需要更细粒度的扩展点(如自定义距离度量、混合检索),则需直接修改 `hyperdb/hyperdb.py` 核心模块。

资料来源：[hyperdb/hyperdb.py]()

## 常见问题与故障模式

1. **跨版本加载失败**:从 v0.1.2 之前保存的 `.pickle.gz` 可能因改进后的保存格式而无法直接 `load()`,建议在升级后重建索引。
2. **本地嵌入缺失 `sentence-transformers`**:在未安装可选依赖的情况下切换到本地 HuggingFace 模型会抛出 `ImportError`,需要补装依赖包。
3. **在容器/K8s 中持久化**:由于无内置服务端,索引文件必须挂载到外部持久卷(PVC),否则 Pod 重启会丢失状态。

## See Also

- [README.md](https://github.com/jdagdelen/hyperDB/blob/main/README.md) — 项目主文档与使用示例
- [hyperdb/hyperdb.py](https://github.com/jdagdelen/hyperDB/blob/main/hyperdb/hyperdb.py) — 核心 `HyperDB` 类实现
- [demo/demo.py](https://github.com/jdagdelen/hyperDB/blob/main/demo/demo.py) — 端到端演示脚本
- Issue #2 *K8 Support* — 容器化部署诉求
- Issue #13 *Enterprise features* — 云部署、权限与合规诉求
- Issue #1 *LLAMA embeddings* — 非归一化嵌入兼容性诉求

---

<!-- evidence_pipeline_checked: true -->
<!-- evidence_injected: true -->

---

## Doramagic 踩坑日志

项目：jdagdelen/hyperDB

摘要：发现 10 个潜在踩坑项，其中 1 个为 high/blocking；最高优先级：安装坑 - 来源证据：openai.Embedding, but this is no longer supported in openai>=1.0.0。

## 1. 安装坑 · 来源证据：openai.Embedding, but this is no longer supported in openai>=1.0.0

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：openai.Embedding, but this is no longer supported in openai>=1.0.0
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 证据：community_evidence:github | https://github.com/jdagdelen/hyperDB/issues/36 | 来源讨论提到 python 相关条件，需在安装/试用前复核。

## 2. 能力坑 · 能力判断依赖假设

- 严重度：medium
- 证据强度：source_linked
- 发现：README/documentation is current enough for a first validation pass.
- 对用户的影响：假设不成立时，用户拿不到承诺的能力。
- 证据：capability.assumptions | https://github.com/jdagdelen/hyperDB | README/documentation is current enough for a first validation pass.

## 3. 运行坑 · 来源证据：self.vectors is initialized as a list

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个运行相关的待验证问题：self.vectors is initialized as a list
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 证据：community_evidence:github | https://github.com/jdagdelen/hyperDB/issues/30 | 来源类型 github_issue 暴露的待验证使用条件。

## 4. 运行坑 · 运行可能依赖外部服务

- 严重度：medium
- 证据强度：source_linked
- 发现：项目说明出现 external service/cloud/webhook/database 等运行依赖关键词。
- 对用户的影响：本地安装成功不等于能力可用，外部服务不可用会阻断体验。
- 证据：packet_text.keyword_scan | https://github.com/jdagdelen/hyperDB | matched external service / cloud / webhook / database keyword

## 5. 维护坑 · 维护活跃度未知

- 严重度：medium
- 证据强度：source_linked
- 发现：未记录 last_activity_observed。
- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。
- 证据：evidence.maintainer_signals | https://github.com/jdagdelen/hyperDB | last_activity_observed missing

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 证据：downstream_validation.risk_items | https://github.com/jdagdelen/hyperDB | no_demo; severity=medium

## 7. 安全/权限坑 · 存在评分风险

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 对用户的影响：风险会影响是否适合普通用户安装。
- 证据：risks.scoring_risks | https://github.com/jdagdelen/hyperDB | no_demo; severity=medium

## 8. 安全/权限坑 · 来源证据：OpenAI API Key Error?

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenAI API Key Error?
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 证据：community_evidence:github | https://github.com/jdagdelen/hyperDB/issues/35 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。

## 9. 维护坑 · issue/PR 响应质量未知

- 严重度：low
- 证据强度：source_linked
- 发现：issue_or_pr_quality=unknown。
- 对用户的影响：用户无法判断遇到问题后是否有人维护。
- 证据：evidence.maintainer_signals | https://github.com/jdagdelen/hyperDB | issue_or_pr_quality=unknown

## 10. 维护坑 · 发布节奏不明确

- 严重度：low
- 证据强度：source_linked
- 发现：release_recency=unknown。
- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。
- 证据：evidence.maintainer_signals | https://github.com/jdagdelen/hyperDB | release_recency=unknown

<!-- canonical_name: jdagdelen/hyperDB; human_manual_source: deepwiki_human_wiki -->
