向量数据库
知识库简介
向量数据库保存“向量 + 稳定 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、数据库扩展、专用/托管向量库的责任差异;
- 为模型或产品迁移设计双空间/双读、影子比较、切换和回滚。
前置知识
不要求先会分布式数据库;第 5~6 课会从“为什么可能读到旧值”和“备份为何必须恢复验证”讲起。
核心术语
| 术语 | 初学者解释 | 关键边界 |
|---|---|---|
| point / record | 一条 ID、向量和 payload 的记录 | 必须属于一个明确 embedding space |
| collection / index / table | 产品中的逻辑容器 | 名称不同,隔离/事务/备份语义也不同 |
| payload / metadata | tenant、ACL、source、status 等标量数据 | 用于过滤和审计,不是随意 JSON 垃圾桶 |
| exact kNN | 与所有候选逐一计算距离 | 小规模质量基线 |
| ANN | 近似找邻居以降低查询成本 | 可能漏 exact 邻居,需测 ANN recall |
| scalar/payload index | 为过滤字段建立的索引 | 增加写入/存储,按查询选择 |
| shard | collection 的不相交数据分片 | 影响路由、fan-out、扩缩容 |
| replica | shard 的副本 | 提高可用性/读能力,也引入一致性权衡 |
| 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安全 | 覆盖越权、数据投毒、日志与备份风险 |
主要参考资料
- pgvector official repository
- Faiss official repository
- Qdrant Documentation
- Qdrant: Points
- Qdrant: Filtering
- Qdrant: Distributed deployment
- Qdrant: Snapshots
- PostgreSQL: Transactions
- PostgreSQL: Backup and Restore
- Malkov & Yashunin, HNSW
- Johnson, Douze & Jégou, Billion-scale similarity search with GPUs
来源获取日期:2026-07-22。动态产品配置、默认值与保证须按锁定版本复查。