[发明专利]一种基于分层可导航小世界图的近似最近邻搜索方法在审
申请号: | 201910279860.6 | 申请日: | 2019-04-09 |
公开(公告)号: | CN110008256A | 公开(公告)日: | 2019-07-12 |
发明(设计)人: | 徐小良;李畅;王宇翔;何宏;夏一行 | 申请(专利权)人: | 杭州电子科技大学 |
主分类号: | G06F16/2458 | 分类号: | G06F16/2458;G06F16/22 |
代理公司: | 杭州千克知识产权代理有限公司 33246 | 代理人: | 周希良 |
地址: | 310018 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 结点 最近邻 索引 近似最近邻搜索 分层 小世界 二进制文件 输入目标 索引结构 索引生成 贪婪算法 遍历 构建 近似 集合 搜索 查询 查找 保存 平衡 | ||
1.一种基于分层可导航小世界图的近似最近邻搜索方法,其特征在于该方法包含如下步骤:
步骤1:生成B-HNSW索引
步骤1.1构建向量集合P,将每个向量作为B-HNSW中的一个结点,向量集合P即可视作结点集合P;
步骤1.2遍历步骤1.1遍历结点集合P,将结点集合P中的第1个结点插入B-HNSW索引中,作为初始结点;
步骤1.3设置当前节点p的最大边数量ef,并从B-HNSW索引的第0层开始如下步骤:
(1)在B-HNSW索引的当前层插入当前结点p,随机选择当前层中已经存在的一个结点作为入口结点;通过欧氏距离或余弦距离计算入口结点的邻居结点与当前结点p的距离,使用贪婪算法在当前层中查找最近邻的ef个结点,并将当前结点p与这ef个最近邻结点连接生成边,被连接的结点称作邻居结点;
(2)检查当前结点p的邻居结点,如果这些邻居结点都没有在上层存在,则将当前结点p提升到上一层并回到步骤1.3(1);若当前结点p所连接的邻居结点中有在上层存在的结点或当前结点p的邻居结点数目少于ef个,则当前结点p插入B-HNSW索引完成;
步骤1.4保存步骤1.3中生成的B-HNSW索引为可被加载的二进制文件;
步骤2:B-HNSW近似最近邻搜索
基于步骤1.4保存的B-HNSW索引文件,输入一个目标向量作为目标结点q,在B-HNSW索引中找到最近邻的k个结点;具体搜索过程如下:
a)加载B-HNSW索引并读取,假设B-HNSW索引层数为N;
b)用户输入目标结点q和需要搜索的近邻数量k,随机在B-HNSW索引的最上层即第N层选择入口结点ep,在第N层通过贪婪算法来找到欧氏距离或余弦距离最小的1个结点WN,并作为下一层即第N-1层的入口结点;
c)在B-HNSW索引的第N-1层到第1层依次查找1个与目标结点q的最近邻结点,这些近邻结点分别为WN、WN-1、…、W1;对于第N-1层,使用在第N层找到的最接近目标结点q的WN作为入口结点,再次通过贪婪算法在WN开始,向外查找该层中与目标结点q的最近邻结点WN-1,并将WN-1作为第N-2层的入口结点;
d)将从第1层得到最近邻结点W1作为入口结点,在第0层使用贪婪算法搜索与目标结点q最近邻的k个结点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州电子科技大学,未经杭州电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910279860.6/1.html,转载请声明来源钻瓜专利网。