Cherche 项目介绍
项目概述
Cherche 是一个神经搜索项目,专注于开发使用检索器和预训练语言模型作为检索器和排序器的神经搜索流水线。该项目的主要优势在于能够构建端到端的流水线,并且由于其支持批量计算,非常适合离线语义搜索任务。
特性与功能
- 神经搜索流水线:利用神经网络技术实现文档的检索与排序。
- 离线语义搜索:支持大规模批量计算,提升搜索效率。
- 丰富的检索与排序工具:Cherche 提供多种检索器与排序器,便于根据不同需求进行选择。
安装指南
对于不同的使用需求,Cherche 提供了不同的安装方法:
- 要在 CPU 上使用简单的检索器(如 TfIdf、Flash、Lunr、Fuzz),可以使用以下安装命令:
pip install cherche
- 如果需要在 CPU 上使用语义检索器或排序器,可以按如下方式安装:
pip install "cherche[cpu]"
- 若打算在 GPU 上使用语义检索器或排序器,可以使用以下命令:
pip install "cherche[gpu]"
快速入门
文档检索
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.'}, ...]
检索与排序器示例
以下是一个使用 TF-IDF 作为快速检索工具,并结合神经网络排序模型的示例。
from cherche import data, retrieve, rank
from sentence_transformers import SentenceTransformer
documents = data.load_towns()
retriever = retrieve.BM25(
key="id",
on=["title", "article"],
documents=documents,
k=30
)
ranker = rank.Encoder(
key = "id",
on = ["title", "article"],
encoder = SentenceTransformer("sentence-transformers/all-mpnet-base-v2").encode,
k = 3,
)
search = retriever + ranker
search.add(documents=documents)
search(["Bordeaux", "Paris", "Toulouse"])
检索与排序
Cherche 提供多种检索器和排序器,可根据输入的查询来筛选与输出文档。这些工具兼容多种预训练模型,便于在不同场景中灵活应用。
- 常用的检索器包括:
retrieve.TfIdf
、retrieve.BM25
、retrieve.Lunr
等。 - 常用的排序器包括:
rank.Encoder
、rank.DPR
、rank.CrossEncoder
等。
问答模块
Cherche 提供专门用于问答的模块,这些模块完全兼容 Hugging Face 的预训练模型,并与神经搜索流水线无缝集成。
项目背景
Cherche 项目初为雷诺公司开发,现在已向所有人开放,欢迎各界人士贡献力量。目前的开发团队由多名开发者和研究人员组成。
鸣谢
部分检索器如 Lunr 是基于 Lunr.py 的封装,排序器则是基于 SentenceTransformers 的封装,与 Hugging Face 模型紧密结合,为用户提供简洁高效的使用体验。