AI 基础设施 · 接续词嵌入

搜「苹果手机」
为什么也会捞到 iPhone

传统数据库擅长精确匹配;向量数据库擅长按「意思相近」找邻居。
这篇带你由浅入深:它是什么、用在哪、主流库怎么选。

向下滑动
第一步 · 坐标直觉

先把「向量」想成地图上的点

1 一段话、一张图,都能变成坐标

模型可以把文本、图片等变成一串数字——叫向量(embedding)。你可以把它想成高维地图上的一个点:意思相近的内容,点会靠得更近。

「苹果手机」和「iPhone 充电器」可能离得很近;「苹果派」「香蕉牛奶」则在另一片区域——关键词会被字面的「苹果」骗到,坐标通常不会。

一段话 「苹果手机」 一张图 嵌入模型 embedding 向量 [0.82, 0.11, -0.35…] 一串数字 地图上的点 示意 2D

示意:内容 → 嵌入模型 → 向量数字 → 语义地图上的一个点(真实维度远高于 2)

维 1 维 2 食物簇 电子簇 苹果手机 iPhone 充电器 苹果派 香蕉牛奶 都有「苹果」二字,但坐标不在一块

降维示意:相近意思抱团;「苹果手机」靠近充电器,而不是「苹果派」

2 「近」≈「像」

比较两个向量远近,常用欧氏距离(直线距离)或余弦相似度(夹角像不像)。业务里两者都常见;关键是整库用同一种尺子,不要混用。

欧氏距离 · 直线有多长
距离 d A B d 越小 → 越近越像

看两点之间的直线长短

余弦相似度 · 夹角像不像
O θ A B θ 越小 → 方向越像

从原点看两向量的夹角(不太看长短)

距离小 / 相似度高 → 语义更像
向量数据库就是专门为「按这种远近找邻居」优化的仓库

3 必须用「同一套尺子」

查询句变成向量、文档变成向量,必须用同一个 embedding 模型,得到同样长度(维度)的数字串。换了模型或维度对不上,所谓「近」就失去意义——这是自学时最常踩的坑。

延伸阅读:向量从哪来?可先看 《词嵌入通俗指南》《KNN》 讲「找邻居后怎么投票做分类」;本篇讲「海量邻居怎么存、怎么快查」——一层算法直觉,一层工程仓库。
第二步 · 为何需要

传统数据库为什么「够呛」?

1 关键词检索:认字,不一定懂意思

关系型库、全文检索擅长:等于、包含、布尔条件。搜「苹果手机」时,它们很会找含这些字的行;但对「iPhone」这种同义说法,常常要靠同义词表或人工规则硬补。反过来,关键词还容易被字面的「苹果」带偏,把水果食谱也捞进来。

关键词检索

查询:「苹果手机」

命中:含「苹果」「手机」的文档
易漏:只写了「iPhone」的页面
易误伤:含「苹果」的食谱

向量检索

查询:同样的一句话 → 变成查询向量

命中:坐标附近的邻居
可含:iPhone、充电器、手机壳…
通常远离:苹果派、香蕉牛奶

2 一句话定义

向量数据库:专门存向量(常附带原文片段、标签等元数据),并提供高效的「找最近的 K 个」查询能力的系统。

也别神化:语义检索也会捞错——模型理解偏差、歧义词、近似索引「差不多就行」,都可能让不相关内容挤进 Top-K。它是强力工具,不是真理机器。

核心洞察

不是取代 MySQL,而是补上「按语义相似查找」这一环。很多系统两者一起用:精确字段走传统库,相似内容走向量库;需要时再做混合搜索(关键词命中 + 向量近邻一起打分)。

第三步 · 它做什么

入库与检索:一条清晰流水线

① 嵌入

文本/图片 → embedding 模型 → 向量

② 入库

存向量 + 原文/ID + 元数据

③ 查询

用户问题同样变成查询向量

④ Top-K

返回最相近的 K 条结果

1 存什么:向量 + 能给人看的东西

真实系统几乎总会带上:

长文通常不会整本塞成一个向量,而是先切成小段(chunk)再分别嵌入——段太长会糊成一团,段太碎又缺上下文,实践里要折中。

2 返回的是邻居,不是唯一答案

向量检索给出的是候选列表(Top-K)。后面常接重排序、业务规则,或交给大模型去「读完再答」——向量库负责把相关材料快速捞出来。

最小心智模型

:同模型、同维度的向量 + 原文/ID + 元数据。
:问题也用同一模型变成查询向量,找 Top-K 邻居(可加过滤)。
:规模大了靠近似近邻索引,而不是每次扫完全库。

第四步 · 应用场景

用在哪?四类高频场景

不强绑单一故事——下面四类都很常见,向量扮演的角色略有不同。

场景一

语义搜索

文档、客服知识库、站内搜:用户用口语提问,系统按意思找相关段落。

向量角色:把「问句」和「文档块」放进同一张语义地图。
场景二

推荐系统

「看了这个还看了那个」:物品或用户行为被编码成向量,近邻即候选。

向量角色:用距离表达兴趣相似度。
场景三

RAG / AI 问答

大模型外挂知识库:先检索相关片段,再让模型基于片段生成回答,减少胡编。

向量角色:给大模型提供「此刻该读的参考资料」。
场景四

多模态检索

以图搜图、以文搜图:图像与文本映射到共享或可对齐的向量空间。

