Pyserini

在这里插入图片描述

文章目录

    • 关于 Pyserini
    • 安装🎬
    • 如何搜索?🙋
    • 如何给我的语料集建立索引


关于 Pyserini

  • github : https://github.com/castorini/pyserini
  • Pyserini: An Easy-to-Use Python Toolkit to Support Replicable IR Research with Sparse and Dense Representations
    https://arxiv.org/abs/2102.10073

Pyserini 是一个 Python 工具包,用于具有稀疏和密集表示 的可重复信息检索研究。通过与我们小组基于 Lucene 构建的Anserini IR 工具包集成,可以使用稀疏表示进行检索。通过与 Facebook 的Faiss库集成,提供使用密集表示的检索。

Pyserini 的主要设计目的是在多阶段 ranking 架构中提供有效、可重复且易于使用的第一阶段检索。

我们的工具包是独立的标准 Python 包,并附带针对许多常用 IR 测试集合的查询、相关性判断、预构建索引和评估脚本。使用 Pyserini,可以轻松地在许多标准 IR 测试集合上重现运行!

有关更多详细信息,我们在 SIGIR 2021 中的论文提供了很好的概述。

❗ Anserini 在提交时(2024/04/03)从 JDK 11 升级到 JDK 21 272565,对应 v0.35.0 版本。相应地,Pyserini 在提交时b2f677(2024/04/04)升级到了 JDK 21 。

安装🎬

通过 PyPI 安装(需要 Python 3.10+):

pip install pyserini
  • 稀疏检索依赖于Anserini,它本身是基于 Lucene 构建的(用 Java 编写),因此需要 JDK 21。
  • 密集检索依赖于神经网络,并且需要一组更复杂的依赖关系。安装pip时会自动拉入🤗 Transformers 库来满足包要求。
  • Pyserini 还依赖于PyTorch和Faiss,但由于这些包可能需要特定于平台的自定义配置,因此它们没有在包要求中明确列出。我们将这些软件包的安装留给您。

软件生态系统正在快速发展,潜在的挫败感是不同版本的底层依赖项之间的不兼容。我们在此处提供了其他详细的安装说明。

如果您打算只使用Pyserini,那么pip上面的说明就可以了。
但是,如果您计划为代码库做出贡献或想要使用最新的尚未发布的功能,则需要进行开发安装。此处提供了说明。


如何搜索?🙋

Pyserini 支持以下类别的检索模型:

  • Traditional lexical models (e.g., BM25) using LuceneSearcher.
  • Learned sparse retrieval models (e.g., uniCOIL, SPLADE, etc.) using LuceneImpactSearcher.
  • Learned dense retrieval models (e.g., DPR, Contriever, etc.) using FaissSearcher.
  • Hybrid retrieval models (e.g., dense-sparse fusion) using HybridSearcher.

请参阅本指南(与上面的链接相同),详细了解如何使用我们已经为您构建的索引来搜索 IR 和 NLP 研究中的常见语料库(例如 MS MARCO、NaturalQuestions、BEIR 等)。

一旦获得前k 个结果,您实际上会想要获取文档文本…请参阅本指南了解如何操作。


如何给我的语料集建立索引

这依据于 你要使用哪种检索模型来搜索

  • Building a BM25 Index (Direct Java Implementation)
  • Building a BM25 Index (Embeddable Python Implementation)
  • Building a Sparse Vector Index
  • Building a Dense Vector Index

不同的模型,有不同的步骤,详情可参考教程:https://github.com/castorini/pyserini/blob/master/docs/usage-index.md


2024-05-02(四)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第09章 局域网技术(拓扑结构设计+FDDI工作机制)

