公开/公告号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的向量检索服务数据管理方法。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
机译: 一种用于将附件或相关产品与智能电子设备之间的识别信息或数据和/或配对信息或数据发送,存储和/或检索到,和/或从任何单独的服务器或存储介质中传输,存储和/或检索的系统和方法
机译: 用户数据,例如视频,一种在网络系统中使用的访问方法,涉及使用映射到电话号码的访问数据将用户数据(基于通信链接传输到访问服务器)从访问服务器传输到门户服务器,
机译: 一种在数据库和相应系统中灵活地从数据库中存储/检索基于树的数据存储设备中存储的数据的方法