向量数据库 · 概念深潜 · 面向 AI Agent 工程师

向量数据库:把语义变成几何,再变成工程

传统数据库能精确匹配 WHERE name = 'x',却搜不出"意思相近"。向量数据库用一次坐标系的转换换来了这种能力——这份教程讲清楚它转换了什么、代价是什么、以及在生产里真正难的地方。

基于:pgvector 0.8 · Milvus 2.6 · Qdrant 1.15 · text-embedding-3  |  阅读时间:~半天(深潜) |  代码验证状态:概念教程,含可运行 SQL/Python 片段,标注「未本地验证」处除外

▸适合谁

这份教程假设你具备以下三项能力。缺任意一项,先补再读会更省力:

前置能力(具体到可验证)

  • 能用 SQL 写带索引的查询,理解 B-tree 索引为什么能把 O(N) 扫描降到 O(log N)——本教程反复对照"传统索引 vs 向量索引"。
  • 知道 LLM / embedding 模型是"输入文本、输出一串浮点数组"的黑盒——不需要懂 Transformer 内部,但要接受"模型把语义压成了向量"这件事。
  • 能读 Python 片段、看懂 numpy 风格的数组运算(点积、范数)——不需要会训练模型。

▸不适合谁

下面两类读者,他山之石更合适:

  • 想训练 / 微调 embedding 模型的人:这是模型侧课题,去看 Sentence Transformers 训练指南 与 MTEB 榜单方法论,本教程只把 embedding 当输入。
  • 只想跑通一个 RAG demo、不关心原理的人:直接用 LlamaIndex / LangChain 的 5 行 quickstart 即可,不必读完三角权衡与索引机制。本教程是为"要在面试里讲清楚、在生产里做决策"准备的。

▸读完之后你能做到什么

一个有五年经验的后端工程师,读完官方文档后通常仍答不上来的那句话,是这份教程的核心交付:向量检索里几乎所有工程决策——选哪种索引、调哪个参数、用 pgvector 还是专用库——都是同一个动作在不同维度上的投影:在 recall × 延迟 × 内存 三角里选一个点;而把 demo 变成生产系统的真正难点不在检索本身,在过滤与 hybrid。

具体地,你将能够:

  • 解释为什么精确最近邻在亿级数据上不可行,并说出维度灾难如何让 KD-tree 退化。
  • 对比 HNSW、IVF、PQ、DiskANN 四类索引,对给定的"数据量 / 延迟预算 / 内存预算"指出该选哪个、调哪个旋钮。
  • 诊断"召回率静默下降"和"过滤后结果变少"两类生产事故的根因,并给出修复路径。
  • 判断一个项目是否真的需要专用向量库,还是 pgvector / 现有搜索栈就够。
  • 说清截至 2026 年向量检索的前沿在哪——量化、late-interaction 多向量、存算分离——以及哪些旧做法已被取代。

一句话本质

  • 语义 → 几何:embedding 模型把"语义相似"编码成"向量在高维空间里距离近"。于是"搜索"从「字符串匹配」变成「求最近邻」。
  • 精确 → 三角权衡:精确最近邻是 O(N·d),亿级不可行。所有索引(HNSW / IVF / PQ / DiskANN)本质都是在 recall × 延迟 × 内存 三角里选点。工程师的工作不是追求精确,而是选点 + 调参 + 测召回。
现状速览 · 截至 2026-06

已沉淀的稳定内核:HNSW 是默认索引;hybrid 检索(稠密向量 + 稀疏/BM25 + RRF 融合 + rerank)已是生产标配;量化分层(scalar 4× / binary 32× 压缩 + 用原始向量 rescore 兜底召回)。照这套教没问题。

仍在快速变化(近 6–12 月):late-interaction 多向量检索(ColBERT → ColPali,Qdrant / Weaviate / Vespa 已原生支持);存算分离的 serverless 设计(turbopuffer 用 S3、pgvectorscale 的 StreamingDiskANN);更细粒度量化(Qdrant 1.15,2025-07 的 1.5-bit / 2-bit);GPU 建图(Milvus 2.6,2025-08,但查询端因成本退回 CPU);embedding 榜单换人(Gemini Embedding 001 / Voyage-3 / Qwen3-Embedding)。

已被取代,别再学旧法:text-embedding-ada-002 → text-embedding-3;裸 float32 全维存储 → halfvec / 量化;纯 IVFFlat → HNSW;dense-only 检索 → hybrid + rerank。

读之前 · 流畅感是假象

这份教程会刻意在某些地方放慢、让你先预测再看答案。若你读的时候冒出下面三句话,那是熟悉感在冒充掌握,不是学会了:

「我读得很顺」——顺,往往因为每个词都眼熟,不等于你能在空白页上重建它。
「我做题很快」——快,往往因为题型见过,换个场景就卡。
「我没卡壳」——没卡壳,往往意味着没触碰到真正的难点。

对策:每个 自测 和 想一想,先合上屏幕在脑子里(或纸上)答完,再展开对照。

▸概念地图

这张图是后面所有细节的挂载点。每读完一章,回到这里确认新学的概念挂在哪条边上。

文本 / 图像 embedding 模型 向量 (dense vector) 几何距离 ≈ 语义近 相似度度量 cosine · 内积 · L2 精确 KNN 不可 scale ANN 索引 HNSW · IVF · PQ · DiskANN 本质 recall × 延迟 × 内存 三角权衡 + 持久化 · CRUD · 过滤 · 分布式 向量数据库 落地 生产工程 过滤 · hybrid · 一致性 选型 选型决策 pgvector vs 专用库
图 0.1向量数据库的主干:一条从「文本」到「选型」的单向流。注意:朱红色的 ANN 索引 是全图重心——它右边伸出的「三角权衡」是理解一切的钥匙,而它下方 + 持久化/CRUD/过滤 那条边,正是"索引库"(FAISS)和"数据库"(Milvus 等)的分界线。

▸学习路径建议

顶部的面包屑是完整顺序。按你的目的,也可以走这三条捷径:

  • 只想建立心智模型(面试讲原理):01 概念 → 02 索引 → 05 自测。索引章是重心,自测章的辨析场景是面试高频题型。
  • 要做技术选型 / 评审:01 概念(跳过逐个度量细节)→ 03 生产 → 04 选型。直奔过滤、hybrid、一致性与产品对比。
  • 带读别人的 RAG 代码:01 概念 → 03 生产 的过滤与 hybrid 两节。看懂代码里 metric / ef_search / filter 各自在管什么。

▸目录

▸学完之后

这份教程把"向量数据库"这块讲透。沿着它往外,下一步可以补:

  • RAG 检索增强:向量库是 RAG 的存储底座,往上是 chunking 策略、query 改写、rerank 与上下文组装——给你的 schema 加上"检索结果如何喂给 LLM"。
  • embedding 模型选型与评测:MTEB 榜单怎么读、领域微调何时值得——给你的 schema 加上"向量从哪来、质量如何量化"。
  • Agentic retrieval:把检索嵌进 agent 的推理循环(CRAG / Self-RAG / HyDE)——给你的 schema 加上"检索不再是一次性,而是 agent 的一个可调用工具"。