使用Dask,SBERT SPECTRE和Milvus构建自己的ARXIV论文相似性搜索引擎
通过矢量相似性搜索,可以在〜50ms内响应〜640K论文上的语义搜索查询
Arxiv.org大家一定都不陌生,学习数据科学的最佳方法之一是阅读Arxiv.org上的开源研究论文。但是即使对于经验丰富的研究人员来说,从大量的研究论文中找出想读的内容也是非常不容易的。Connected等论文之类的工具可以提供一些帮助,但是它们根据论文之间共享的引用和参考书目来衡量相似性的,这当然非常的好,并且也很简单,但是文档中文本的语义含义也是一个衡量相似度非常重要的特征。
在这篇文章中,我们将手动构建一个语义相似性搜索引擎,该引擎将单个论文作为“查询”输入,并查找Top-K的最类似论文。我们测试,在单个笔记本电脑中对Arxiv语料库中的640k计算机科学论文进行查询的的延迟<50ms!如果你感兴趣,那么本文的主要内容总结如下:
- 设置环境并从Kaggle下载ARXIV数据
- 使用dask将数据加载到Python中
- 使用MILVUS矢量数据库进行语义相似性搜索
本文中使用的技术不仅仅局限在科学论文,可用作建立任何NLP语义相似性搜索引擎的模板。唯一的区别是使用的预训练模型不同。
这篇文章使用Kaggle的ARXIV数据集是在CC0:公共域许可证下发布的,所以请先阅读其使用授权的要求。
Milvus Vector是一个矢量数据库,我们也可以使用其他矢量数据库,如果使用其他库替换的话,有许多步骤完全相同并且改动并不复杂。
设置环境并从Kaggle下载ARXIV数据。
Cornel University已将整个Arxiv语料库上传到Kaggle,并根据CC0:公共领域许可证获得许可。我们可以使用Kaggle API直接下载数据集。
这里还要使用Conda环境,创建一个称为Semantic_sibilarity的环境。下面的步骤是创建必要的目录和Conda环境,安装所需的Python库,然后从Kaggle下载ARXIV数据集。
完整文章:
https://avoid.overfit.cn/post/36ad9ebf46ad43f78b84595e793e1a34