FlexNeuART (flex-noo-art)
灵活的经典和神经信息检索工具包,简称 FlexNeuART
(发音为 flex-noo-art)是对 knn4qa
包 的大幅改进。概述可以在我们的 EMNLP OSS 研讨会论文中找到:
使用 NMSLIB 和 FlexNeuART 进行灵活检索,2020. Leonid Boytsov, Eric Nyberg。
在 2020 年 8 月至 12 月期间,我们使用这个框架在 MSMARCO 文档排序任务 中生成了最佳的传统和/或神经网络运行结果。实际上,我们最好的传统(非神经网络)运行结果略微优于几个神经网络提交结果。详情请参阅我们的报告:Boytsov, Leonid. "传统信息检索在 MS MARCO 文档排序排行榜上与神经模型竞争". arXiv preprint arXiv:2012.08020 (2020)。
2021 年,在被许多参与者超越后,我们通过新实现的长文档排序模型再次取得了不错的排名。详情请参阅我们的报告:Boytsov, L., Lin, T., Gao, F., Zhao, Y., Huang, J., & Nyberg, E. (2022). 通过全面评估和排行榜了解长文档排序模型的性能。在撰写本文时(2022 年 10 月),我们在 MS MARCO 的两个排行榜上都有具有竞争力的提交结果。
神经模型 1 对应的代码未包含在内,因为这可能受到第三方专利的限制。这个模型(及其非上下文化变体)在我们的 ECIR 2021 论文中有描述和评估: Boytsov, Leonid, and Zico Kolter. "探索用于信息检索的经典和神经词法翻译模型:可解释性、有效性和效率优势". ECIR 2021。
就长文档的纯粹效果而言,其他模型(CEDR 和 PARADE)似乎表现同样好(或略好)。它们在我们的代码库中可用。我们不知道有任何专利阻碍使用传统(非神经网络)的模型 1。
目标
开发和维护一个(相对)轻量级的模块化中间件,主要用于:
- 研究
- 教育
- 评估和排行榜
主要特性
- 使用 Lucene 和 NMSLIB 进行密集、稀疏或密集-稀疏检索(密集嵌入可以使用任何 Sentence BERT 模型创建)。
- 多字段多级前向索引(+父子字段关系),可以存储解析和"原始"文本输入以及稀疏和密集向量。
- 前向索引可以以追加模式创建,这需要更少的 RAM。
- 可插拔的通用排序器(通过服务器)
- 最先进的神经网络(PARADE, BERT FirstP/MaxP/Sum, Longformer, COLBERT(重排序), 点积 Sentence BERT 模型)和非神经网络模型(多字段 BM25, IBM Model 1)。
- 多 GPU 训练和推理,支持开箱即用的集成
- 基本实验框架(+LETOR)
- Python API 用于使用检索器和排序器以及访问索引数据。
文档
我们支持多种基于 BERT 的神经排序模型以及强大的传统排序模型,包括 IBM Model 1(非神经排序器的描述将随后提供)。
该框架支持通用 JSONL 格式的数据。我们为以下集合提供转换(在某些情况下还提供下载)脚本:
- 标准数据集的可配置数据集处理,由 ir-datasets 提供。
- MS MARCO v1 和 v2(文档和段落)
- Wikipedia DPR(Natural Questions, Trivia QA, SQuAD)
- Yahoo Answers
- Cranfield(一个小型玩具集合)
致谢
对于神经网络训练,FlexNeuART 采用了 CEDR(MacAvaney et al' 2019)的大幅改进变体。