retriv

retriv

Python实现的多功能搜索引擎库

retriv是一个Python搜索引擎库,支持稀疏、密集和混合检索模式。它利用Numba进行向量运算加速,整合了PyTorch、Transformers和Faiss等工具,实现了高效的检索功能。该库提供自动调优,支持多语言处理,并可通过简单的API快速构建搜索系统。

retriv搜索引擎信息检索稀疏检索密集检索Github开源项目
<div align="center"> <img src="https://repository-images.githubusercontent.com/566840861/ce7eeed0-7454-4aff-9073-235a83eeb6e7"> </div> <p align="center"> <!-- Python --> <a href="https://www.python.org" alt="Python"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d615eda3-691c-4a32-8a2d-6f91731020c8.svg" /> </a> <!-- 版本 --> <a href="https://badge.fury.io/py/retriv"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/95a99f3f-fa82-4fb8-b1e8-f808ab9a672b.svg" alt="PyPI 版本" height="18"></a> <!-- 文档 --> <!-- <a href="https://amenra.github.io/retriv"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d9091c7b-ea0b-4adc-936a-5e0a56787b6e.svg" alt="文档状态"></a> --> <!-- Black --> <a href="https://github.com/psf/black" alt="代码风格: black"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/fd9defda-c4cd-4e97-8e4d-60553ca00ee1.svg" /> </a> <!-- 许可证 --> <a href="https://lbesson.mit-license.org/"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/e9c20c67-f666-4f08-8d25-1c28896577e6.svg" alt="许可证: MIT"></a> <!-- Google Colab --> <!-- <a href="https://colab.research.google.com/github/AmenRa/retriv/blob/master/notebooks/1_overview.ipynb"> --> <!-- <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/f0ef1bd0-5f5d-4c3d-977e-6683fda38422.svg" alt="在 Colab 中打开"/> --> </a> </p>

🔥 新闻

  • [2023年8月23日] retriv 0.2.2 发布!
    此版本新增了对多字段文档和过滤器的实验性支持。 请参阅高级检索器文档。

  • [2023年2月18日] retriv 0.2.0 发布!
    此版本新增了对密集检索和混合检索的支持。 密集检索利用查询和文档向量表示的语义相似性,这些向量可以直接由 retriv 计算或从其他来源导入。 混合检索将传统检索(非正式称为稀疏检索)和密集检索的结果结合,进一步提高检索效果。 由于库几乎完全重写,不再支持之前版本构建的索引。

⚡️ 简介

retriv 是一个用户友好且高效的搜索引擎,使用 Python 实现,支持稀疏检索(基于 BM25TF-IDF 的传统搜索)、密集检索(语义搜索)和混合检索(稀疏检索和密集检索的结合)。 它允许您通过__单行代码__构建搜索引擎。

retriv 基于 Numba 实现高速向量运算自动并行化,利用 PyTorchTransformers 实现对基于 Transformer 的语言模型的便捷访问和使用,并使用 Faiss 进行近似最近邻搜索。 此外,它还提供自动调优功能,让您能以最少的干预调整其内部组件。

✨ 主要特性

检索器

统一搜索接口

所有支持的检索器共享相同的搜索接口:

  • search:标准搜索功能,即您对搜索引擎的期望。
  • msearch:一次性计算多个查询的结果。 它尽可能利用自动并行化
  • bsearch:与msearch类似,但自动生成要评估的查询批次,并允许以JSONl格式动态将搜索结果写入磁盘。bsearch适用于计算数十万甚至数百万个查询的结果,而不会占用大量内存。预计算的结果可用于信息检索神经网络模型训练期间的负采样。

自动调优

retriv通过利用AutoFaiss自动调优Faiss配置,以根据您可用的硬件保证10毫秒的响应时间。 此外,它还为BM25参数提供自动调优功能,只需最少的用户干预。 在后台,retriv利用Optuna(一个超参数优化框架)和ranx(一个信息检索评估库)来测试BM25的多种参数配置并选择最佳方案。 最后,它可以自动平衡混合检索器计算的词法和语义相关性得分的重要性,以最大化检索效果。

📚 文档

🔌 要求

python>=3.8

💾 安装

pip install retriv

💡 最小工作示例

# 注意:SearchEngine是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许可证授权的开源软件。

编辑推荐精选

潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

下拉加载更多