一、什么是向量索引(Vector Index)

向量索引用于解决一个问题:

在大量向量中快速找到最相似的向量。

例如:

query vector → 找最相似的K个向量

应用场景:

  • 语义搜索(Semantic Search)

  • RAG(Retrieval Augmented Generation)

  • 推荐系统

  • 图像搜索

  • 人脸识别

  • 文本相似度

  • AI Agent 知识库

例如:

用户问题 → embedding → 向量
数据库 → 找最相似文档


二、向量相似度计算

向量索引的核心是 距离计算

常见距离:

1 欧氏距离(L2)

公式:

d(x,y) = √ Σ(xi - yi)^2

特点:

  • 最常见

  • FAISS默认

应用:

  • 图像

  • embedding


2 余弦相似度(Cosine Similarity)

公式:

cos(x,y) = (x·y) / (|x||y|)

特点:

  • 不受向量长度影响

  • NLP最常见

应用:

  • 语义搜索

  • RAG


3 内积(Inner Product)

x · y

特点:

  • 推荐系统常用

  • embedding ranking


三、为什么需要向量索引

假设:

1000万向量
每个向量 768维

如果 暴力搜索(Brute Force)

复杂度:

O(N)

查询一次需要:

1000万次距离计算

延迟会非常高。

因此需要:

ANN(Approximate Nearest Neighbor)

近似最近邻搜索。


四、向量索引的核心算法

最重要的知识点是 ANN算法

常见算法:

算法

特点

IVF

倒排索引

HNSW

小世界图

PQ

向量压缩

LSH

哈希

KD-tree

低维数据

Ball-tree

中维数据

目前主流:

HNSW
IVF
PQ


五、HNSW(最主流算法)

HNSW =

Hierarchical Navigable Small World

核心思想:

构建 多层图结构

结构:

Layer 3   o
Layer 2  o o
Layer 1 o o o
Layer 0 o o o o o

搜索过程:

从顶层开始
逐层下降
找到最接近节点

优点:

  • 查询非常快

  • 高召回率

  • 目前最主流

复杂度:

O(log N)

支持系统:

  • FAISS

  • Milvus

  • Weaviate

  • PGVector

  • Qdrant


六、IVF(倒排索引)

IVF =

Inverted File Index

思想:

聚类

例如:

1000万向量
→ 聚类成 1000 个中心

结构:

cluster1 → vectors
cluster2 → vectors
cluster3 → vectors

查询:

1 找最近cluster
2 只搜索该cluster

优点:

  • 搜索空间减少

缺点:

  • 可能错过最优解


七、PQ(Product Quantization)

PQ 是 向量压缩算法

例如:

768维向量

压缩成:

64 byte

方法:

向量拆分
→ 子空间量化
→ codebook

优势:

  • 节省内存

  • 加速计算

FAISS大量使用 PQ。


八、HNSW vs IVF

特性

HNSW

IVF

查询速度

很快

召回率

内存

插入

一般:

HNSW → 小规模高精度
IVF → 超大规模


九、向量数据库常见索引类型

数据库

索引

PGVector

HNSW / IVF

Milvus

HNSW / IVF / PQ

Qdrant

HNSW

Weaviate

HNSW

FAISS

全部


十、PostgreSQL向量索引

PGVector支持:

HNSW

创建索引:

CREATE INDEX ON items
USING hnsw (embedding vector_cosine_ops);

特点:

  • 高召回率

  • 查询快


IVF

创建索引:

CREATE INDEX ON items
USING ivfflat (embedding vector_l2_ops)
WITH (lists = 100);

参数:

lists = 聚类数量


十一、向量索引重要参数

HNSW参数

M

每个节点连接数

常见:

16
32

影响:

M越大 → 精度越高 → 内存越大


ef_search

查询时探索节点数

ef_search = 100

影响:

越大 → 精度越高 → 查询慢


ef_construction

建索引质量。


十二、向量索引的核心优化

1 向量归一化

很多系统会:

normalize vector

因为:

cosine = dot product

可以加速计算。


2 向量降维

例如:

768 → 256

常用:

PCA


3 向量压缩

PQ
OPQ
SQ


十三、向量索引典型架构

RAG系统:

用户问题
   ↓
embedding
   ↓
vector search
   ↓
topK 文档
   ↓
LLM

数据库:

PGVector
Milvus
Qdrant
Weaviate


十四、常见面试题

1 什么是ANN?

Approximate Nearest Neighbor

近似最近邻搜索。


2 为什么不用B+树?

因为:

高维空间

B+树性能会退化。


3 HNSW为什么快?

因为:

small world graph

可以快速跳跃搜索。


十五、总结

向量索引核心知识点:

相似度计算
ANN算法
HNSW
IVF
PQ
向量数据库实现
RAG架构

当前主流方案:

HNSW + cosine similarity

几乎所有 AI 向量数据库都采用。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