神經搜尋
Cherche 能夠開發神經搜尋管道,該管道使用檢索器和預先訓練的語言模型作為檢索器和排序器。 Cherche的主要優勢在於其建構端對端管道的能力。此外,由於 Cherche 與批量計算相容,因此非常適合離線語義搜尋。
以下是 Cherche 提供的一些功能:
由 Cherche 提供支援的 NLP 搜尋引擎的現場演示
若要安裝 Cherche 以與 CPU 上的簡單檢索器(例如 TfIdf、Flash、Lunr、Fuzz)一起使用,請使用下列命令:
pip install cherche
若要安裝 Cherche 以與 CPU 上的任何語意檢索器或排序器一起使用,請使用下列命令:
pip install " cherche[cpu] "
最後,如果您打算在 GPU 上使用任何語意檢索器或排名器,請使用下列命令:
pip install " cherche[gpu] "
遵循這些安裝說明,您將能夠根據您的需求使用 Cherche。
文件可在此處取得。它提供了有關檢索器、排序器、管道和範例的詳細資訊。
Cherche 允許在物件清單中找到正確的文件。這是一個語料庫的範例。
from cherche import data
documents = data . load_towns ()
documents [: 3 ]
[{ 'id' : 0 ,
'title' : 'Paris' ,
'url' : 'https://en.wikipedia.org/wiki/Paris' ,
'article' : 'Paris is the capital and most populous city of France.' },
{ 'id' : 1 ,
'title' : 'Paris' ,
'url' : 'https://en.wikipedia.org/wiki/Paris' ,
'article' : "Since the 17th century, Paris has been one of Europe's major centres of science, and arts." },
{ 'id' : 2 ,
'title' : 'Paris' ,
'url' : 'https://en.wikipedia.org/wiki/Paris' ,
'article' : 'The City of Paris is the centre and seat of government of the region and province of Île-de-France.'
}]
下面是一個神經搜尋管道的範例,它由快速檢索文件的 TF-IDF 和排名模型組成。排序模型根據查詢和文件之間的語義相似性對檢索器產生的文件進行排序。我們可以使用查詢清單呼叫管道並取得每個查詢的相關文件。
from cherche import data , retrieve , rank
from sentence_transformers import SentenceTransformer
from lenlp import sparse
# List of dicts
documents = data . load_towns ()
# Retrieve on fields title and article
retriever = retrieve . BM25 (
key = "id" ,
on = [ "title" , "article" ],
documents = documents ,
k = 30
)
# Rank on fields title and article
ranker = rank . Encoder (
key = "id" ,
on = [ "title" , "article" ],
encoder = SentenceTransformer ( "sentence-transformers/all-mpnet-base-v2" ). encode ,
k = 3 ,
)
# Pipeline creation
search = retriever + ranker
search . add ( documents = documents )
# Search documents for 3 queries.
search ([ "Bordeaux" , "Paris" , "Toulouse" ])
[[{ 'id' : 57 , 'similarity' : 0.69513524 },
{ 'id' : 63 , 'similarity' : 0.6214994 },
{ 'id' : 65 , 'similarity' : 0.61809087 }],
[{ 'id' : 16 , 'similarity' : 0.59158516 },
{ 'id' : 0 , 'similarity' : 0.58217555 },
{ 'id' : 1 , 'similarity' : 0.57944715 }],
[{ 'id' : 26 , 'similarity' : 0.6925601 },
{ 'id' : 37 , 'similarity' : 0.63977146 },
{ 'id' : 28 , 'similarity' : 0.62772334 }]]
我們可以將索引對應到文件以使用管道存取其內容:
search += documents
search ([ "Bordeaux" , "Paris" , "Toulouse" ])
[[{ 'id' : 57 ,
'title' : 'Bordeaux' ,
'url' : 'https://en.wikipedia.org/wiki/Bordeaux' ,
'similarity' : 0.69513524 },
{ 'id' : 63 ,
'title' : 'Bordeaux' ,
'similarity' : 0.6214994 },
{ 'id' : 65 ,
'title' : 'Bordeaux' ,
'url' : 'https://en.wikipedia.org/wiki/Bordeaux' ,
'similarity' : 0.61809087 }],
[{ 'id' : 16 ,
'title' : 'Paris' ,
'url' : 'https://en.wikipedia.org/wiki/Paris' ,
'article' : 'Paris received 12.' ,
'similarity' : 0.59158516 },
{ 'id' : 0 ,
'title' : 'Paris' ,
'url' : 'https://en.wikipedia.org/wiki/Paris' ,
'similarity' : 0.58217555 },
{ 'id' : 1 ,
'title' : 'Paris' ,
'url' : 'https://en.wikipedia.org/wiki/Paris' ,
'similarity' : 0.57944715 }],
[{ 'id' : 26 ,
'title' : 'Toulouse' ,
'url' : 'https://en.wikipedia.org/wiki/Toulouse' ,
'similarity' : 0.6925601 },
{ 'id' : 37 ,
'title' : 'Toulouse' ,
'url' : 'https://en.wikipedia.org/wiki/Toulouse' ,
'similarity' : 0.63977146 },
{ 'id' : 28 ,
'title' : 'Toulouse' ,
'url' : 'https://en.wikipedia.org/wiki/Toulouse' ,
'similarity' : 0.62772334 }]]
Cherche 提供了基於查詢過濾輸入文件的檢索器。
Cherche 提供排名器來過濾檢索器輸出中的文件。
Cherche 排名器與 Hugging Face 中心上提供的 SentenceTransformers 型號相容。
Cherche 提供專門用於問答的模組。這些模組與 Hugging Face 的預訓練模型相容,並完全整合到神經搜尋管道中。
Cherche 是為雷諾創建的,現在可供所有人使用。我們歡迎所有的貢獻。
Lunr 檢索器是 Lunr.py 的包裝器。 Flash 檢索器是 FlashText 的包裝器。 DPR、Encode 和 CrossEncoder 排名器是專用於在神經搜尋管道中使用 SentenceTransformers 預訓練模型的包裝器。
如果您使用 cherche 為您的科學出版物產生結果,請參閱我們的 SIGIR 論文:
@inproceedings { Sourty2022sigir ,
author = { Raphael Sourty and Jose G. Moreno and Lynda Tamine and Francois-Paul Servant } ,
title = { CHERCHE: A new tool to rapidly implement pipelines in information retrieval } ,
booktitle = { Proceedings of SIGIR 2022 } ,
year = { 2022 }
}
Cherche 開發團隊由 Raphaël Sourty、François-Paul Servant、Nicolas Bizzozzero、Jose G Moreno 組成。 ?