← 返回首页

SIGNAL · POST

向量检索基础知识

约 2 分钟阅读 bajiu AI

向量检索

把一段文本/图片/音频 变成一个高维向量(embedding)。

检索时:把你的查询也变成向量,然后在库里找最相似的那些向量。

核心流程就 4 步:

  1. 切分(把长文切 chunk)
  2. 向量化(每个 chunk → embedding)
  3. 建索引(为了快,用 ANN:HNSW/IVF 等)
  4. 查询(query → embedding → topK → 返回原文 chunk)

相似度

常用三个 距离/相似度

  • 余弦相似度 cosine:只看方向,不看长度
  • 点积 dot:方向 + 长度都会影响(很多 embedding 会做归一化来等价 cosine)
  • L2 欧式距离:几何距离

如果向量都做了 L2 normalize,那么 dot ≈ cosine,用起来最方便也最快。

向量检索为啥需要“近似”(ANN)

如果有 100 万条向量、每条 1536 维,暴力算 topK 会很慢。

Top-K 是一种在生成式模型(如 GPT)中用于选择下一个词(token)的采样方法。它通过限制候选词的数量,优化生成文本的质量和多样性。在生成文本时,模型会为每个可能的词生成一个概率分布,表示每个词出现的可能性。Top-K 的核心思想是只考虑概率排名前 K 的词,其余的词被忽略。然后从这 K 个候选词中随机采样,选择一个作为下一个输出词。

所以向量库通常用 ANN(Approximate Nearest Neighbor)

  • HNSW:效果好、通用、建索引较慢但查询快(很多库默认)
  • IVF / IVF-PQ:大规模省内存,但需要训练和调参
  • Flat:不近似,最准但慢(小规模可用)

可以默认:HNSW 是最常见的起点

可控参数

向量检索调优基本围绕这些旋钮:

A. chunk 切分

B. topK

C. ANN 参数(以 HNSW 为例)

流程

文本切 chunk每个 chunk 做 embedding 向量存进向量库索引查询也做向量找最相似 topK返回对应 chunk