【AI知识点】分层可导航小世界网络算法 HNSW(Hierarchical Navigable Small World)

news2024/10/4 13:20:38

HNSW(Hierarchical Navigable Small World)分层可导航小世界网络算法 是一种高效的近似最近邻搜索(Approximate Nearest Neighbor Search, ANN) 算法,特别适用于大规模、高维数据集的相似性检索。HNSW 基于小世界网络(small-world networks)原理,通过构建一个多层次的图结构,能够快速找到与查询点相似的数据点。它在实践中非常流行,广泛用于需要快速搜索高维数据的任务,例如图像检索、推荐系统、文本嵌入向量检索等。

1. HNSW的背景

在处理高维数据时,经典的最近邻搜索方法(如暴力搜索)由于计算复杂度高,在实际应用中效率低下。HNSW 通过引入一种基于图的结构,显著提高了近似最近邻搜索的效率,同时保持了较高的精度。HNSW 是一种改进的基于图的搜索方法,它借鉴了“小世界”网络的概念,即在图中任何两个节点之间都有相对较短的路径。


2. HNSW的核心思想

HNSW 的基本思路是将数据点组织成一个分层图结构,每一层的图结构代表数据的不同分辨率。在高层次,数据点的数量较少,连接关系较少,搜索效率较高。在底层,数据点的数量较多,连接关系更密集,能够更精确地找到最近邻。通过逐层导航和搜索,HNSW 能够快速找到与查询点最相似的点。

比喻解释:

可以将HNSW比作一个由多层城市地图组成的导航系统。最上层的地图展示了整个城市的概貌,虽然不详细,但能让你大致找到查询点所在的区域;随着你进入下一层,更详细的街道信息出现,你可以更精确地靠近目标;在最后的层次上,你甚至可以看到具体的建筑物,帮助你找到目标位置。这种从粗略到精细的导航过程帮助你快速找到目标,而不必从头到尾细致地搜索整个城市。


3. HNSW的工作原理

HNSW的结构和搜索过程可以分为两个阶段:构建图结构搜索过程

图结构和搜索过程可参考下图:

在这里插入图片描述
图片来源:https://www.pinecone.io/learn/series/faiss/hnsw/

a. 构建图结构

HNSW使用分层的图(network)来表示数据点。在最上层的图中,每个节点代表一个数据点,图中的连接稀疏;随着层数降低,图中的节点和连接变得更加密集。构建过程如下:

  1. 层次结构
    HNSW 将数据点分配到不同的层次。在较高层,数据点较少且连接较少,而在较低层,数据点较多且连接较密集。最上层的数据点数最少,搜索可以从这里开始逐层导航到更低层,直到找到最近邻。

  2. 基于随机化的层次分配
    每个数据点被分配到不同的层次是随机的。数据点的层数是根据某种随机分布(如泊松分布)确定的,较少的数据点会被分配到上层,而大多数数据点只会出现在较低的层次中。

  3. 小世界图结构
    每一层的图都符合“小世界”网络的特性:节点之间的连接既有局部的,也有较远距离的(跨越较长距离的跳跃连接)。这种结构保证了即使在高维空间中,也能通过少数几步找到相近的节点。

  4. 邻居选择
    在每一层,节点只会连接到与它距离较近的其他节点。这种邻居选择策略保证了图的连通性,同时限制了连接的数量,使得计算和存储效率更高。

b. 搜索过程

HNSW的搜索是一个从上到下的过程,即从最上层的稀疏图开始搜索,逐步进入下层的密集图。整个搜索过程如下:

  1. 从顶层开始:搜索从顶层的稀疏图开始。由于顶层节点较少,搜索过程可以快速找到一个与查询点相对接近的节点。

  2. 逐层导航:一旦在上层找到一个接近的节点,搜索会进入下一层更密集的图。在每一层,算法会在该层的邻居节点之间进行本地搜索,以找到更接近查询点的节点。

  3. 近邻搜索:在底层的密集图中,搜索的精度较高,可以更精确地找到查询点的近似最近邻。在这个过程中,使用启发式方法来选择要探索的节点,并限制需要访问的节点数量。

  4. 返回结果:搜索最终会在最底层找到一个或多个与查询点最相似的点,这些点就是近似最近邻。


4. HNSW的优势

