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

简介: 通过分段聚类与查表法,将高维向量压缩为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 个距离表,在后面对比每个样本向量时,这个对比表就可以反复使用了。

相关文章
|
1天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
947 150
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1664 8
|
7天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
619 152
|
9天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
592 16
|
9天前
|
人工智能 自然语言处理 API
Next AI Draw.io:当AI遇见Draw.io图表绘制
Next AI Draw.io 是一款融合AI与图表绘制的开源工具,基于Next.js实现,支持自然语言生成架构图、流程图等专业图表。集成多款主流大模型,提供智能绘图、图像识别优化、版本管理等功能,部署简单,安全可控,助力技术文档与系统设计高效创作。
673 151