PostgreSQL 向量索引的了解「AI向」
一、什么是向量索引(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 向量数据库都采用。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)