如何计算查询向量和压缩样本向量的距离(相似性)?

简介: 通过分段聚类与查表法,将高维向量压缩为32比特,计算查询向量与样本向量距离时,先分4段并查预建的距离表,以O(1)时间获取每段与聚类中心距离,最后合并得总距离,大幅提升相似性计算效率。

这样,我们就得到了一个压缩后的样本向量,它是一个 32 个比特位的向量。这个时候,如果要我们查询一个新向量和样本向量之间的距离,也就是它们之间的相似性,我们该怎么做呢?这里我要强调一下,一般来说,要查询的新向量都是一个未被压缩过的向量。也就是说在我们的例子中,它是一个 1024 维的浮点向量。

好了,明确了这一点之后,我们接着来说一下计算过程。这整个计算过程会涉及 3 个主要向量,分别是 样本向量、查询向量 以及 聚类中心向量。你在理解这个过程的时候,要注意分清楚它们。

那接下来,我们一起来看一下具体的计算过程。

首先,我们在对所有样本点生成聚类时,需要记录下 聚类中心向量 的向量值,作为后面计算距离的依据。由于 1024 维向量会分成 4 段,每段有 256 个聚类。因此,我们共需要存储 1024 个聚类中所有中心向量的数据。

然后,对于 查询向量,我们也将它分为 4 段,每段也是一个 256 维的向量。对于查询向量的每一段子向量,我们要分别计算它和之前存储的对应的 256 个聚类中心向量的距离,并用一张距离表存下来。由于有 4 段,因此一共有 4 个距离表。

当计算查询向量和样本向量的距离时,我们将查询向量和样本向量都分为 4 段子空间。然后分别计算出每段子空间中,查询子向量和样本子向量的距离。这时,我们可以用聚类中心向量代替样本子向量。这样,求查询子向量和样本子向量的距离,就转换为求查询子向量和对应的聚类中心向量的距离。那我们只需要将样本子向量的聚类 ID 作为 key 去查距离表,就能在 O(1) 的时间代价内知道这个距离了。

最后,我们将得到的四段距离按欧氏距离的方式计算,合并起来,即可得到查询向量和样本向量的距离,距离计算公式:

以上,就是计算查询向量和样本向量之间距离的过程了。你会看到,原本两个高维向量的复杂的距离计算,被 4 次 O(1) 时间代价的查表操作代替之后,就变成了常数级的时间代价。因此,在对压缩后的样本向量进行相似查找的时候,我们即便是使用遍历的方式进行计算,时间代价也会减少许多。

而计算查询向量到每个聚类中心的距离,我们也只需要在查询开始的时候计算一次,就可以生成 1024 个距离表,在后面对比每个样本向量时,这个对比表就可以反复使用了。

相关文章
|
4月前
|
编解码 算法 前端开发
java后端开发学习路线+避坑指南
java后端开发学习路线+避坑指南
|
4月前
|
存储
链表在检索和动态调整上的优缺点
链表因无法随机访问,检索效率低,尤其在无序或有序情况下均难以实现快速查找。但其优势在于动态调整:插入和删除节点仅需O(1)时间,远优于数组的O(n)移动开销,适合频繁修改的场景。
|
4月前
|
算法 搜索推荐
如何使用概率模型中的 BM25 算法进行打分?
BM25是一种基于概率模型的文本相关性打分算法,可视为TF-IDF的升级版。它综合考虑词频(TF)、逆文档频率(IDF)、文档长度及查询词频,并引入非线性增长与饱和机制。通过参数k1、k2和b调节词频权重、文档长度影响和查询词权重,使评分更精准。广泛应用于Elasticsearch、Lucene等搜索引擎中。
|
4月前
|
数据采集 存储 机器学习/深度学习
搜索引擎的整体架构和工作过程
搜索引擎由爬虫、索引和检索三大系统构成:爬虫负责抓取网页并存储;索引系统对网页去重、分析并构建倒排索引;检索系统通过查询分析、相关性排序等技术,返回精准结果。全过程融合文本分析、机器学习与大规模计算,确保高效准确搜索。
|
4月前
|
算法 搜索推荐
经典的 TF-IDF 算法是什么?
TF-IDF是衡量词与文档相关性的经典算法,由词频(TF)和逆文档频率(IDF)相乘得出。TF反映词在文档中的重要性,IDF体现词的区分度。词频越高、文档频率越低的词,权重越大。通过累加各词项的TF-IDF值,可计算查询与文档的整体相关性,广泛应用于搜索引擎排序。
|
4月前
|
负载均衡 搜索推荐 索引
如何基于文档进行拆分?
基于文档拆分可将大规模文档随机划分为多个索引分片,分布于不同服务器,提升单机检索效率。检索时由分发服务器统一请求、汇总并合并结果。该方式负载均衡、无需关注业务细节,但分片过多会导致网络开销增加和合并瓶颈,需根据系统实际合理设置分片数量。
|
4月前
|
机器学习/深度学习 算法 数据挖掘
聚类算法和局部敏感哈希的区别?
聚类算法与局部敏感哈希均用于高维数据相似检索。局部敏感哈希通过哈希函数降维,速度快但精度低,适合表面特征匹配;聚类算法(如K-Means)保留高维特征,按距离划分簇,类内紧凑、类间分离,更适用于语义相似性检索,精度更高,但计算开销较大。两者权衡在于速度与准确性的取舍。
|
4月前
|
机器学习/深度学习 搜索推荐
打分排序:用非精准打分结合深度学习模型的精准打分
广告引擎在排序阶段需精准匹配用户,常采用深度学习模型。但为避免资源浪费,可在召回后增设粗排环节,利用LR、GBDT等轻量模型筛选候选广告至数十条,再进行精排,兼顾效率与效果,确保百毫秒内完成检索。
|
4月前
|
算法
如何查找对应的 SSTable 文件
通过分层架构管理SSTable,Level 0逐个查找,Level 1起每层范围不重叠,可二分定位目标文件。查询逐层下沉,直至找到元素或结束,显著提升检索效率。
|
4月前
|
数据挖掘 索引
向量检索:提供智能匹配能力
向量检索通过将广告与用户兴趣映射为高维向量,实现智能匹配,突破传统标签定向局限。借助“聚类+倒排索引+乘积量化”技术,可在毫秒级高效完成海量向量近邻搜索,提升广告召回精准度与系统性能。