什么是向量搜索?
向量检索是基于向量之间的距离对已有documents进行相关性排序,和输入document向量距离越小则认为在某个维度上越相似会优先排在前面。
document可以是世界万物,比如图片,一段音视频,一段文字,一张人脸等,对于任何种document, 你都可以根据自己的需求对其进行模型训练,基于训练好的模型抽取特征进完成documents相似性检索。
已有向量搜索方案的对比以及优势
向量检索技术已经出现很久了,相关的技术方案也挺多的,比如:
- faiss
- Milvus
还有很多其他的, 就不一一列举了。
但是它们大多都是单独的专门为向量检索说下的框架。
我们知道目前最流行的搜索框架是elasticsearch, 有大量的用户群体,它们对传统的搜索提供了丰富的支持,而且性能以及架构都具有很好的可扩展性。
如果想引入向量检索的话,对于已经有搜索框架的公司来说,需要单独搭建一个独立的服务专门提供向量检索服务,如果想要和已有的搜索服务结合的话,那么用于一次请求就需要处理两次,两次的结果再进行整合过滤,这样就明显降低了请求的效率以及增加了资源利用率。
本文介绍的基于elaticsearch提供向量搜索的方案就可以解决这个问题,通过把向量搜索转成全文检索,这样向量检索和传统的检索完美的融合到一起,不仅提升了请求的效率还能提升物理资源的利用率。
不仅如此,还能更好的支持document向量的添加,更新或者删除操作。
基于elasticsearch方案的实现
-
根据具体的需求选择合适的模型
第一步就是明确自己的向量检索的需求,最核心的部分就是确定document相似的维度。
document相似的维度又决定了用什么样的模型去抽取document的特征。
比如普通图片相似搜索,我们需要的就是图片里面的物体的相似度, 那么我们就可以选择网上很多的基于imagenet数据集训练 好

本文介绍了如何利用Elasticsearch实现大规模向量检索,将向量搜索转化为全文检索,提升请求效率并减少资源浪费。通过选择合适的模型,如CNN,对数据进行特征抽取,然后采用PQ或OPQ编码技术,将向量转换为codes,最后将这些codes存储到Elasticsearch中,实现向量与传统搜索的融合。

1万+

被折叠的 条评论
为什么被折叠?



