1. Cosine Distance(余弦距离)
✅ 99% 文本 RAG 场景都用它
- 只比较语义方向,不关心向量长度
- 文本 embedding(OpenAI、BGE、m3e 等)天生适合
- pgvector 写法:
vector_cosine_ops
sql
CREATE INDEX idx_emb ON doc
USING hnsw(emb vector_cosine_ops);
2. Euclidean Distance(欧氏距离)
- 计算两点直线距离
- 适合:坐标、数值特征
- 不适合:文本 embedding
- 写法:
vector_l2_ops
sql
CREATE INDEX idx_emb ON doc
USING hnsw(emb vector_l2_ops);
3. Inner Product(内积)
- 速度最快
- 必须把向量归一化才能当相似度用
- 写法:
vector_ip_ops
sql
CREATE INDEX idx_emb ON doc
USING hnsw(emb vector_ip_ops);
总结:
- 欧氏距离 :看向量长度 + 方向,适合数值数据
- 余弦距离 :只看方向 ,文本 embedding 绝对首选
- 内积:向量归一化后 = 余弦,速度最快
- 做 RAG 知识库检索 → 必须用 Cosine
- 做推荐系统、图像检索 → 可选用内积
- 做地理位置、数值计算 → 欧氏距离
文本检索用余弦, 数值坐标用欧氏, 归一化向量用内积。