一种向量搜索方法技术

技术编号:39418892 阅读:12 留言:0更新日期:2023-11-19 16:08
本申请提供了一种基于

【技术实现步骤摘要】
一种向量搜索方法、系统、电子设备和存储介质


[0001]本申请涉及大数据
,尤其涉及一种基于
Go
语言的向量搜索方法

系统

电子设备和存储介质


技术介绍

[0002]随着经济和信息化技术的发展,企业需要处理和存储的数据量大幅增长,为了实现数据的聚类存储,现有的数据计算领域通常使用多维向量存储数据

数据计算领域,所谓的多维向量即用
(a

b

c

d


)
表示数据,其中,
a、b、c、d
等每个元素都是一个维度上的数据取值

在大数据领域的计算对象基本都是这种格式的向量

[0003]通常情况下,多维数据向量大多使用关系数据库存储,然而传统的关系数据库和搜索引擎通常难以高效地处理海量高维向量数据

为了解决上述问题,近年来,基于向量的检索和推荐系统变得越来越流行,因为这些检索和推荐系统能够处理大规模的向量数据,并提供更精准的搜索和推荐结果

例如:清华大学公开了一种基于柯西分布哈希方法的高维数据检索申请
(CN107992611A)
,该检索方案包括以下步骤:
S1、
将待检索的数据点对应的高维数据输入训练好的相似检索模型中,获取待检索的数据点对应的哈希编码,其中,相似检索模型为神经网络模型且包括哈希编码模块;
S2、
将哈希编码输入相似检索模型的倒排索引单元中,获取与哈希编码的汉明距离小于或者等于预设值的桶;
S3、
对桶中的所有高维数据进行重排序,获取相似高维数据列表,将相似高维数据列表作为检索结果

[0004]上述方法虽然能够加快检索效率,保证检索精度,然而上述基于向量的检索和推荐方法存在难以处理高维度的海量数据和低效检索的问题

[0005]申请内容
[0006]本申请提供一种基于
Go
语言的向量搜索方案,能够解决现有技术中基于向量的检索和推荐方法存在难以处理高维度的海量数据和低效检索的问题

[0007]为解决上述问题,根据本申请的第一方面,本申请提出了一种基于
Go
语言的向量搜索方法,包括:
[0008]采集原始文本数据,根据向量空间模型算法对原始文本数据进行数据清洗处理,构建得到原始文本数据对应的向量空间模型;
[0009]根据
Go
语言的向量排序算法和相似度算法,建立向量空间模型对应的词向量索引;
[0010]接收客户端的词向量搜索请求,计算词向量搜索请求与词向量索引中所有词向量的相似度,根据相似度搜索得到预定数量个最相似的词向量;
[0011]将预定数量个最相似的词向量对应单词数据,反馈至客户端

[0012]优选的,上述向量搜索方法中,根据向量空间模型算法对原始文本数据进行数据清洗处理,构建得到原始文本数据对应的向量空间模型的步骤,包括:
[0013]对原始文本数据进行分词处理,得到原始文本数据包含的所有单词数据;
[0014]使用词汇过滤网络模型过滤所有单词数据中的特殊词汇和特殊符号,得到过滤后
的单词文本;
[0015]统计过滤后的单词文本中每个单词数据的出现次数,得到词频向量;
[0016]对原始文本数据中所有文档统计词频向量,得到文档向量;
[0017]对文档向量进行编码,得到向量空间模型并存储向量空间模型

[0018]优选的,上述向量搜索方法中,对文档向量进行编码,得到向量空间模型并存储向量空间模型的步骤,包括:
[0019]将分布式存储数据库划分为多个存储分片;
[0020]分别获取所有文档向量对应的不同向量空间模型;
[0021]分别将不同文档向量对应的向量空间模型添加至分布式存储数据库的不同存储分片;
[0022]使用
Go
语言编写的分片管理器,管理不同存储分片之间的通信和协调;
[0023]当分片管理器接收到词向量搜索请求时,将词向量搜索请求发送至对应存储分片,查找存储分片的搜索结果;
[0024]使用分片管理器汇总不同分片的搜索结果

[0025]优选的,上述向量搜索方法中,根据
Go
语言的向量排序算法和相似度算法,建立向量空间模型对应的词向量索引的步骤,包括:
[0026]使用数据结构存储向量空间模型,得到词向量数据结构;
[0027]定义词向量数据结构的向量排序算法;
[0028]使用
Go
语言的数学函数库定义距离计算函数,使用距离计算函数构建得到相似度算法;
[0029]使用哈希表建立词向量索引的的倒排索引方式;
[0030]选择词向量模型,使用词向量模型对词向量数据结构进行机器学习,生成词向量数据结构中每个单词数据对应的词向量;
[0031]使用
Go
语言的数学函数库对所有词向量进行归一化处理;
[0032]使用向量排序算法,按照词频向量从高到低顺序对归一化处理的所有词向量进行排序;
[0033]遍历排序后的所有词向量,使用相似度算法计算排序后的每一词向量与当前排名前预定数量其他词向量的相似度;
[0034]提取相似度大于或等于预定阈值的所有其他词向量,作为词向量的词向量索引