HNSW在实践中非常有效,原因包括以下几个方面:

  • 快速搜索:通过分层的小世界图结构,HNSW 能够以较低的时间复杂度完成近似最近邻搜索。它可以通过逐层导航,快速减少搜索空间,从而在大规模数据集中进行快速检索。

  • 高精度:尽管 HNSW 是一种近似搜索方法,它的精度通常非常接近精确的最近邻搜索。这是因为在底层的密集图中,局部搜索非常精确。

  • 可扩展性:HNSW非常适合处理大规模、高维数据集。随着数据集的增大,HNSW的搜索时间增长较慢,且它能够在线增量构建,即随着数据的加入,图结构可以动态更新。

  • 灵活性:HNSW可以应用于不同的距离度量方法,包括欧几里得距离、余弦相似度等。


5. HNSW的缺点

尽管HNSW在大规模高维数据检索中表现非常好,但它也有一些局限性:

  • 构建图的复杂度较高:与其他ANN算法相比,HNSW的图构建过程较为复杂,尤其是在处理非常大规模的数据集时,初始构建可能会消耗较多时间和资源。

  • 内存占用较大:HNSW 通过存储分层的图结构,内存使用量会较大,特别是在处理高维、海量数据时,需要足够的内存来存储节点和连接信息。


6. HNSW的实际应用

HNSW由于其高效的搜索能力,已经被广泛应用于各种实际场景中:

  • 推荐系统:在推荐系统中,HNSW可以快速找到与用户行为或兴趣相似的其他用户或物品,提供个性化的推荐。

  • 图像搜索:HNSW能够快速处理高维图像特征向量,帮助图像搜索系统找到与查询图像相似的其他图片。

  • 文本检索:HNSW可用于处理文本嵌入向量的相似性搜索,帮助自然语言处理系统快速找到语义相似的文本。

  • 生物信息学:在生物信息学中,HNSW可以用于处理基因序列或蛋白质结构的相似性搜索。


7. HNSW与其他ANN算法的比较

  • 与LSH(Locality Sensitive Hashing)相比:LSH通过哈希将相似的数据点映射到相同的桶中,而HNSW使用基于图的结构。相比之下,HNSW通常在精度和效率上优于LSH,特别是在处理高维数据时。

  • 与KD树、Ball树相比:KD树和Ball树适合处理低维数据,但在高维数据上效率迅速下降。相比之下,HNSW在高维数据上表现得更好,具有更好的扩展性。


8. 总结

HNSW(Hierarchical Navigable Small World) 是一种基于分层图结构的高效近似最近邻搜索算法,它通过构建小世界图结构,在处理大规模、高维数据时实现了快速和高精度的搜索。它已在多个领域得到了广泛应用,如推荐系统、图像检索、文本相似性搜索等。尽管构建和内存开销较大,HNSW仍然是许多高维搜索任务中的首选算法之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2188079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用NumPy进行线性代数的快速指南

介绍 NumPy 是 Python 中用于数值计算的基础包。它提供了处理数组和矩阵的高效操作,这对于数据分析和科学计算至关重要。在本指南中,我们将探讨 NumPy 中可用的一些基本线性代数操作,展示如何通过运算符重载和内置函数执行这些操作。 元素级…

ubuntu图形界面右上角网络图标找回解决办法

问题现象: ubuntu图形界面右上角网络图标消失了,不方便联网: 正常应该是下图: 网络寻找解决方案,问题未解决,对于某些场景可能有用,引用过来: 参考方案 Ubuntu虚拟机没有网络图标或…

【云原生安全篇】Cosign助力Harbor验证镜像实践

【云原生安全篇】Cosign助力Harbor验证镜像实践 目录 1 引言2 概念 2.1 什么是 Cosign?2.2 为什么选择 Cosign 和 Harbor? 3 实践: Cosign对Harbor中的镜像签名 3.1 环境准备3.2 安装 Cosign3.3 使用 Cosign 对镜像进行签名 3.3.1 生成密钥对…

用Sklearn和Statsmodels来做linear_regression和Logistic_regression注意事项

用Sklearn和Statsmodels来做linear_regression和Logistic_regression注意事项,区别。主要在于 intercept 项,和 regularization。 X np.array([-1, 0, 1]) # 自变量 Y np.array([-2, 0, 5]) # 因变量一、Linear regression 的截距项 又叫 intercep…

Web安全 - 构建全面的业务安全保护防御体系

文章目录 业务安全概述业务安全 vs. 基础安全业务安全的防护业务安全的防护策略1. 用户资源对抗的技术实现与优化2. IP资源对抗的技术实现与优化3. 设备资源对抗的技术实现与优化4. 操作资源对抗的技术实现与优化实际应用场景中的策略 典型场景业务场景 1:新用户注册…

Vue中使用ECharts实现热力图的详细教程

