首页> 中国专利> 一种基于国产CPU和OS的向量检索服务数据管理方法及系统

一种基于国产CPU和OS的向量检索服务数据管理方法及系统

摘要

本发明公开了一种基于国产CPU和OS的向量检索服务数据管理方法及系统,属于人工智能及向量检索技术领域,该方法的实现包括索引文件类型选择、向量插入、数据文件管理和向量查询,其中,在向量插入阶段,数据添加到内存索引,并同时将数据添加到日志文件中,所述内存索引可读,在查询时可直接搜索;当内存索引中数据量达到规定量后保存到磁盘,并删除该部分数据对应的数据日志文件,在内存中建立新的索引用来添加接下来插入的数据;创建两张表来管理文件的信息;在收到查询请求时,既查询刚刚插入但还未存入磁盘的数据,也查询已经存入磁盘的数据。本发明能够解决国产CPU和OS基于Faiss向量检索服务中的数据管理问题。

著录项

  • 公开/公告号CN114860866A

    专利类型发明专利

  • 公开/公告日2022-08-05

    原文格式PDF

  • 申请/专利权人 浪潮软件集团有限公司;

    申请/专利号CN202210514441.8

  • 发明设计人 丁梦浩;李利民;

    申请日2022-05-12

  • 分类号G06F16/31(2019.01);G06F3/06(2006.01);

  • 代理机构济南信达专利事务所有限公司 37100;

  • 代理人陈婷婷

  • 地址 250100 山东省济南市高新区科航路2877号

  • 入库时间 2023-06-19 16:17:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-23

    实质审查的生效 IPC(主分类):G06F16/31 专利申请号:2022105144418 申请日:20220512

    实质审查的生效

  • 2022-08-05

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及人工智能及向量检索技术领域,具体涉及一种基于国产CPU和OS的向量检索服务数据管理方法及系统。

背景技术

生活中存在着大量的声音、文字、人脸、指纹等信息,这些信息无法被计算机直接识别。而现在,随着人工智能深度学习技术的发展,这些信息都可以被处理成可以被计算机识别认知的向量,计算机通过计算向量的欧式距离、余弦距离和内积等比较两个向量的相似程度,而向量检索就是存储和查找这些特征向量的技术。在现在的人工智能技术中,在将声音、图像等信息处理为特征向量后,要实现向量检索,从而进行实时的人脸识别,声音识别。在向量检索系统中会有大量的数据,需要进行数据管理;现在常用的向量检索技术中,有很多不能适配国产的CPU,比如Vearch、Milvus等。而最基本的向量检索技术Faiss提供了向量检索的基础方法添加、搜索等,但不是服务的形式,想要基于Faiss实现一个向量检索服务,需要自己实现数据的管理、服务接口和分布式等内容。

发明内容

本发明的技术任务是提供一种基于国产CPU和OS的向量检索服务数据管理方法,能够解决国产CPU和OS基于Faiss向量检索服务中的数据管理问题。

本发明解决其技术问题所采用的技术方案是:

一种基于国产CPU和OS的向量检索服务数据管理方法,该方法的实现包括索引文件类型选择、向量插入、数据文件管理和向量查询,其中,

在向量插入阶段,数据添加到内存索引,并同时将数据添加到日志文件中,用来保证数据的完整性,所述内存索引可读,在查询时可直接搜索;当内存索引中数据量达到规定量后保存到磁盘,并删除该部分数据对应的数据日志文件,在内存中建立新的索引用来添加接下来插入的数据,能够保证不频繁的发生读写操作,保证磁盘中的文件不过碎片化;

所述数据文件管理,创建两张表来管理文件的信息,一张表用来保存服务创建的表的信息,另一张表保存磁盘中保存的索引文件的信息;

在收到查询请求时,既查询刚刚插入但还未存入磁盘的数据,也查询已经存入磁盘的数据。

由于Faiss是一种稠密向量相似度计算和聚类的库,只提供检索库,而服务需要自己实现。本方法作为一种基于国产CPU和OS的向量检索服务数据管理方案,能够解决基于Faiss向量检索服务中的数据管理问题。

优选的,所述索引文件类型包括精准搜索匹配、倒排索引、量化索引和复合索引,可以根据需要的查询速度、服务器内存等选择合适的索引;

精准匹配索引可以得到准确的结果,如果需要支持带id的插入则使用IDMap;

倒排索引可以提高查询速度,在插入数据前,先进行训练,确定若干个聚类中心,插入数据时,将数据插入到离自身最近的簇中,搜索时选择和当前要搜索的向量最近的部分簇进行搜索;

在内存不足的情况下可使用量化索引对数据进行压缩。

进一步的,不同类型的索引在保存成文件时,采用不同的保存格式:

对于精准匹配索引,会保存向量的ID和向量的值;

