[2023 年 8 月 23 日] retriv
0.2.2 已发布!
此版本增加了对多字段文档和过滤器的实验性支持。请参阅高级检索器文档。
[2023年2月18日] retriv
0.2.0 发布了!
此版本增加了对密集和混合检索的支持。密集检索利用查询和文档向量表示的语义相似性,可以通过retriv
直接计算或从其他来源导入。混合检索混合了传统检索(非正式地称为稀疏检索)和密集检索结果,以进一步提高检索效率。由于该库几乎完全重做,因此不再支持使用以前版本构建的索引。
retriv 是一个用 Python 实现的用户友好且高效的搜索引擎,支持稀疏(BM25、TF-IDF 的传统搜索)、密集(语义搜索)和混合检索(稀疏和密集检索的混合)。它允许您用一行代码构建一个搜索引擎。
retriv 基于 Numba 构建,用于高速向量运算和自动并行化;基于 PyTorch 和 Transformers 构建,用于轻松访问和使用基于 Transformer 的语言模型;基于 Faiss 构建,用于近似最近邻搜索。此外,它还提供自动调整功能,使您可以以最少的干预来调整其内部组件。
所有支持的检索器共享相同的搜索界面:
retriv 利用 AutoFaiss 自动调整 Faiss 配置以进行近似最近邻搜索,以根据您的可用硬件保证 10 毫秒的响应时间。此外,它还提供 BM25 参数的自动调整功能,这需要最少的用户干预。在底层,retriv 利用超参数优化框架 Optuna 和信息检索评估库 ranx 来测试 BM25 的多种参数配置并选择最佳的一个。最后,它可以自动平衡混合检索器计算的词汇和语义相关性分数的重要性,以最大限度地提高检索效率。
python>=3.8
pip install retriv
# Note: SearchEngine is an alias for the SparseRetriever
from retriv import SearchEngine
collection = [
{ "id" : "doc_1" , "text" : "Generals gathered in their masses" },
{ "id" : "doc_2" , "text" : "Just like witches at black masses" },
{ "id" : "doc_3" , "text" : "Evil minds that plot destruction" },
{ "id" : "doc_4" , "text" : "Sorcerer of death's construction" },
]
se = SearchEngine ( "new-index" ). index ( collection )
se . search ( "witches masses" )
输出:
[
{
"id" : " doc_2 " ,
"text" : " Just like witches at black masses " ,
"score" : 1.7536403
},
{
"id" : " doc_1 " ,
"text" : " Generals gathered in their masses " ,
"score" : 0.6931472
}
]
您想看到其他功能的实现吗?请打开功能请求。
您愿意贡献吗?请给我发一封电子邮件。
retriv 是一款根据 MIT 许可证授权的开源软件。