9.1 本章目标 了解IEEE 802局域网标准掌握局域网拓扑结构了解10Base以太网了解快速以太网熟悉交换式以太网了解千兆位以太网了解其它种类的局域网局域网中的常用技术 9.2 局域网概述 罗伯特梅特卡夫个人简介 罗伯特梅特卡夫(Robert Metcalfe,1…

【镜像仿真篇】磁盘镜像仿真常见错误

【镜像仿真篇】磁盘镜像仿真常见错误 记系统镜像仿真常见错误集—【蘇小沐】 1、实验环境 2023AFS39.E01(Windows11系统镜像)Arsenal Image Mounter,[v3.10.262]‍Vmware Workstation 17 Pro,[v17.5.1]Windows 11 专业工作站版…

Android ViewFlipper

Android ViewFlipper 在很多APP都有如下的头条/热榜效果(上下自动翻滚) 这种效果可以使用很多方式实现,有一个简便的方式可以使用ViewFlipper控件实现,ViewFlipper控件继承结果如下: 可以看出ViewFlipper 继承自ViewA…

在VMware上利用Samba实现资源共享

一、背景 FTP协议能让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件。 举个栗子:当客户端想修改服务器上的test.txt,需要先get test.txt将文件下载下来,修改后再put test.txt 有没有一种方式能使客户端直接修改…

关于支付接口测试点的思考

支付接口测试是一项非常重要的测试工作,以下是一些测试支付接口的建议: 测试支付流程: 测试支付流程的正确性,包括支付前、支付中和支付后的各个环节,确保支付流程的顺畅和正确。 测试支付金额: 测试支…

Python 中的 Unit testing 文件写入

在 Python 中进行单元测试时,有时候需要测试文件写入操作。为了模拟文件写入并进行单元测试,你可以使用 Python 的 unittest 模块,并结合 io.StringIO 或 tempfile 模块来模拟文件操作。 1、问题背景 在 Python 中,为 ConfigPars…

Docker下Open WebUI,Ollama的安装实践

提示一下Open WebUI与ollama的关系。后端的同学可以理解为Open WebUI等于是个Navicat,Ollama就是具体的数据库实例。 官方安装文档: 🏡 Home | Open WebUI Open WebUI官网文档翻译: 注意: 使用Docker安装Open WebU…

58. 【Android教程】音频录制:MediaRecord

在第 57 节我们使用 MediaPlayer 实现了一个 mp3 播放器,除了播放 Android 还提供了 MediaRecorder 用于录音。Android 设备基本都会有一个麦克风,通过 MediaRecorder 可以打开麦克风进行语音采集,这一节我们就来学习如何在 Android 系统上实…

深入解析C++的auto自动类型推导(二)

目录 使用auto的好处 新标准新增功能 使用auto的限制 上一篇详细讲解了使用auto关键字进行自动类型推导时的推导规则,这一篇重点讲解auto的使用以及C14、C17、C20等新标准对auto的功能完善,最后再介绍auto的使用限制。上一篇请从这里阅读:…

线程池核心原理浅析

前言 由于系统资源是有限的,为了降低资源消耗,提高系统的性能和稳定性,引入了线程池对线程进行统一的管理和监控,本文将详细讲解线程池的使用、原理。 为什么使用线程池 池化思想 线程池主要用到了池化思想,池化思想…

【计算机科学速成课】笔记一

文章目录 写在前面1.计算机的早期历史2.电子计算机3.布尔运算和逻辑门4.二进制5.算术逻辑单元-ALU6.寄存器和内存 写在前面 所有的一切源于这样一个网站——CS自学指南。 这是新手小白入门计算机科学必要了解的知识——【计算机科学速成课】[40集全/精校] - Crash Course Comp…

Dragonfly 拓扑的路由算法

Dragonfly 拓扑的路由算法 1. Dragonfly 上的路由 (1)最小路由(2)非最小路由 2. 评估3. 存在问题 (1)吞吐量限制(2)较高的中间延迟 references Dragonfly 拓扑的路由算法 John Kim, William J. Dally 等人在 2008 年的 ISCA 中提出技术驱动、高度可扩展的 Dragonfly 拓扑。而…

在做题中学习(53): 寻找旋转数组中的最小值

153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode) 解法:O(logn)->很可能就是二分查找 思路:再看看题目要求,可以画出旋转之后数组中元素的大小关系: 首先,数组是具有二段性的(适配二分查…

数据库(MySQL)—— 索引

数据库(MySQL)—— 索引 什么是索引创建索引使用 CREATE INDEX 语句使用 ALTER TABLE 语句在创建表时定义索引特殊类型索引注意事项 举个例子无索引的情况有索引的情况为什么索引快索引的结构 今天我们来看看MySQL中的索引: 什么是索引 MyS…

财政部、交通运输部:推动北斗导航等新技术与交通基础设施融合

财政部、交通运输部:推动北斗导航等新技术与交通基础设施深度融合 近日,为深入贯彻落实中共中央、国务院关于加快建设交通强国、数字中国等决策部署,推进公路水路交通基础设施数字转型、智能升级、融合创新,加快发展新质生产力&a…

VisualGDB:Linux动态库项目创建、编译及库的使用

此篇接上篇 《VisualGDB:为Linux项目添加系统依赖库》,在本篇中我们重点分享一下如何基于VisualGDB 在VS中创建Linux动态库项目,如何编译及使用创建的动态库。 一、VisualGDB创建Linux动态库项目 如下,我们创建一个Linux下的动态库项目MyMath 二、编译动态库 我们稍微…

哈夫曼编码python算法实现(图片版)

一、问题: 请使用哈夫曼编码方法对给定的字符串,进行编码,以满足发送的编码总长度最小,且方便译码。“AABBCCDDEEABCDDCDBAEEAAA” 二、过程: 三、结果:

手动实现简易版RPC(四)

手动实现简易版RPC(四) 往期内容 手动实现简易版RPC(一):RPC简介及系统架构 手动实现简易版RPC(二):简单RPC框架实现 手动实现简易版RPC(三):mock数据生成 前言 接上几篇博客我们实现了最…

【6D位姿估计】FoundationPose 跑通demo 训练记录

前言 本文记录在FoundationPose中,跑通基于CAD模型为输入的demo,输出位姿信息,可视化结果。 然后分享NeRF物体重建部分的训练,以及RGBD图为输入的demo。 1、搭建环境 方案1:基于docker镜像(推荐&#xf…

重置密码之后无法ssh登录

背景描述 我这边有个服务器S,我从ServerA可以ssh上去,但是我从堡垒机B无法ssh上去;一开始以为是密码问题,手动重置密码,但是依然无法登录进去;一直提示密码错误;改了好几次密码都不行 问题原因…