CN115599791B - 一种Milvus数据库参数确定方法、设备及存储介质 - Google Patents
一种Milvus数据库参数确定方法、设备及存储介质 Download PDFInfo
- Publication number
- CN115599791B CN115599791B CN202211427710.3A CN202211427710A CN115599791B CN 115599791 B CN115599791 B CN 115599791B CN 202211427710 A CN202211427710 A CN 202211427710A CN 115599791 B CN115599791 B CN 115599791B
- Authority
- CN
- China
- Prior art keywords
- vector
- database
- milvus
- value
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种Milvus数据库参数确定方法、设备及存储介质,涉及信息检索领域,该方法包括:获取输入的目标召回率S0;确定初始nprobe值L1和初始nlist值L2;从外部矢量数据库中随机取出一数据向量,并确定为第一待比对向量;根据第一待比对向量、L1和L2,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,得到第一召回率S1;根据第二待比对向量、S0、S1、L3、L1和L2,确定目标nprobe值L3和目标nlist值L4。以每次得出的召回率与目标召回率做比较,来确定nprobe值和nlist值的枚举方向,使得可在短时间内获取准确的nprobe值和nlist值。
Description
技术领域
本发明涉及信息检索领域,特别是涉及一种Milvus数据库参数确定方法、设备及存储介质。
背景技术
Milvus数据库为一种数据向量库,旨在解决数据向量在普通关系型数据库中检索效率太低的问题。Milvus数据库通过使用多种索引来实现数据向量的高效率检索,但使用索引进行数据向量的检索虽提升了效率,但还存在召回率降低的问题。
目前使用较多的为IVF-SQ8索引,在建立索引和检索时,需要用到的主要参数为nlist和nprobe,nlist为在进行数据向量检索时所有向量的组数,nprobe为在进行数据向量检索时相似向量的组数。经实验证明,nlist和nprobe对召回率和检索时间有着很大的影响。虽然Milvus官方给出了nlist的推荐设置值,但多种实验证明推荐值并不能适配所有场景。nprobe的设置也没有确切的值,需要大量实验才可得出,会耗费大量测试时间。且现有的nlist和nprobe参数值与召回率的对应参数表也不为准确,在数据向量检索时会产生误差。
发明内容
针对上述技术问题,本发明提供一种Milvus数据库参数确定方法、设备及存储介质,至少部分解决现有技术中存在的技术问题,本发明采用的技术方案为:
根据本申请的一个方面,提供一种Milvus数据库参数确定方法,应用于参数确定系统,参数确定系统通信连接有Milvus数据库和外部矢量数据库,外部矢量数据库与Milvus数据库均存储有若干数据向量;Milvus数据库和外部矢量数据库的数据库类型不同,且Milvus数据库和外部矢量数据库的数据向量的比对方法不同。
所述Milvus数据库参数确定方法,包括如下步骤:
S100、获取输入的目标召回率S0;
S200、确定初始nprobe值L1和初始nlist值L2;
S300、从外部矢量数据库中随机取出一数据向量,并将其确定为第一待比对向量;
S400、根据第一待比对向量、L1和L2,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,以得到第一召回率S1;
S500、将第一待比对向量放回外部矢量数据库,从外部矢量数据库中随机取出一数据向量,并将其确定为第二待比对向量;根据第二待比对向量、S0、S1、L1和L2,确定出L1对应的目标nprobe值L3;
S600、根据第二待比对向量、S0、L3和L2,确定出L2对应的目标nlist值L4;
S700、输出L3、L4和S3;其中,S3为根据第二待比对向量、L3和L4分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对后得到的第三召回率;S3≥S0。
在本申请的一种示例性实施例中,步骤S500,包括:
S510、获取L3=L1;
S520、若S0<S1,则执行步骤S530;若S0≥S1,则执行步骤S532;
S530、将数值调整方向确定为第一方向,并执行步骤S531;
S531、获取L3=L3*α,并执行步骤S540;其中,α>1,α为第一预设系数;
S532、将数值调整方向确定为第二方向,并执行步骤S533;其中,第二方向与第一方向互为反方向;
S533、获取L3=L3/α,并执行步骤S540;
S540、根据第二待比对向量、L3和L2,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,以得到第二召回率S2;
S550、若|S2-S1|>β,则执行步骤S560;若|S2-S1|≤β,则执行步骤S600;其中,β为预设的召回率阈值;
S560、在当前的数值调整方向为第一方向时,若S2<S0,则执行步骤S531;若S2≥S0,则执行步骤S600;在当前的数值调整方向为第二方向时,若S2≥S0,则执行步骤S533;若S2<S0,则执行步骤S600。
在本申请的一种示例性实施例中,步骤S600,包括:
S610、获取L4=L2;
S620、若S2<S0,则执行步骤S630;若S2≥S0,则执行步骤S632;
S630、将数值调整方向确定为第二方向,并执行步骤S631;
S631、获取L4=L4*γ,并执行步骤S640;其中,γ<1,γ为第二预设系数;
S632、将数值调整方向确定为第一方向,并执行步骤S633;
S633、获取L4=L4/γ,并执行步骤S640;
S640、根据第二待比对向量、L3和L4,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,以得到第三召回率S3;
S650、在当前的数值调整方向为第二方向时,若S3<S0,则执行步骤S631;若S3≥S0,则执行步骤S700;在当前的数值调整方向为第一方向时,若S3≥S0,则执行步骤S633;若S3<S0,则执行步骤S660;
S660、获取L4=L4*γ,并执行步骤S700。
在本申请的一种示例性实施例中,初始nlist值L2=4m1/2,其中,m为Milvus数据库的数据存储层的数据段中实体的最大存储容量。
在本申请的一种示例性实施例中,初始nprobe值L1,通过以下步骤确定:
S210、获取L0=L2*b;其中,b为预设的参数系数,b<1;
S220、若L0<d,则确定L1=d;若L0≥d,则确定L1=L0;其中,d为预设的参数阈值。
在本申请的一种示例性实施例中,步骤S400,包括:
S410、根据L1和L2,将第一待比对向量与Milvus数据库中每一数据向量进行向量比对处理,获取第一待比对向量与Milvus数据库中每一数据向量之间的相似度,得到第一相似度集Q={Q1,Q2,……,Qi,……,Qn};其中,i=1,2,……,n;n为Milvus数据库中数据向量的数量;Qi为第一待比对向量与Milvus数据库中第i个数据向量之间的相似度;
S420、根据L1和L2,将第一待比对向量与外部矢量数据库中每一数据向量进行向量比对处理,获取第一待比对向量与外部矢量数据库中除第一待比对向量以外的每一数据向量之间的相似度,得到第二相似度集E={E1,E2,……,Ej,……,En-1};其中,j=1,2,……,n-1;Ej为第一待比对向量与外部矢量数据库中第j个数据向量之间的相似度;
S430、按照数值递减,对Q1,Q2,……,Qi,……,Qn进行排序,以得到第一排序列表W={W1,W2,……,Wi,……,Wn};其中,Wi为W中第i个相似度;
S440、按照数值递减,对E1,E2,……,Ej,……,En-1进行排序,以得到第二排序列表F={F1,F2,……,Fj,……,Fn-1};其中,Fj为F中第j个相似度;
S450、将W1,W2,……,Wg,……,Wk对应的数据向量确定为第一匹配向量,获取每一第一匹配向量,得到第三相似度集Y={Y1,Y2,……,Yg,……,Yk};其中,g=1,2,……,k;k为Y中相似度的数量;k≤n-1;Wg为W中第g个相似度;Yg为Y中第g个相似度;W1,W2,……,Wg,……,Wk为W中前k个相似度;
S460、将F1,F2,……,Fg,……,Fk对应的数据向量确定为第二匹配向量,获取每一第二匹配向量,得到第四相似度集Z={Z1,Z2,……,Zg,……,Zk};其中,Fg为F中第g个相似度;Zg为Z中第g个相似度;F1,F2,……,Fg,……,Fk为F中前k个相似度;
S470、确定第一召回率S1=a/k;其中,a为Y和Z的交集中的相似度的数量。
在本申请的一种示例性实施例中,步骤S200,包括:
S201、获取输入的原始nprobe值NL1和原始nlist值NL2;
S202、若NL1≥d,且NL1≤NL2*b;则确定L1=NL1,L2=NL2。
在本申请的一种示例性实施例中,在步骤S300之后,该方法还包括:
S310、进行与Milvus数据库的数据连通测试;若数据连通成功,则执行步骤S320;若数据连通失败,则发送连通失败提示;
S320、进行与外部矢量数据库的数据连通测试;若数据连通成功,则执行步骤S400;若数据连通失败,则发送连通失败提示。
根据本申请的一个方面,提供一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现所述Milvus数据库参数确定方法。
根据本申请的一个方面,提供一种电子设备,包括处理器和所述非瞬时性计算机可读存储介质。
本发明至少具有以下有益效果:
本发明的Milvus数据库参数确定方法,根据第一待比对向量、初始nprobe值L1和初始nlist值L2,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,得到第一召回率S1,对比S1和S0,确定nprobe值的数值调整方向,并对L3赋值,根据第二待比对向量、L3和L2,得到第二召回率S2,若S2与S1的差值不大于召回率阈值,则将L3确定为目标nprobe值;再对比S2和S0,确定nlist值的数值调整方向,并对L4赋值,根据第二待比对向量、L3和L4,得到第三召回率S3,若S3不小于S0,则将L4确定为目标nlist值。以每次得出的召回率与目标召回率做比较,来确定nprobe值和nlist值的枚举方向,使得可在短时间内获取准确的nprobe值和nlist值,较现有技术需用大量数据递归遍历nprobe值和nlist值并计算召回率的枚举实验相比,本发明的枚举实验次数少且获得的nprobe值和nlist值更为精确,实验人员无需制定复杂的实验方案即可确定nprobe值和nlist值并立即进行Milvus数据库的使用,用户在使用Milvus数据库进行数据向量检索时也无需输入nprobe值和nlist值,简便了用户的处理过程。且通过确定的nprobe值和nlist值与对应得到的召回率做参数记录表,便于在用户输入目标召回率时,即可通过查询参数记录表得知对应的nprobe值和nlist值,而不用再次进行参数实验。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的Milvus数据库参数确定方法的流程图;
图2为本发明实施例提供的参数确定系统的连接示意图;
图3为本发明实施例提供的nprobe参数和召回率之间的关系图;
图4为本发明实施例提供的nlist参数和召回率之间的关系图;
图5为本发明实施例提供的nprobe参数和实验所用时长之间的关系图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
Milvus数据库为一种数据向量库,旨在解决人工智能和深度学习大发展环境下数据向量在普通关系型数据库中检索效率太低的问题。Milvus数据库通过使用多种索引来实现数据向量的高效率检索,其中,包括IVF-FLAT(倒序索引)、IVF-SQ8(特征索引)、HNSW(结构索引)等索引手段。使用索引检索避免了全表查询,极大的提升了检索效率。
但使用索引进行数据向量的检索虽提升了效率,但还存在召回率降低的问题。目前使用较多的为IVF-SQ8索引,在建立索引和检索时,需要用到的主要参数为nlist和nprobe,nlist为在进行数据向量检索时所有向量的组数,nprobe为在进行数据向量检索时相似向量的组数。经实验证明,nlist和nprobe对召回率和检索时间有着很大的影响。虽然Milvus官方给出了nlist的推荐设置值,但多种实验证明推荐值并不能适配所有场景。nprobe的设置也没有确切的值,需要大量实验才可得出,会耗费大量时间。另外,召回率作为评判检索效果的量值。目前的一些计算方法无法准确反映索引在多种数据上的表现,所以,就需提供一种可以通过不同的枚举规则来精确获得数据向量的检索参数(nlist和nprobe)的方法。
具体的,Milvus数据库参数确定方法,如图2所示,应用于参数确定系统,参数确定系统通信连接有Milvus数据库和外部矢量数据库,外部矢量数据库为矢量数据库,外部矢量数据库与Milvus数据库均存储有若干数据向量;Milvus数据库和外部矢量数据库的数据库类型不同,且Milvus数据库和外部矢量数据库的数据向量的比对方法不同。
参数确定系统为根据不同的nlist和nprobe的取值来确定输出的目标nlist和目标nprobe的测试系统,外部矢量数据库为Milvus数据库的对比数据库,其作用为根据不同取值的nlist和nprobe来输出不同的召回率,通过输出的召回率和用户输入的召回率之间的比较来确定nlist和nprobe的目标取值。
所述Milvus数据库参数确定方法,如图1所示,包括如下步骤:
S100、获取输入的目标召回率S0;
目标召回率S0为用户或测试员输入的召回率值,为最终要确定的nlist和nprobe对应的召回率值或最接近的召回率值;
S200、确定初始nprobe值L1和初始nlist值L2;
初始nprobe值L1和初始nlist值L2有两种方法确定,一种为用户输入的初始值,一种为根据Milvus数据库的结构特性得到的初始值。
进一步,步骤S200,包括:
S201、获取输入的原始nprobe值NL1和原始nlist值NL2;
S202、若NL1≥d,且NL1≤NL2*b;则确定L1=NL1,L2=NL2;其中,b为预设的参数系数,b<1;d为预设的参数阈值。
步骤S201和S202即为初始nprobe值L1和初始nlist值L2的第一种确定方法,原始nprobe值NL1和原始nlist值NL2即为用户输入的初始值,但为了保证用户输入的初始值为正确参数,或符合数据向量检索的参数,就需对NL1和NL2进行判断比较。只有同时满足NL1≥d且NL1≤NL2*b两个条件,才能将NL1确定为L1,将NL2确定为L2,b为NL1和NL2之间的关联系数,一般取1/32,d为参数阈值,一般取8,因为要进行数据向量检索的nprobe参数值不能小于参数阈值,所以,通过NL1≥d这个条件来确定用户输入的NL1是否满足条件,若NL1和NL2同时满足此两个条件,则优先选用用户输入的NL1和NL2,若用户输入的NL1和NL2不满足上述其中一个条件,则返回输入参数不满足条件提示,以告知用户其输入的NL1和NL2不满足数据向量检索条件,需重新输入,若用户选择不再输入,或用户在开始阶段也未输入NL1和NL2,则参数确定系统选用第二种初始nprobe值L1和初始nlist值L2的确定方法。
第二种初始nprobe值L1和初始nlist值L2的确定方法为:
S203、初始nlist值L2=4m1/2,其中,m为Milvus数据库的数据存储层的数据段中实体的最大存储容量;
S210、获取L0=L2*b;
S220、若L0<d,则确定L1=d;若L0≥d,则确定L1=L0;
初始nprobe值L1和初始nlist值L2的第二种确定方法中,是在用户未输入原始nprobe值NL1和原始nlist值NL2的情况下进行的,先获取Milvus数据库的数据存储层的数据段中实体的最大存储容量m,再将m取根号乘4,得到初始nlist值L2,再将L2乘关联系数b得到L0,判断L0是否小于预设的参数阈值d,若是,则表示得到的L0不符合数据向量检索的nprobe参数值的要求,则将L1取参数阈值d;若否,则表示得到的L0符合数据向量检索的nprobe参数值的要求,则将L0确定为L1;
S300、从外部矢量数据库中随机取出一数据向量,并将其确定为第一待比对向量;
因为外部矢量数据库为Milvus数据库的对比数据库,所以,从中随机取出一个数据向量作为第一待比对向量,用于做后续的向量比对工作。
S400、根据第一待比对向量、L1和L2,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,以得到第一召回率S1;
由于已经确定出了L1和L2,就需以第一待比对向量作为输入向量,以L1和L2作为初始的数据向量检索参数,分别与Milvus数据库和外部矢量数据库中每一数据向量进行向量比对,再根据向量比对的结果得到第一次向量检索的召回率S1。
具体的,步骤S400,包括:
S410、根据L1和L2,将第一待比对向量与Milvus数据库中每一数据向量进行向量比对处理,获取第一待比对向量与Milvus数据库中每一数据向量之间的相似度,得到第一相似度集Q={Q1,Q2,……,Qi,……,Qn};其中,i=1,2,……,n;n为Milvus数据库中数据向量的数量;Qi为第一待比对向量与Milvus数据库中第i个数据向量之间的相似度;
S420、根据L1和L2,将第一待比对向量与外部矢量数据库中每一数据向量进行向量比对处理,获取第一待比对向量与外部矢量数据库中除第一待比对向量以外的每一数据向量之间的相似度,得到第二相似度集E={E1,E2,……,Ej,……,En-1};其中,j=1,2,……,n-1;Ej为第一待比对向量与外部矢量数据库中第j个数据向量之间的相似度;
S430、按照数值递减,对Q1,Q2,……,Qi,……,Qn进行排序,以得到第一排序列表W={W1,W2,……,Wi,……,Wn};其中,Wi为W中第i个相似度;
S440、按照数值递减,对E1,E2,……,Ej,……,En-1进行排序,以得到第二排序列表F={F1,F2,……,Fj,……,Fn-1};其中,Fj为F中第j个相似度;
S450、将W1,W2,……,Wg,……,Wk对应的数据向量确定为第一匹配向量,获取每一第一匹配向量,得到第三相似度集Y={Y1,Y2,……,Yg,……,Yk};其中,g=1,2,……,k;k为Y中相似度的数量;k≤n-1;Wg为W中第g个相似度;Yg为Y中第g个相似度;W1,W2,……,Wg,……,Wk为W中前k个相似度;
S460、将F1,F2,……,Fg,……,Fk对应的数据向量确定为第二匹配向量,获取每一第二匹配向量,得到第四相似度集Z={Z1,Z2,……,Zg,……,Zk};其中,Fg为F中第g个相似度;Zg为Z中第g个相似度;F1,F2,……,Fg,……,Fk为F中前k个相似度;
S470、确定第一召回率S1=a/k;其中,a为Y和Z的交集中的相似度的数量;
步骤S400中,先根据L1和L2,将第一待比对向量与Milvus数据库中每一数据向量进行向量比对处理,得到第一待比对向量与Milvus数据库中每一数据向量做向量比对的相似度集Q,再根据L1和L2,将第一待比对向量与外部矢量数据库中每一数据向量进行向量比对处理,得到第一待比对向量与外部矢量数据库中每一数据向量做向量比对的相似度集E,再分别对Q和E中的所有相似度根据数值由大到小进行排序,各选择排序后的前k个相似度,由于外部矢量数据库与Milvus数据库的向量比对方法不同,所以,同一个数据向量在两个数据库中所得到的相似度的值也可能不同,选两个排序后的相似度集合中各前k个相似度做相交处理,得到相交后的相似度的数量a,再将a与k做比值,得到第一召回率S1。
如图5所示,由于nprobe值对召回率和耗时的影响较大,且改变nlist值需要重建索引,耗时较高,因此,优先考虑枚举nprobe值,先确定目标nprobe值,再确定目标nlist值。
S500、将第一待比对向量放回外部矢量数据库,从外部矢量数据库中随机取出一数据向量,并将其确定为第二待比对向量;根据第二待比对向量、S0、S1、L1和L2,确定出L1对应的目标nprobe值L3;
得出第一召回率S1后,将S1和S0做数值比较,再根据比较结果和不同的枚举方向,确定出目标nprobe值L3。
具体的,步骤S500,包括:
S510、获取L3=L1;
S520、若S0<S1,则执行步骤S530;若S0≥S1,则执行步骤S532;
S530、将数值调整方向确定为第一方向,并执行步骤S531;
S531、获取L3=L3*α,并执行步骤S540;其中,α>1,α为第一预设系数;α根据现有技术中nprobe参数测试的枚举规则而定,从大于1的最小整数开始枚举,α越大,则L3也对应越大;
S532、将数值调整方向确定为第二方向,并执行步骤S533;其中,第二方向与第一方向互为反方向;
S533、获取L3=L3/α,并执行步骤S540;
S540、根据第二待比对向量、L3和L2,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,以得到第二召回率S2;
S550、若|S2-S1|>β,则执行步骤S560;若|S2-S1|≤β,则执行步骤S600;其中,β为预设的召回率阈值;β根据现有技术中召回率测试的阈值而定;
S560、在当前的数值调整方向为第一方向时,若S2<S0,则执行步骤S531;若S2≥S0,则执行步骤S600;在当前的数值调整方向为第二方向时,若S2≥S0,则执行步骤S533;若S2<S0,则执行步骤S600;
步骤S500为目标nprobe值L3的确定方法步骤,先将L1赋值给L3,再对比S0和S1的数值大小,若S0<S1,则将第一方向确定为数值调整方向,即枚举方向为第一方向,再将L3*α赋值给新的L3;若S0≥S1,则将第二方向确定为数值调整方向,即枚举方向为第二方向,再将L3/α赋值给新的L3,再根据当前的L3、L2,将第二待比对向量与Milvus数据库和外部矢量数据库中的每一数据向量分别进行向量比对,得到第二召回率S2。
如图3所示,通过现有的数据向量比对实验可知,随着nprobe值的增大,召回率增长率会逐渐减小,最终会接近某一个值,因此,当枚举nprobe值时,只要上一轮的召回率与本轮的召回率相差在一个阈值内时,就结束nprobe值的枚举,将当前nprobe值确定为目标nprobe值,也加快了实验速度,缩小了参数确定的时间。所以,在得到第二召回率S2后,将S2与S1做差值,并取绝对值,将差值与召回率阈值β做比较,若大于β,则说明该轮数据向量比对得到的召回率与上轮数据向量比对得到的召回率的差值偏大,可以继续按照原数值调整方向来对nprobe值进行数值大小调整,直到某一轮数据向量比对的召回率和其上轮数据向量比对的召回率的差值小于等于β或某一轮数据向量比对的召回率高于或低于目标召回率为止,高于或低于目标召回率的判断条件以步骤S560中所述为判断依据;若差值不大于β,则说明该轮数据向量比对得到的召回率与上轮数据向量比对得到的召回率的差值较小,说明再继续调整nprobe值,对召回率的影响也不大,所以,将此时的L3确定为目标nprobe值。
第一方向为召回率减小方向,目的是为了调小召回率;第二方向为召回率增大方向,目的是为了增大召回率,以使每轮数据向量比对得到的召回率更接近目标召回率。
S600、根据第二待比对向量、S0、L3和L2,确定出L2对应的目标nlist值L4;
确定出目标nprobe值L3后,将S2和S0做数值比较,再根据比较结果和不同的枚举方向,确定出目标nlist值L4。
具体的,步骤S600,包括:
S610、获取L4=L2;
S620、若S2<S0,则执行步骤S630;若S2≥S0,则执行步骤S632;
S630、将数值调整方向确定为第二方向,并执行步骤S631;
S631、获取L4=L4*γ,并执行步骤S640;其中,γ<1,γ为第二预设系数;γ根据现有技术中nlist参数测试的枚举规则而定,γ越小,得到的下一个L4越小;
S632、将数值调整方向确定为第一方向,并执行步骤S633;
S633、获取L4=L4/γ,并执行步骤S640;
S640、根据第二待比对向量、L3和L4,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,以得到第三召回率S3;
S650、在当前的数值调整方向为第二方向时,若S3<S0,则执行步骤S631;若S3≥S0,则执行步骤S700;在当前的数值调整方向为第一方向时,若S3≥S0,则执行步骤S633;若S3<S0,则执行步骤S660;
S660、获取L4=L4*γ,并执行步骤S700;
步骤S600为目标nlist值L4的确定方法步骤,其与目标nprobe值L3的确定方法相同,先将L2赋值给L4,再对比S2和S0的数值大小,若S2<S0,则将第一方向确定为数值调整方向,即枚举方向为第一方向,再将L4*γ赋值给新的L4;若S2≥S0,则将第二方向确定为数值调整方向,即枚举方向为第二方向,再将L4/γ赋值给新的L4,再根据当前的L4、L3,将第二待比对向量与Milvus数据库和外部矢量数据库中的每一数据向量分别进行向量比对,得到第三召回率S3。
在确定目标nprobe值L3和目标nlist值L4时,所进行的每轮向量比对的待比对向量可以采用上一轮的待比对向量,即第二待比对向量,也可将第二待比对向量放回外部矢量数据库中,再从外部矢量数据库中重新随机取出一个待比对向量作为第三待比对向量,进行新一轮的向量比对,确保每轮向量比对所产生的召回率之间没有关联,保证得到的召回率和nprobe、nlist参数的准确性。且目标nprobe值L3和目标nlist值L4的确定方法在实际测试时是同时进行的,即确定目标nprobe值时,随即也确定了目标nlist值,但为了说明两个参数的不同测试步骤,本发明的参数确定方法特将其分开说明。
如图4所示,通过现有的数据向量比对实验可知,随着nlist值的增大,召回率会逐渐减小,nlist参数和召回率为负相关。因此,当数值调整方向为第一方向,即召回率减小方向时,就要增大nlist值,反之,数值调整方向为第二方向,即召回率增大方向时,就要减小nlist值。再根据当前的L3和L4,将第二待比对向量与Milvus数据库和外部矢量数据库中的每一数据向量进行向量比对,得到第三召回率S3。再判断S3和S0的数值大小,若当前数值调整方向为第二方向,且S3<S0,则表示此时的召回率还未达到目标召回率的标准或高于目标召回率,还需要对nlist值继续减小,直至得到的召回率高于或等于目标召回率时,将当前的召回率对应的L4确定为目标nlist值;若当前数值调整方向为第二方向,且S3≥S0,则表示此时的召回率已经达到目标召回率的标准(等于或高于目标召回率),则将此时的L4确定为目标nlist值;若当前数值调整方向为第一方向,且S3≥S0,则表示此时的召回率还未接近目标召回率,还需要对nlist值继续增大,使得到的召回率继续降低,直至得到的召回率低于目标召回率时,将上一轮的召回率对应的L4确定为目标nlist值;若当前数值调整方向为第一方向,且S3<S0,则表示此时的召回率已经不满足目标召回率的标准,则将上一轮的召回率对应的L4确定为目标nlist值。
步骤S500和步骤S600中的向量比对的方法与步骤S400相同,只是做向量比对的nprobe参数和nlist参数不同,其召回率的获得方法是相同的。
S700、输出L3、L4和S3;其中,S3为根据第二待比对向量、L3和L4分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对后得到的第三召回率;S3≥S0。
此外,在步骤S300之后,还需对Milvus数据库和外部矢量数据库做数据向量比对前的数据连通测试方法,具体为:
S310、进行与Milvus数据库的数据连通测试;若数据连通成功,则执行步骤S320;若数据连通失败,则发送连通失败提示;
S320、进行与外部矢量数据库的数据连通测试;若数据连通成功,则执行步骤S400;若数据连通失败,则发送连通失败提示。
本发明的Milvus数据库参数确定方法,根据第一待比对向量、初始nprobe值L1和初始nlist值L2,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,得到第一召回率S1,对比S1和S0,确定nprobe值的数值调整方向,并对L3赋值,根据第二待比对向量、L3和L2,得到第二召回率S2,若S2与S1的差值不大于召回率阈值,则将L3确定为目标nprobe值;再对比S2和S0,确定nlist值的数值调整方向,并对L4赋值,根据第二待比对向量、L3和L4,得到第三召回率S3,若S3不小于S0,则将L4确定为目标nlist值。以每次得出的召回率与目标召回率做比较,来确定nprobe值和nlist值的枚举方向,使得可在短时间内获取准确的nprobe值和nlist值,较现有技术需用大量数据递归遍历nprobe值和nlist值并计算召回率的枚举实验相比,本发明的枚举实验次数少且获得的nprobe值和nlist值更为精确,实验人员无需制定复杂的实验方案即可确定nprobe值和nlist值并立即进行Milvus数据库的使用,用户在使用Milvus数据库进行数据向量检索时也无需输入nprobe值和nlist值,简便了用户的处理过程。且通过确定的nprobe值和nlist值与对应得到的召回率做参数记录表,便于在用户输入目标召回率时,即可通过查询参数记录表得知对应的nprobe值和nlist值,而不用再次进行参数实验。
本发明的实施例还提供了一种非瞬时性计算机可读存储介质,该存储介质可设置于电子设备之中以保存用于实现方法实施例中一种方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述实施例提供的方法。
本发明的实施例还提供了一种电子设备,包括处理器和前述的非瞬时性计算机可读存储介质。
本发明的实施例还提供一种计算机程序产品,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使该电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的方法中的步骤。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明开的范围由所附权利要求来限定。
Claims (10)
1.一种Milvus数据库参数确定方法,其特征在于,应用于参数确定系统,所述参数确定系统通信连接有Milvus数据库和外部矢量数据库,所述外部矢量数据库与所述Milvus数据库均存储有若干数据向量;所述Milvus数据库和外部矢量数据库的数据库类型不同,且Milvus数据库和外部矢量数据库的数据向量的比对方法不同;
所述Milvus数据库参数确定方法,包括如下步骤:
S100、获取输入的目标召回率S0;
S200、确定初始nprobe值L1和初始nlist值L2;
S300、从所述外部矢量数据库中随机取出一数据向量,并将其确定为第一待比对向量;
S400、根据所述第一待比对向量、L1和L2,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,以得到第一召回率S1;
S500、将所述第一待比对向量放回所述外部矢量数据库,从所述外部矢量数据库中随机取出一数据向量,并将其确定为第二待比对向量;根据第二待比对向量、S0、S1、L1和L2,确定出L1对应的目标nprobe值L3;
S600、根据所述第二待比对向量、S0、L3和L2,确定出L2对应的目标nlist值L4;
S700、输出L3、L4和S3;其中,S3为根据第二待比对向量、L3和L4分别对Milvus数据库中的和外部矢量数据库中的数据向量进行向量比对后得到的第三召回率;S3≥S0。
2.根据权利要求1所述的Milvus数据库参数确定方法,其特征在于,S500中,根据第二待比对向量、S0、S1、L1和L2,确定出L1对应的目标nprobe值L3,包括:
S510、获取L3=L1;
S520、若S0<S1,则执行步骤S530;若S0≥S1,则执行步骤S532;
S530、将数值调整方向确定为第一方向,并执行步骤S531;
S531、获取L3=L3*α,并执行步骤S540;其中,α>1,α为第一预设系数;
S532、将数值调整方向确定为第二方向,并执行步骤S533;其中,所述第二方向与所述第一方向互为反方向;
S533、获取L3=L3/α,并执行步骤S540;
S540、根据第二待比对向量、L3和L2,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,以得到第二召回率S2;
S550、若|S2-S1|>β,则执行步骤S560;若|S2-S1|≤β,则执行步骤S600;其中,β为预设的召回率阈值;
S560、在当前的数值调整方向为第一方向时,若S2<S0,则执行步骤S531;若S2≥S0,则执行步骤S600;在当前的数值调整方向为第二方向时,若S2≥S0,则执行步骤S533;若S2<S0,则执行步骤S600。
3.根据权利要求2所述的Milvus数据库参数确定方法,其特征在于,所述步骤S600,包括:
S610、获取L4=L2;
S620、若S2<S0,则执行步骤S630;若S2≥S0,则执行步骤S632;
S630、将数值调整方向确定为第二方向,并执行步骤S631;
S631、获取L4=L4*γ,并执行步骤S640;其中,γ<1,γ为第二预设系数;
S632、将数值调整方向确定为第一方向,并执行步骤S633;
S633、获取L4=L4/γ,并执行步骤S640;
S640、根据第二待比对向量、L3和L4,分别对Milvus数据库和外部矢量数据库中的数据向量进行向量比对,以得到第三召回率S3;
S650、在当前的数值调整方向为第二方向时,若S3<S0,则执行步骤S631;若S3≥S0,则执行步骤S700;在当前的数值调整方向为第一方向时,若S3≥S0,则执行步骤S633;若S3<S0,则执行步骤S660;
S660、获取L4=L4*γ,并执行步骤S700。
4.根据权利要求1所述的Milvus数据库参数确定方法,其特征在于,所述初始nlist值L2=4m1/2,其中,m为所述Milvus数据库的数据存储层的数据段中实体的最大存储容量。
5.根据权利要求4所述的Milvus数据库参数确定方法,其特征在于,所述初始nprobe值L1,通过以下步骤确定:
S210、获取L0=L2*b;其中,b为预设的参数系数,b<1;
S220、若L0<d,则确定L1=d;若L0≥d,则确定L1=L0;其中,d为预设的参数阈值。
6.根据权利要求1所述的Milvus数据库参数确定方法,其特征在于,所述步骤S400,包括:
S410、根据L1和L2,将所述第一待比对向量与所述Milvus数据库中每一数据向量进行向量比对处理,获取所述第一待比对向量与所述Milvus数据库中每一数据向量之间的相似度,得到第一相似度集Q={Q1,Q2,……,Qi,……,Qn};其中,i=1,2,……,n;n为Milvus数据库中数据向量的数量;Qi为第一待比对向量与Milvus数据库中第i个数据向量之间的相似度;
S420、根据L1和L2,将所述第一待比对向量与所述外部矢量数据库中每一数据向量进行向量比对处理,获取所述第一待比对向量与所述外部矢量数据库中除所述第一待比对向量以外的每一数据向量之间的相似度,得到第二相似度集E={E1,E2,……,Ej,……,En-1};其中,j=1,2,……,n-1;Ej为第一待比对向量与外部矢量数据库中第j个数据向量之间的相似度;
S430、按照数值递减,对Q1,Q2,……,Qi,……,Qn进行排序,以得到第一排序列表W={W1,W2,……,Wi,……,Wn};其中,Wi为W中第i个相似度;
S440、按照数值递减,对E1,E2,……,Ej,……,En-1进行排序,以得到第二排序列表F={F1,F2,……,Fj,……,Fn-1};其中,Fj为F中第j个相似度;
S450、将W1,W2,……,Wg,……,Wk对应的数据向量确定为第一匹配向量,获取每一第一匹配向量,得到第三相似度集Y={Y1,Y2,……,Yg,……,Yk};其中,g=1,2,……,k;k为Y中相似度的数量;k≤n-1;Wg为W中第g个相似度;Yg为Y中第g个相似度;W1,W2,……,Wg,……,Wk为W中前k个相似度;
S460、将F1,F2,……,Fg,……,Fk对应的数据向量确定为第二匹配向量,获取每一第二匹配向量,得到第四相似度集Z={Z1,Z2,……,Zg,……,Zk};其中,Fg为F中第g个相似度;Zg为Z中第g个相似度;F1,F2,……,Fg,……,Fk为F中前k个相似度;
S470、确定第一召回率S1=a/k;其中,a为Y和Z的交集中的相似度的数量。
7.根据权利要求5所述的Milvus数据库参数确定方法,其特征在于,所述步骤S200,包括:
S201、获取输入的原始nprobe值NL1和原始nlist值NL2;
S202、若NL1≥d,且NL1≤NL2*b;则确定L1=NL1,L2=NL2。
8.根据权利要求1所述的Milvus数据库参数确定方法,其特征在于,在所述步骤S300之后,该方法还包括:
S310、进行与所述Milvus数据库的数据连通测试;若数据连通成功,则执行步骤S320;若数据连通失败,则发送连通失败提示;
S320、进行与所述外部矢量数据库的数据连通测试;若数据连通成功,则执行步骤S400;若数据连通失败,则发送连通失败提示。
9.一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,其特征在于,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-8中任意一项所述的Milvus数据库参数确定方法。
10.一种电子设备,其特征在于,包括处理器和权利要求9中所述的非瞬时性计算机可读存储介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211427710.3A CN115599791B (zh) | 2022-11-15 | 2022-11-15 | 一种Milvus数据库参数确定方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211427710.3A CN115599791B (zh) | 2022-11-15 | 2022-11-15 | 一种Milvus数据库参数确定方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115599791A CN115599791A (zh) | 2023-01-13 |
CN115599791B true CN115599791B (zh) | 2023-03-10 |
Family
ID=84853113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211427710.3A Active CN115599791B (zh) | 2022-11-15 | 2022-11-15 | 一种Milvus数据库参数确定方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599791B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177435A (zh) * | 2019-12-31 | 2020-05-19 | 重庆邮电大学 | 一种基于改进pq算法的cbir方法 |
CN112836077A (zh) * | 2021-01-21 | 2021-05-25 | 携程旅游网络技术(上海)有限公司 | 特定人物检索方法、系统、设备及存储介质 |
CN113918697A (zh) * | 2021-10-12 | 2022-01-11 | 上海掌数科技有限公司 | 一种智能问答系统的优化方法以及优化系统 |
CN114218210A (zh) * | 2021-11-22 | 2022-03-22 | 上海赜睿信息科技有限公司 | 一种数据处理方法、装置和电子设备 |
CN114238632A (zh) * | 2021-12-09 | 2022-03-25 | 北京金山数字娱乐科技有限公司 | 一种多标签分类模型训练方法、装置及电子设备 |
CN114428834A (zh) * | 2021-12-27 | 2022-05-03 | 北京百度网讯科技有限公司 | 检索方法、装置、电子设备及存储介质 |
CN114443483A (zh) * | 2022-01-28 | 2022-05-06 | 以萨技术股份有限公司 | 人工智能系统的测试方法、装置、电子设备及介质 |
CN114494943A (zh) * | 2021-12-29 | 2022-05-13 | 以萨技术股份有限公司 | 新型视频目标检测评价方法、装置、产品及存储介质 |
CN114937246A (zh) * | 2022-07-06 | 2022-08-23 | 中航信移动科技有限公司 | 一种行人识别方法、电子设备及存储介质 |
CN115238053A (zh) * | 2022-07-19 | 2022-10-25 | 东北大学 | 基于bert模型的新冠知识智能问答系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108985232A (zh) * | 2018-07-18 | 2018-12-11 | 平安科技(深圳)有限公司 | 人脸图像比对方法、装置、计算机设备及存储介质 |
-
2022
- 2022-11-15 CN CN202211427710.3A patent/CN115599791B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177435A (zh) * | 2019-12-31 | 2020-05-19 | 重庆邮电大学 | 一种基于改进pq算法的cbir方法 |
CN112836077A (zh) * | 2021-01-21 | 2021-05-25 | 携程旅游网络技术(上海)有限公司 | 特定人物检索方法、系统、设备及存储介质 |
CN113918697A (zh) * | 2021-10-12 | 2022-01-11 | 上海掌数科技有限公司 | 一种智能问答系统的优化方法以及优化系统 |
CN114218210A (zh) * | 2021-11-22 | 2022-03-22 | 上海赜睿信息科技有限公司 | 一种数据处理方法、装置和电子设备 |
CN114238632A (zh) * | 2021-12-09 | 2022-03-25 | 北京金山数字娱乐科技有限公司 | 一种多标签分类模型训练方法、装置及电子设备 |
CN114428834A (zh) * | 2021-12-27 | 2022-05-03 | 北京百度网讯科技有限公司 | 检索方法、装置、电子设备及存储介质 |
CN114494943A (zh) * | 2021-12-29 | 2022-05-13 | 以萨技术股份有限公司 | 新型视频目标检测评价方法、装置、产品及存储介质 |
CN114443483A (zh) * | 2022-01-28 | 2022-05-06 | 以萨技术股份有限公司 | 人工智能系统的测试方法、装置、电子设备及介质 |
CN114937246A (zh) * | 2022-07-06 | 2022-08-23 | 中航信移动科技有限公司 | 一种行人识别方法、电子设备及存储介质 |
CN115238053A (zh) * | 2022-07-19 | 2022-10-25 | 东北大学 | 基于bert模型的新冠知识智能问答系统及方法 |
Non-Patent Citations (3)
Title |
---|
Xinpeng Liu.Interactiveness Field in Human-Object Interactions.2022,全文. * |
王景宽.智能对话系统的设计与实现.2022,全文. * |
郭玉栋 ; 左金平 ; .大数据下数据库引文索引匹配误差检测仿真.2020,(02),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN115599791A (zh) | 2023-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6915295B2 (en) | Information searching method of profile information, program, recording medium, and apparatus | |
KR20010008890A (ko) | 내용기반 이미지 검색의 자동 피드백을 통한 특징소 가중치 학습 제어방법 | |
CN114418035A (zh) | 决策树模型生成方法、基于决策树模型的数据推荐方法 | |
CN113642652A (zh) | 生成融合模型的方法、装置和设备 | |
JP3315781B2 (ja) | 利用者情報管理装置、情報フィルタ、情報分類装置、情報再生装置、情報検索装置及び仮名漢字変換装置 | |
CN114706840A (zh) | 面向负载感知的多模数据库ArangoDB参数调优的方法 | |
CN116401345A (zh) | 智能问答方法、装置、存储介质和设备 | |
CN103678513A (zh) | 一种交互式的检索式生成方法及系统 | |
CN115599791B (zh) | 一种Milvus数据库参数确定方法、设备及存储介质 | |
CN117312276B (zh) | 一种关系型数据库至图数据库的数据迁移方法 | |
US7177863B2 (en) | System and method for determining internal parameters of a data clustering program | |
CN113204642A (zh) | 文本聚类方法、装置、存储介质和电子设备 | |
CN116955538A (zh) | 医疗字典数据匹配方法及装置、电子设备及存储介质 | |
CN109918401B (zh) | 建筑工程清单数据处理方法、装置、存储介质和计算机设备 | |
CN116660756A (zh) | 基于条件生成对抗网络的电池容量衰减曲线生成方法 | |
CN116468102A (zh) | 刀具图像分类模型剪枝方法、装置、计算机设备 | |
CN109828996A (zh) | 一种不完备数据集快速属性约简方法 | |
CN114547286A (zh) | 一种信息搜索方法、装置及电子设备 | |
CN115880508A (zh) | 图像数据处理方法、装置、设备以及存储介质 | |
CN115544230A (zh) | 一种问句答案检索处理方法及装置 | |
CN112241407B (zh) | 高尔夫球场会员数据处理方法、客户管理系统及存储介质 | |
CN114996303A (zh) | 调用数据库的代价因子的校准方法、装置、设备及介质 | |
CN110502660B (zh) | 一种弱监督下的多距离度量图像检索方法 | |
CN114168625A (zh) | 一种语法树的优化方法、装置 | |
US7577649B2 (en) | Engine for validating proposed changes to an electronic entity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |