文章目录
- 暴力搜索(Flat)
- 聚类
- 近似最近邻算法:ANN
- 局部敏感哈希索引:LSH
- 存储优化:(量化)聚类码本
- 乘积量化索引:PQ
- 层次导航小世界:HNSW
暴力搜索(Flat)
- 原理: 让待查寻向量和每一个备选向量都计算相似度, 选取topk, 召回率是100%。
- 计算相似度的方法:
- 欧式距离(Euclidean Distance)
- 曼哈顿距离(Manhattan Distance)
- 夹角余弦(Cosine)
- 皮尔逊相关系数(Pearson Correlation Coefficient)
- 内积
聚类
- 原理:随机选择一些样本作为聚类中心点,叫做质心,计算相似性或距离,将样本分配到最近的簇中,重新计算每个簇中的均值或中心点,作为新的聚类中心,重复以上两个步骤,直到满足停止条件。
近似最近邻算法:ANN
局部敏感哈希索引:LSH
- 原理步骤
- 哈希函数可以将不同数据转化为统一长度的二进制编码
- 利用哈希碰撞,让尽可能相似的数据碰撞到同一个桶中
-
如何找到哈希函数,让尽可能相似的向量分到一个桶中
- 以二维举例,随即生成线,高维可以是超平面,分割之后一面为0 一面为1,计算二进制编码,最后对比相同的编码为一组。
- 如果数据太密集误差较大,可以做优化,将二进制编码再进行分组。
存储优化:(量化)聚类码本
- 原理:存储的时候可以对向量进行量化处理,减少内存占用、提高查询速度
乘积量化索引:PQ
- 原理:对于高维数据,直接存储内存占用个太多,可以进行分段存储,每段有自己的码本,可以降较少内存的消耗
层次导航小世界:HNSW
- 6人原理,每6个人引荐就能找到另一个人。