[0035]优选的,上述向量搜索方法中,接收客户端的词向量搜索请求,计算词向量搜索请求与词向量索引中所有词向量的相似度,根据相似度搜索得到预定数量个最相似的词向量的步骤,包括:
[0036]接收客户端的词向量搜索请求,提取词向量搜索请求中的查询词向量;
[0037]使用倒排索引方式查找查询词向量对应的词向量索引,计算查询词向量与词向量索引中所有词向量的相似度;
[0038]按照相似度从高到低的顺序对词向量索引中所有词向量进行排序;
[0039]选取序列前预定数量的词向量对应单词数据作为词向量搜索请求的搜索结果

[0040]优选的,上述向量搜索方法中,接收客户端的词向量搜索请求,计算词向量搜索请求与词向量索引中所有词向量的相似度,根据相似度搜索得到预定数量个最相似的词向量
的步骤,包括:
[0041]使用
Go
语言创建
Http
服务器,使用
Http
服务器监听客户端发送的词向量搜索请求;
[0042]当
Http
服务器接收到多个词向量搜索请求时,为每个词向量搜索请求创建对应的
Go
语言搜索引擎;
[0043]使用
Go
语言搜索引擎解析词本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于
Go
语言的向量搜索方法,其特征在于,包括:采集原始文本数据,根据向量空间模型算法对所述原始文本数据进行数据清洗处理,构建得到所述原始文本数据对应的向量空间模型;根据
Go
语言的向量排序算法和相似度算法,建立所述向量空间模型对应的词向量索引;接收客户端的词向量搜索请求,计算所述词向量搜索请求与所述词向量索引中所有词向量的相似度,根据所述相似度搜索得到预定数量个最相似的词向量;将所述预定数量个最相似的词向量对应的单词数据反馈至所述客户端
。2.
根据权利要求1所述的向量搜索方法,其特征在于,所述根据向量空间模型算法对所述原始文本数据进行数据清洗处理,构建得到所述原始文本数据对应的向量空间模型的步骤,包括:对所述原始文本数据进行分词处理,得到所述原始文本数据包含的所有单词数据;使用词汇过滤网络模型过滤所述所有单词数据中的特殊词汇和特殊符号,得到过滤后的单词文本;统计所述过滤后的单词文本中每个单词数据的出现次数,得到词频向量;对所述原始文本数据中所有文档统计词频向量,得到文档向量;对所述文档向量进行编码,得到所述向量空间模型并存储所述向量空间模型
。3.
根据权利要求2所述的向量搜索方法,其特征在于,所述对所述文档向量进行编码,得到所述向量空间模型并存储所述向量空间模型的步骤,包括:将分布式存储数据库划分为多个存储分片;分别获取所有文档向量对应的不同向量空间模型;分别将不同文档向量对应的向量空间模型添加至分布式存储数据库的不同存储分片;使用
Go
语言编写的分片管理器,管理不同存储分片之间的通信和协调;当所述分片管理器接收到所述词向量搜索请求时,将所述词向量搜索请求发送至对应存储分片,查找所述存储分片的搜索结果;使用所述分片管理器汇总不同分片的搜索结果
。4.
根据权利要求1或2所述的向量搜索方法,其特征在于,所述根据
Go
语言的向量排序算法和相似度算法,建立所述向量空间模型对应的词向量索引的步骤,包括:使用数据结构存储所述向量空间模型,得到词向量数据结构;定义所述词向量数据结构的向量排序算法;使用所述
Go
语言的数学函数库定义距离计算函数,使用所述距离计算函数构建得到所述相似度算法;使用哈希表建立所述词向量索引的的倒排索引方式;选择词向量模型,使用所述词向量模型对所述词向量数据结构进行机器学习,生成所述词向量数据结构中每个单词数据对应的词向量;使用所述
Go
语言的数学函数库对所有所述词向量进行归一化处理;使用所述向量排序算法,按照词频向量从高到低顺序对归一化处理的所有词向量进行排序;遍历排序后的所有词向量,使用所述相似度算法计算排序后的每一词向量与当前排名
前预定数量其他词向量的相似度;提取相似度大于或等于预定阈值的所有其他词向量,作为所述词向量的词向量索引
。5.
根据权利要求4所述的向量搜索方法,其特征在于,所述接收客户端的词向量搜索请求,计算所述词向量搜索请求与所述词向量索引中所有词向量的相似度,根据所述相似度搜索得到预定数量个最相似的词向量的步骤,包括:接收所述客户端的词向量搜索请求,提取所述词向量搜索请求中的查询词向量;使用所述倒排索引方式查找所述查询词向量对应的词向量索引,计算所述查询词向量与所述词向量索引中所有词向量的相似度;按照所述相似度从高到低的顺序对所述词向量索引中所有词向量进行排序;选取序列前预定数量的词向量对应单词数据作为所述词向量搜索请求的搜索结果
...

【专利技术属性】
技术研发人员:张磊顾斌刘涛于中阳陈平
申请(专利权)人:上海芯赛云计算科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1