1. 向量检索基础:从概念到应用
各位同学好,我是这门课的主讲。今天咱们聊聊向量检索的根基——那些你绕不开的基础概念。说实话,我见过太多人一上来就调 Milvus、搞 HNSW,结果出了问题连向量怎么算的都不清楚。嗯,这不行。
这一章,我会带你从零搭建向量检索的知识骨架。你不需要数学多好,但得理解「为什么」。
1.1 向量化:把世界变成数字
什么叫向量化?说白了,就是把一段文本、一张图片、一首歌,变成一串固定长度的数字。比如「苹果」这个词,在某个模型里可能变成 [0.12, -0.34, 0.56, ...] 这样 768 个浮点数。
为什么要这么做?因为计算机不懂语义,只懂数字。向量化就是给计算机搭了一座桥——让机器能「理解」相似性。
核心要点:向量化不是简单的哈希编码,而是通过深度学习模型,把语义信息压缩到低维稠密向量中。两个向量在空间里离得近,就代表它们语义相似。
我在项目中遇到过最典型的翻车案例:有人直接用 one-hot 编码做向量检索,结果「苹果手机」和「苹果水果」的向量距离几乎一样。这显然不对。原因很简单——one-hot 没有语义信息。
1.2 Embedding 模型:谁在背后干活?
向量化靠的是 Embedding 模型。目前主流的有这么几类:
| 模型类型 | 代表模型 | 输出维度 | 适用场景 |
|---|---|---|---|
| 文本 Embedding | text2vec-base, BGE, ada-002 | 768 / 1024 / 1536 | 文本搜索、RAG、问答 |
| 图像 Embedding | CLIP, ResNet-50 | 512 / 2048 | 以图搜图、多模态检索 |
| 多模态 Embedding | CLIP, ImageBind | 512 / 1024 | 跨模态检索(文本搜图等) |
选模型时我建议你注意两点:
- 维度不是越高越好。高维度意味着更细的语义区分,但检索计算量也更大。768 维在大部分场景下够用了。
- 领域适配很重要。通用模型在专业领域(比如医疗、法律)效果往往打折扣。我曾经在金融场景里用通用模型做相似度,结果「涨停」和「跌停」的向量距离比「涨停」和「红色」还远——这显然不合理。
我的习惯:拿到一个新场景,先用 3-5 个典型样本跑一遍 Embedding,肉眼检查一下相似度排序。这一步花不了 10 分钟,但能避免后面踩大坑。
1.3 向量相似度计算:三种核心度量
向量有了,怎么比谁跟谁更「像」?三种最常用的度量方式:
余弦相似度(Cosine Similarity)
公式:cos(A, B) = (A·B) / (||A|| × ||B||)
取值范围:[-1, 1],越大越相似。
它只关心方向,不关心长度。你想想看,在文本场景里,「苹果很好吃」和「苹果非常好吃」的向量长度可能不同,但方向应该接近——余弦相似度正好处理这种情况。
欧氏距离(Euclidean Distance)
公式:d(A, B) = sqrt(Σ(Ai - Bi)²)
取值范围:[0, +∞),越小越相似。
它同时考虑方向和长度。在图像检索里,我更喜欢用欧氏距离——因为图片的亮度、对比度差异往往体现在向量长度上,不能忽略。
内积(Dot Product)
公式:A·B = Σ(Ai × Bi)
取值范围:(-∞, +∞),越大越相似。
内积在推荐系统里很常见。为什么?因为很多推荐模型输出的向量已经做了归一化,内积和余弦相似度等价,但计算更快——少做一次除法。
| 度量方式 | 是否考虑长度 | 计算开销 | 推荐场景 |
|---|---|---|---|
| 余弦相似度 | 否 | 中(需归一化) | 文本搜索、RAG |
| 欧氏距离 | 是 | 中 | 图像检索、异常检测 |
| 内积 | 是 | 低 | 推荐系统、已归一化向量 |
避坑指南:我曾经在一个项目里直接用内积算未归一化的向量相似度,结果召回率惨不忍睹。后来才发现,向量长度差异把结果完全带偏了。记住:用内积前,先确认向量是否已经 L2 归一化。
1.4 向量检索的应用场景
聊完基础,咱们看看向量检索到底用在哪。我挑三个最常见的场景:
推荐系统
用户过去点击了 10 篇文章,把这 10 篇文章的向量取平均,得到一个「用户兴趣向量」。然后去向量库里找最接近的 50 篇文章推荐给用户。整个过程就是一次向量检索。
我在做短视频推荐时,用户兴趣向量每 5 分钟更新一次,向量库里有 500 万条视频。每次检索要求 10 毫秒内返回——这就是后面章节要讲的任务调度要解决的问题。
搜索引擎
传统搜索靠关键词匹配,你搜「苹果手机」它不会给你「iPhone」。向量搜索不一样——它理解语义。你把查询文本向量化,去库里找语义相近的文档。
我见过一个企业知识库,用向量搜索后,员工找文档的时间从平均 3 分钟降到了 15 秒。效果立竿见影。
RAG(检索增强生成)
这是目前最火的方向。大模型回答问题前,先去向量库里检索相关文档,然后把文档作为上下文喂给模型。这样模型就能回答「训练数据之外」的问题。
举个例子:你问「公司今年的报销政策是什么?」大模型本身不知道,但向量检索能从公司知识库里找到最新的报销文档,模型基于这个文档生成答案。
关键数据:在 RAG 场景里,检索的召回率直接决定回答质量。Top-5 召回率从 80% 提升到 95%,回答准确率能提升 20 个百分点以上。所以向量检索的精度和延迟,是 RAG 系统的生命线。
1.5 本章知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以把它当作一张「地图」——后面每讲一个技术点,都能在这张图上找到位置。
这张图把整个流程串起来了:原始数据经过 Embedding 模型变成向量,然后通过三种相似度度量之一计算距离,最终落地到推荐、搜索、RAG 等场景。而所有这些环节,在数据量大了之后,都需要任务调度来保证性能和稳定性——这就是咱们这门课后面要深入讲的内容。