向量数据库

知识库简介

向量数据库保存“向量 + 稳定 ID + 可过滤 metadata”,并在权限、业务条件和资源预算下返回近邻。它负责的不是“理解文字”,而是数据与索引系统:

  • 空间 schema、维度、metric 与版本隔离;
  • point/record 的增删改查和幂等写入;
  • exact kNN 与 Approximate Nearest Neighbor(ANN)索引;
  • tenant、ACL、状态、时间等过滤;
  • 分片、副本、一致性、扩缩容;
  • 快照、备份、恢复、迁移与运行监控。

向量库不能修复错误 Chunking、错误 query/document 角色或不适合任务的 Embedding;近邻也不自动成为可引用证据。完整检索还需要查询改写、关键词/混合召回、Reranking、上下文组织与评测。

产品事实边界

Collection、filter、HNSW/IVF 参数、写一致性、快照范围和默认值随产品/版本而变。本库用 pgvector、Qdrant、Faiss 和 PostgreSQL 作为可核验案例,但不会把任一产品行为推广成所有向量数据库的保证。

在总路线中的位置

Embedding定义向量空间契约,Chunking策略和 知识库构建提供 canonical points。本库负责存储、过滤和近邻查询。随后 语义搜索组合 query 编码与多路召回,Reranking精排候选,RAG构造有引用的回答。

学习目标

完成本库后,你应能:

  • 设计包含 space contract、point、vector、payload、source revision、ACL 与 hash 的 schema;
  • 区分 exact kNN、ANN recall 与业务 Recall@k;
  • 解释 HNSW、IVF、量化的核心直觉和质量—延迟—内存—构建权衡;
  • 让 tenant/ACL/status/filter 在候选评分前 fail-closed 生效;
  • 实现稳定 ID、显式 source CAS、幂等 upsert、delete-before-create fence、tombstone 与完整性对账;
  • 明确分片、副本、读写确认和并发更新可能产生的旧读/冲突;
  • 为快照定义 RPO/RTO,并通过隔离恢复演练证明可用;
  • 用真实语料、查询、过滤分布和写入混合做可复现 bake-off;
  • 识别 library、数据库扩展、专用/托管向量库的责任差异;
  • 为模型或产品迁移设计双空间/双读、影子比较、切换和回滚。

前置知识

  • 向量基础:点积、余弦与欧氏距离;
  • Embedding:空间契约、维度、metric、归一化和模型迁移;
  • JSON:严格结构与类型;
  • API:重试、幂等、限流与错误处理。

不要求先会分布式数据库;第 5~6 课会从“为什么可能读到旧值”和“备份为何必须恢复验证”讲起。

核心术语

术语初学者解释关键边界
point / record一条 ID、向量和 payload 的记录必须属于一个明确 embedding space
collection / index / table产品中的逻辑容器名称不同,隔离/事务/备份语义也不同
payload / metadatatenant、ACL、source、status 等标量数据用于过滤和审计,不是随意 JSON 垃圾桶
exact kNN与所有候选逐一计算距离小规模质量基线
ANN近似找邻居以降低查询成本可能漏 exact 邻居,需测 ANN recall
scalar/payload index为过滤字段建立的索引增加写入/存储,按查询选择
shardcollection 的不相交数据分片影响路由、fan-out、扩缩容
replicashard 的副本提高可用性/读能力,也引入一致性权衡
tombstone表示当前删除意图的逻辑记录未索引 ID 也可能需要 fence;当前 tombstone 不等于永久审计历史
snapshot / backup某范围的可恢复状态副本必须说明范围、时间点、别名/配置是否包含

推荐学习顺序