向量角色:跨模态的「通用坐标」。
共同点:先有 embedding,再有「存 + 近邻查」。向量库解决的是后半段——规模一大,暴力扫描会扛不住。
第五步 · 怎么找得快

为何不全量比一遍?

1 暴力近邻:精确,但会变慢

数据量小(比如几万条)时,把查询向量和库里每一条都算一遍距离完全可行。到了百万、千万级,每次查询都全量扫描,延迟和算力都会爆炸。

近似近邻 ANN

不保证每次都是「绝对最近」,但用索引结构快速找到「足够近」的一批邻居。多数业务更在乎速度,以及「该找到的相关结果有没有漏掉」(常说的召回),而不是数学意义上的绝对精确。

城市路网比喻

找离你最近的咖啡馆,不必量遍全城每一家:可以先看片区、主干道、熟悉商圈。向量索引也在做类似的事——先缩小搜索范围,再精比。

2 你需要记住的程度

科普层面记住即可:向量库 = 存储 + 近似近邻索引 +(可选)过滤/混合检索。HNSW、IVF 等具体算法名,选型时再按文档深入;本篇不展开公式。

核心洞察

向量数据库的价值,不在于「会算距离」(那谁都会),而在于大规模时仍然查得快,还能把元数据过滤、混合搜索等工程能力打包好。

第六步 · 主流选型

Milvus、Qdrant、Weaviate、Chroma、LanceDB

没有万能第一名。下面是直觉地图,不是跑分评测;生态演进很快,落地前请用自己的数据试:相关结果找得全不全、查询快不快。

名词先分清:下面卡片上的「嵌入式 / 内嵌」指数据库跑在应用进程里、往往不想起独立服务——和上文的「词嵌入 / embedding」(把文字变成向量)不是一回事。别被「嵌入」两个字绕晕。
内嵌进程 · 原型

ChromaDB

对 Python 很友好,本机/笔记本最快上手。小规模 RAG 演示、教学实验的常见默认选项。

内嵌进程 · 本地存储

LanceDB

用列式文件格式存数据,常跑在进程内;适合本地或云端对象存储、多模态,以及「不想起独立数据库服务」的工作流。

独立服务 · 自建常选

Qdrant

Rust 实现;按标签/权限等附加信息过滤(常叫 payload)做得清楚。单机 Docker 起步,也能走向集群。很多团队的自建默认。

独立服务 · 检索流水线

Weaviate

混合搜索(关键词命中 + 向量近邻一起打分)、可插拔的向量化模块是亮点;适合把检索链路尽量收拢在库侧。

分布式 · 大规模

Milvus

面向大规模分布式与丰富索引选择;真到上亿级、且团队能承担运维复杂度时再重点考虑。

对比一览

怎么跑 体量直觉 上手印象 过滤 / 混合 更适合
ChromaDB 内嵌进程;也可单独起服务 万~十万级原型 Python 极好上手 够用的元数据过滤 快速验证、教学、小应用
LanceDB 内嵌;数据在磁盘/对象存储 本机到较大本地集 偏数据分析工作流 随场景增强 不想起服务、多模态本地管线
Qdrant 独立服务 / 云 百万~千万常见 接口清晰 强项:附加信息过滤 自建生产默认、过滤条件多
Weaviate 独立服务 / 云 百万~千万常见 模块丰富 强项:混合搜索 要关键词+向量一体化
Milvus 分布式组件较多 千万~亿级 企业/云原生场景多 分区等大规模手段 真大规模、有运维能力

三个决策点就够起步

1

原型 vs 生产服务

先跑通?优先内嵌进程的库(Chroma / LanceDB)。要多服务共享、独立扩缩?选 Qdrant / Weaviate / Milvus 这类独立服务

2

规模量级

万~十万:内嵌往往够用。千万以上:认真评估独立服务与运维成本;上亿级再重点看 Milvus 一类分布式方案。

3

强过滤 / 混合搜索?

查询常带权限、标签、租户条件,或要「关键词 + 向量」一起打分:更关注 Qdrant、Weaviate;超大且按分区裁剪,再看 Milvus。

提醒:还有 pgvector(Postgres 扩展)、各类托管云服务等未展开。已有 Postgres、数据量不大时,pgvector 往往是务实选项——选型永远结合现有栈。
第七步 · 动手试

互动:语义近邻地图

你可以试试:点选「苹果手机」,看邻居是充电器还是苹果派;拖动 K,感受邻居圈变大变小;再切换过滤,体会「向量 + 元数据」一起用。

示意说明:下面用精确比距离画出 Top-K,方便看懂「近邻」;真实向量库在数据量大时多用近似近邻索引(上一节的 ANN),不会每次扫完全库。坐标是教学用的二维投影,不是真实 embedding。
点画布上的某个点,设为查询向量。
查询点 Top-K 邻居 其他条目
总结

带走这三句话

存什么、查什么

同模型同维度的语义坐标 + 原文/ID + 元数据;查的是近邻 Top-K,不是唯一精确键。

用在哪

语义搜索、推荐、RAG、多模态——共性是「先嵌入,再近邻」;也会捞错,常和关键词/规则一起用。

怎么选库

先问:内嵌原型还是独立服务?多大规模?要不要强过滤/混合搜索?再用直觉地图缩小范围。

向量库 = 语义坐标仓库 + 快速找邻居
传统库擅长精确匹配;向量库擅长「意思像不像」。两者经常一起用。
相关阅读: 《词嵌入:语义地图》 · 《KNN 近邻算法》
返回首页