神经搜索
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 组成。 ?