对于倒排索引,会保存索引类型、各个聚类中心、ID和向量的值。

优选的,内存索引中数据量达到100万时将数据存入磁盘。

进一步的,对于内存索引中数据量没有达到规定量的情况,此时服务关闭,则磁盘中将没有向量的索引文件;而在服务下次启动时,服务会读取日志文件恢复这些数据的索引文件,然后继续添加数据,达到规定量后保存到磁盘。

优选的,所述保存服务创建的表的信息包括记录表的名称、向量维度、索引类型、相似度比较方式和聚类个数;

所述保存磁盘中索引文件的信息包括记录该文件所属的向量索引表、文件名称、索引类型。

优选的,查询已经存入磁盘的数据包括以下两种情况:

一种是在服务器内存充足的情况下,服务启动时将全部数据从磁盘索引文件读入内存,查询时直接从内存中查询,不需要文件的读取,这种情况是查询速度最快的;

另一种是服务器内存不足的情况,此时会发生内存中数据的置换,内存中保存一部分数据,查询时先查询内存中现有的数据,然后根据LRU,将最近最久没有使用的数据从内存中移除,将新的索引数据读入内存,不断重复,直到查询所有文件。

优选的,查询服务是要查询和传入向量最相似的k个向量,查询时要查询对应表的全部文件,每一个索引文件在查询后会得到子结果集;在子结果集中,向量是按相似度从大到小排序的,要得到总的结果集,对子结果集进行归并排序得到前k个结果即可。

本发明还要求保护一种基于国产CPU和OS的向量检索服务数据管理系统,包括索引文件类型选择模块、向量插入模块、数据文件管理模块和向量查询模块,

该系统实现上述的基于国产CPU和OS的向量检索服务数据管理方法。

本发明还要求保护一种基于国产CPU和OS的向量检索服务数据管理装置,包括:至少一个存储器和至少一个处理器;

所述至少一个存储器,用于存储机器可读程序;

所述至少一个处理器,用于调用所述机器可读程序,执行上述的基于国产CPU和OS的向量检索服务数据管理方法。

本发明的一种基于国产CPU和OS的向量检索服务数据管理方法及系统与现有技术相比,具有以下有益效果:

本方法基于Faiss的检索库实现检索服务,使得服务适配国产CPU和OS。

在本方法中,可以根据需要的查询速度、服务器内存等,选择合适的索引,满足各种检索的需求;

在进行插入操作时,通过缓存加日志文件的方式,不仅让数据可以尽快可以被查询到,同时也防止了数据的丢失;达到规定量存盘,使得磁盘写入不会太频繁、文件在磁盘中的保存不过于碎片化;

通过两张表管理向量索引表和索引文件,使得索引文件管理规范,在插入和查询时能够准确、快速找到索引文件;

当在内存充足时,启动服务时,采用热加载,将数据读入内存,加快第一次查询速度;当内存不足时,根据LRU置换内存中已查询的索引文件,保证查询速度。

附图说明

图1是本发明实施例提供的基于国产CPU和OS的向量检索服务数据管理方法向量检索总体矿建示图;

图2是本发明实施例提供的Faiss文件保存形式示例;

图3是本发明实施例提供的向量插入和查询的具体过程;

图4是本发明实施例提供的数据文件管理示例;

图5是本发明实施例提供的查询时的内存交换示图。

具体实施方式

下面结合具体实施例对本发明作进一步说明。

生活中存在着大量的声音、文字、人脸、指纹等信息,这些信息无法被计算机直接识别。而现在,随着人工智能深度学习技术的发展,这些信息都可以被处理成可以被计算机识别认知的向量,计算机通过计算向量的欧式距离、余弦距离和内积等比较两个向量的相似程度。而向量检索就是存储和查找这些特征向量的技术。

本发明实施例提供了一种基于国产CPU和OS的向量检索服务数据管理方法,该方法的实现包括索引文件类型选择、向量插入、数据文件管理和向量查询,其中,

在向量插入阶段,数据添加到内存索引,并同时将数据添加到日志文件中,用来保证数据的完整性,所述内存索引可读,在查询时可直接搜索;当内存索引中数据量达到规定量后保存到磁盘,并删除该部分数据对应的数据日志文件,在内存中建立新的索引用来添加接下来插入的数据,能够保证不频繁的发生读写操作,保证磁盘中的文件不过碎片化;

所述数据文件管理,创建两张表来管理文件的信息,一张表用来保存服务创建的表的信息,另一张表保存磁盘中保存的索引文件的信息;

在收到查询请求时,既查询刚刚插入但还未存入磁盘的数据,也查询已经存入磁盘的数据。

由于Faiss是一种稠密向量相似度计算和聚类的库,只提供检索库,而服务需要自己实现。本方法作为一种基于国产CPU和OS的向量检索服务数据管理方案,能够解决基于Faiss向量检索服务中的数据管理问题。

