pgvector 向量索引
向量相似度、召回率与向量索引:从 HNSW 到 IVFFlat 向量检索的核心问题是: 给定一个查询向量,如何从大量向量中快速找出最相似的 topK 个结果。 在小数据量下,可以直接暴力计算所有向量距离。但当数据达到百万、千万甚至更大规模时,就需要向量索引,例如 HNSW、IVFFlat、DiskANN 等。 本文整理向量相似度、召回率、pgvector、Milvus、HNSW、IVFFlat 的基本原理和工程选择。 1. 常见向量相似度计算方法 1.1 余弦相似度 Cosine Similarity 余弦相似度衡量两个向量方向是否接近: 1 cos(a, b) = (a · b) / (||a|| ||b||) 越接近 1 越相似。 适合: 文本 embedding 语义搜索 RAG 检索 向量长度不重要,只关心方向的场景 在大模型 embedding 检索里,余弦相似度非常常见。 1.2 点积 Dot Product / Inner Product 1 sim(a, b) = a · b 如果向量已经归一化,点积和余弦相似度等价。 适合: 已归一化 embedding 推荐系统 最大内积搜索 MIPS 注意:未归一化时,点积会受向量模长影响。 1.3 欧氏距离 L2 Distance 1 dist(a, b) = sqrt(sum((ai - bi)^2)) 距离越小越相似。 ...