顺序课程学习产出
1边界与数据模型一份可过滤、可迁移、可审计的 point/collection schema
2距离、精确检索与 ANN 索引Exact ground truth 与 ANN 参数实验
3过滤与多租户身份派生的 tenant/ACL filter 与越权测试
4写入、更新、删除与版本Source CAS、幂等 upsert、tombstone fence、发布切换和删除传播方案
5一致性、分片与副本读写语义、分片键与故障测试
6备份、恢复与迁移RPO/RTO、快照清单与隔离恢复演练
7选型与基准评测需求矩阵、可复现 bake-off 与 ADR
8项目:玩具向量存储单进程 JSON 存储的严格 CRUD、source CAS、删除意图、stale-read fail-closed 和测试

前四课解决“数据正确且安全”,第 5~7 课解决“规模、故障与决策”,最后用项目将边界落到代码。

动手实践入口

  • toy_vector_store.py:严格空间契约、持久化、source CAS、delete-before-create fence、显式 resurrection、stale-read 检查、ACL/tenant filter 与 exact search;
  • test_toy_vector_store.py:41 项数学、输入、生命周期、安全、冲突、持久化 fence、资源边界、多实例 stale-read 和 CLI 测试。

项目只用 Python 标准库。在 vault 根目录把教学数据库放到系统临时目录:

$env:PYTHONDONTWRITEBYTECODE = '1'  # 禁止解释器在课程目录写入 __pycache__。
$db = Join-Path $env:TEMP ("toy-vector-store-" + [guid]::NewGuid().ToString("N") + ".json")  # 在系统临时目录生成唯一 JSON 数据库路径。
python -B -W error '.\Knowledge\AI Agent Engineer\docs\向量数据库\examples\toy_vector_store.py' --db $db demo  # 运行玩具库的创建、更新、检索和删除演示。
Remove-Item -LiteralPath $db -Force  # 演示成功后删除已明确创建的临时数据库文件。

项目不是生产数据库:没有多进程锁、完整事务、ANN、认证、复制、永久 lifecycle/audit ledger 或生产灾备。它会在公开读取/no-op 前验证文件 revision 并对 stale 实例 fail-closed,但检查与实际读写之间仍有 TOCTOU,不能由此推导出数据库级一致性。

掌握标准

  • 每个 collection/index 有完整 space contract,不混合不兼容向量。
  • Point ID、source revision、content hash、tenant、ACL、status 和删除状态可追踪。
  • 我能区分 exact、ANN recall 与业务相关性。
  • ANN benchmark 同时报告质量、尾延迟、吞吐、内存、构建和更新成本。
  • Tenant/ACL 由可信身份生成并在评分前过滤,空权限 fail-closed。
  • 完全相同的 upsert 可幂等重放;非同值更新用 expected-current source revision 做 CAS,同 revision 异内容进入冲突。
  • Delete 即使早于 create 也落 source/event fence;tombstone 默认阻止复活,resurrection 需要显式匹配 fence 与真实授权。
  • 同一 point 的 source identity 跨生命周期不可复用;永久 generation/history ledger 承担 ABA 与审计历史,而非当前 tombstone。
  • 多实例缓存状态在 search、summary 与 no-op 前检查 revision;发现变化 fail-closed,不返回旧 ACL/删除状态。
  • 删除传播到向量、稀疏索引、缓存、旧空间和备份政策。
  • 分片、副本与一致性选择对应明确业务读写语义。
  • 快照在隔离环境完成恢复、权限和 gold-query 验证。
  • 选型来自目标数据/SLO/团队与退出条件,不来自厂商单一榜单。

与其他知识库的关系

知识库关系
Chunking策略生成 point 对应的来源 spans 与 content hash
Embedding定义 dimension、metric、normalization、model/revision
知识库构建提供 canonical revision、outbox、发布指针与删除事件
语义搜索组织 query、过滤、向量/关键词召回和离线 relevance
Reranking消费第一阶段候选,不替代数据库召回
RAG将授权证据打包、引用并生成回答
运行监控监测延迟、错误、容量、复制、索引与恢复
AI安全覆盖越权、数据投毒、日志与备份风险

主要参考资料

来源获取日期:2026-07-22。动态产品配置、默认值与保证须按锁定版本复查。