本方法的具体实现如下:

1、索引文件类型选择

在使用时,可以根据需要的查询速度、服务器内存等选择合适的索引。向量检索中有多种类型的索引,包括精准搜索匹配、倒排索引、量化索引及复合索引。

精准匹配索引可以得到准确的结果,如果需要支持带id的插入则使用IDMap。倒排索引可以提高查询速度,在插入数据前,要先进行训练,确定若干个聚类中心,插入数据时,将数据插入到离自身最近的簇中;搜索时选择和当前要搜索的向量最近的部分簇进行搜索。在内存不足的情况下可以使用量化索引对数据进行压缩。

不同类型的索引在保存成文件时,采用不同的保存格式。对于精准搜索,会保存向量的ID和向量的值;对于倒排索引,会保存索引类型、各个聚类中心、ID和向量的值。

2、向量插入阶段

在选择精准搜索的情况下,保存1亿条512维的向量数据,可以得到这些数据需要200G的空间。这样大量的数据不可能一次性全部导入检索服务,而且也不能将这些数据全部存入到一个文件中。

当向量检索服务接收到插入请求时,服务将数据添加到内存的索引中,这个内存中的索引是可读的,在查询时可以搜索,使得数据在插入后能够很快被查询到。同时,将数据添加到日志文件中,用来保证数据的完整性。

在将内存中的索引保存到磁盘方面,本实施例中规定在索引中数据量达到100万时将数据存入磁盘。此时,删除这部分数据对应的数据日志文件,在内存中建立新的索引用来添加接下来插入的数据。这样保证不频繁的发生读写操作,保证磁盘中的文件不过碎片化。

对于内存中数据量没有达到100万的情况,此时服务关闭,那么磁盘中将没有向量的索引文件;在服务下次启动时,服务会读取日志文件恢复这些数据的索引文件,然后继续添加数据,达到规定量后保存到磁盘。

3、数据文件管理

服务会创建两张表来管理文件的信息,一张表用来保存服务创建的表的信息,另一张表保存磁盘中保存的索引文件的信息。

保存服务创建的表的信息的表会记录表的名称、向量维度、索引类型、相似度比较方式和聚类个数等;

保存磁盘中索引文件信息的表会记录该文件所属的向量索引表、文件名称、索引类型。

4、向量查询阶段

在收到查询请求时,既查询刚刚插入但还未存入磁盘的数据,也查询已经存入磁盘的数据。

在查询磁盘中已保存的数据时会出现两种情况,一种是在服务器内存充足的情况下,服务启动时将全部数据从磁盘索引文件读入内存,查询时直接从内存中查询,不需要文件的读取,这种情况是查询速度最快的;另外一种是服务器内存不足的情况,此时会发生内存中数据的置换,内存中保存一部分数据,查询时先查询内存中现有的数据,然后根据LRU,将最近最久没有使用的从内存中移除,将新的索引数据读入内存,不断重复,直到查询所有文件。

查询服务是要查询和传入向量最相似的k个向量。查询时要查询对应表的全部文件,每一个索引文件在查询后会得到子结果集。在子结果集中,向量是按相似度从大到小排序的,要得到总的结果集,对子结果集进行归并排序得到前k个结果即可。

本方法能够接收向量数据,实现向量存储和查询,完成向量检索过程中的数据管理。插入过程实现数据插入即可见,并且保证数据的完整性;查询过程保证查询速度和查询结果的完整和准确。在使用时可以根据需要的查询速度、服务器内存、查询准确率选择合适的索引类型。在进行插入操作时,通过缓存加日志文件的方式,不仅让数据可以尽快可以被查询到,同时也防止了数据的丢失。达到规定量存盘,使得磁盘写入不会太频繁、文件在磁盘中的保存不过于碎片化。服务会创建两张表来管理文件的信息,一张表用来保存服务创建的表的信息,另一张表保存磁盘中保存的索引文件的信息;在查询时根据所述创建的表,查询到要查询的文件,查询需要的索引文件后归并得到最终结果;在启动时实现热加载,提前将文件读入内存,加快查询速度。

本发明实施例还提供了一种基于国产CPU和OS的向量检索服务数据管理系统,包括索引文件类型选择模块、向量插入模块、数据文件管理模块和向量查询模块,

该系统实现上述实施例所述的基于国产CPU和OS的向量检索服务数据管理方法。

本发明实施例还提供了一种基于国产CPU和OS的向量检索服务数据管理装置,包括:至少一个存储器和至少一个处理器;

所述至少一个存储器,用于存储机器可读程序;

所述至少一个处理器,用于调用所述机器可读程序,执行上述实施例所述的的基于国产CPU和OS的向量检索服务数据管理方法。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号