Paper:NSG(Navigating Spreading-out Graph)

参考文献

Fast approximate nearest neighbor search with the navigating spreading-out graph

论文阅读:NSG - 数据库 | Songlin = Life (songlinlife.github.io)

性能提升方向

提高 ANNS 性能可以从四个方面进行考虑,1)保证图的连通性。2)更低的平均出度。3)减少查询路径长度。4)降低索引的尺寸。

MRNG(Monotonic Relative Neighborhood Graph)

这是论文中定义的索引结构,单调相对近邻图,属于MSNET。

RNG

关于RNG的定义

图片来源:ANNS:HNSW算法详解 - 数据库 | Songlin = Life (songlinlife.github.io)

RNG 图就是下面这个月牙里面不能有其他节点,if 𝑥 and 𝑦 are connected by edge 𝑒 ∈ 𝐸, then ∀𝑧 ∈ 𝑉 , with 𝛿 (𝑥, 𝑦) < 𝛿 (𝑥, 𝑧), or 𝛿 (𝑥, 𝑦) < 𝛿 (𝑧, 𝑦)

RNG的搜索路径可能较长(图a),不是单调搜索网络

MRNG

先构建RNG图,找到p到q的路径上的所有点,如果说p和这些点都不相连,则将q作为p的邻接结点。(下图是由图b得来)

NSG索引构建

m是最大出度

  1. 用已有算法构建一个KNN图
  2. 确定一个质心c,以c为查询向量,贪婪搜索随机向量r,将返回结果作为Navigating Node(n)
  3. 对于图中的每一个结点v,通过贪婪搜索算法,得到一条路径(单调?),将路径上的每一个结点(和v的邻居?)都放到邻居候选集中,按距离排序
  4. 利用MRNG选边策略为v挑选m个邻居。添加最近结点和没有冲突的结点 5. 最后还要从导航节点出发构建一棵DFS树,确保图的连通。当DFS终止时,对于未链接到树的结点,将他们链接到近似最近邻(用贪婪算法获得)

定理及其证明

定理1

Theorem 1. Given a finite point set S of n points, randomly distributed in space Ed and a monotonic search network G constructed on S, a monotonic path between any two nodes p, q in G can be found by Algorithm 1 without backtracking.

就是说用这个算法1(贪婪算法),一定能在一个图中无回溯地找到p、q两点的单调搜索路径(q是查询向量,p是入口向量)

这个定理相当于:对于t次迭代,如果满足 <math xmlns="http://www.w3.org/1998/Math/MathML"> ∀ i ∈ { 1 , . . . , t } , d ( v i , q ) > d ( v i + 1 , q ) \forall i \in \{1,...,t\} , d(v_i,q)> d(v_{i+1},q) </math>∀i∈{1,...,t},d(vi,q)>d(vi+1,q),那么就说明找到的路径是单调路径。

数学归纳法证明:

  1. t=1时,存在路径 <math xmlns="http://www.w3.org/1998/Math/MathML"> v 1 = p → r → q v_1=p \rightarrow r \rightarrow q </math>v1=p→r→q是单调路径。根据算法定义,r是v1的邻居,且 <math xmlns="http://www.w3.org/1998/Math/MathML"> δ ( v 1 , q ) ⩾ δ ( r , q ) δ(v_1,q) \geqslant δ(r,q) </math>δ(v1,q)⩾δ(r,q)
    如果r= <math xmlns="http://www.w3.org/1998/Math/MathML"> v 2 v_2 </math>v2,那么从 <math xmlns="http://www.w3.org/1998/Math/MathML"> v 1 v_1 </math>v1到 <math xmlns="http://www.w3.org/1998/Math/MathML"> v 2 v_2 </math>v2关于q是单调的。否则,由于 v2 是通过算法 1 找到的,无需回溯,因此 v2 是 v1 的邻居中距离 q 最近的节点。因此,δ(v2, q) ≤ δ(r, q) < δ(v1, q)。
  2. 假设t=m时, <math xmlns="http://www.w3.org/1998/Math/MathML"> v 1 , v 2 , . . . , v m v_1,v2,...,v_m </math>v1,v2,...,vm是单调路径。t=m+1时,同上可证

定理二

定理二指出,对于 MSNET,任意两点之间的路径长度为 <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( n 1 / d log ⁡ ( n 1 / d ) / Δ r ) O\left(n^{1 / d} \log \left(n^{1 / d}\right) / \Delta r\right) </math>O(n1/dlog(n1/d)/Δr)

相关推荐
Coder_Boy_2 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
helloworldandy2 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
数据知道4 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_12498707534 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha4 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_4 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Gain_chance4 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
此生只爱蛋4 小时前
【Redis】主从复制
数据库·redis
马猴烧酒.4 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
天天爱吃肉82185 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车