在数据可视化领域,热力图是一种非常直观的表现形式,它通过颜色深浅来展示数据分布情况。在Vue项目中,我们可以使用ECharts这一强大的图表库来实现热力图。下面我将详细介绍如何在Vue中使用ECharts实现热力图。效果如下图: 一、准备…

关于abaqus里一些问题的记录

在进行布种时,会遇到最大偏离因子和最小尺寸因子,在帮助文档里,是这么解释 要控制曲率对种子设定的影响,请为 Maximum deviation factor (最大偏差因子) 输入一个值。偏差因子是衡量单元边缘与原始几何图形…

爬虫prc技术----小红书爬取解决xs

知识星球:知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具知识星球是创作者连接铁杆粉丝,实现知识变现的工具。任何从事创作或艺术的人,例如艺术家、工匠、教师、学术研究、科普等,只要能获得一…

lambda表达式底层实现:反编译LambdaMetafactory + 转储dump + 运行过程 + 反汇编 + 动态指令invokedynamic

一、结论先行 lambda 底层实现机制 1.lambda 表达式的本质:函数式接口的匿名子类的匿名对象 2.lambda表达式是语法糖 语法糖:编码时是lambda简洁的表达式,在字节码期,语法糖会被转换为实际复杂的实现方式,含义不变&am…

低空无人机飞手四类超视距无人机技术详解

低空无人机飞手中的四类超视距无人机技术详解,主要涉及无人机的性能特点、技术要求、培训内容以及应用场景等方面。以下是对这些方面的详细阐述: 一、四类无人机(中型无人机)性能特点 四类无人机,现已更名为中型无人…

OpenCAEPoro优化(2)

前言: 首先有一点要注意: 修改代码时,要注意命名空间的冲突问题(主要是头文件中) 作者了解了相关这个项目的一些背景介绍;得到的主要信息是:这种大型程序一般都是优化的比较完善了&#xff0…

【Vue3实战】:用导航守卫拦截未保存的编辑,提升用户体验

前言 在Vue3应用中,用户可能会在一个页面上进行数据编辑,如填写表单或修改表格中的数据。当用户在未保存更改的情况下尝试离开当前页面时,我们希望能够弹出提示框,告知用户有未保存的更改,并询问是否确定离开。 一、使…

【案例】平面云

教程案例视频:Unity Shader Graph - 云教程 开发平台:Unity 2022 开发工具:Unity ShaderGraph   一、效果展示 二、ShaderGraph 路线图 三、案例分析 核心思路:使用 Noise(噪声)模拟云层状态   3.1 说明…

打造高效灵活的数字企业——The Open Group 2024生态系统架构·可持续发展年度大会重磅来袭

随着数字经济的高速发展,企业数字化转型已成为时代的必然趋势。如何在这场变革中抢占先机,实现业务增长与降本增效,成为众多企业关注的焦点。为此,The Open Group 2024生态系统架构可持续发展年度大会将于明年盛大开启&#xff0c…

Studying-多线程学习Part1-线程库的基本使用、线程函数中的数据未定义错误、互斥量解决多线程数据共享问题

来源:多线程编程 线程库的基本使用 两个概念: 进程是运行中的程序线程是进程中的进程 串行运行:一次只能取得一个任务并执行这一个任务 并行运行:可以同时通过多进程/多线程的方式取得多个任务,并以多进程或多线程…

Leetcode: 0011-0020题速览

Leetcode: 0011-0020题速览 本文材料来自于LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解 遵从开源协议为知识共享 版权归属-相同方式…

Java在用增强for循环遍历集合时删除元素,抛出java.util.ConcurrentModificationException异常

文章目录 0. 前言1. 问题产生的背景2. Java中增强for循环的底层原理3. 为什么增强for循环不支持在遍历集合时删除元素3.1 问题排查3.2 modCount 变量的来源3.3 expectedModCount 变量的来源3.4 导致modCount变量和expectedModCount不相等的原因3.5 为什么用迭代器遍历元素时删除…

学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)

在线学籍管理平台系统 目录 基于SpringbootVUE的在线学籍管理平台系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大…

Leetcode: 0021-0030题速览

Leetcode: 0021-0030题速览 本文材料来自于LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解 遵从开源协议为知识共享 版权归属-相同方式…

如此的“宠物医保”靠谱吗?

今天是世界动物日,本“人民体验官”推广人民日报官方微博文化产品《带着笑意的眼睛,能看见最美的风景》。 截图:来源“人民体验官”推广平台 人民微博说,带着笑意的眼睛,能看见最美的风景。生活中多一点微笑&#xff…