如何使用聚类算法进行相似检索?

简介: 利用聚类算法构建倒排索引,可高效实现相似检索。先将数据划分为若干聚类(如1024个),以聚类ID为Key建立索引。查询时,定位最近聚类,通过索引获取候选集并计算距离,返回Top K结果。针对候选过多或过少,可采用层次聚类细化划分,或扩展至次近聚类补充检索,提升效率与准确性。

首先,对于所有的数据,我们先用聚类算法将它们划分到不同的类中。在具体操作之前,我们会给聚类的个数设定一个目标。假设聚类的个数是 1024 个,那所有的点就会被分到这 1024 个类中。这样,我们就可以用每个聚类的 ID 作为 Key,来建立倒排索引了。

建立好索引之后,当要查询一个点邻近的点时,我们直接计算该点和所有聚类中心的距离,将离查询点最近的聚类作为该点所属的聚类。因此,以该聚类的 ID 为 Key 去倒排索引中查询,我们就可以取出所有该聚类中的节点列表了。然后,我们遍历整个节点列表,计算每个点和查询点的距离,取出 Top K 个结果进行返回。

这个过程中会有两种常见情况出现。第一种,最近的聚类中的节点数非常多。这个时候,我们就计算该聚类中的所有节点和查询点的距离,这个代价会很大。这该怎么优化呢?这时,我们可以参考二分查找算法不断划分子空间划分的思路,使用层次聚类将一个聚类中的节点,再次划分成多个聚类。这样,在该聚类中查找相近的点时,我们通过继续判断查询点和哪个子聚类更相近,就能快速减少检索空间,从而提升检索效率了。

第二种,该聚类中的候选集不足 Top K 个,或者我们担心聚类算法的相似判断不够精准,导致最近的聚类中的结果不够好。那我们还可以再去查询次邻近的聚类,将这些聚类中的候选集取出,计算每个点和查询点的距离,补全最近的 Top K 个点。

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