通過矢量相似性搜索,可以在〜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