bm25s

用 Numpy 加速的 BM25 检索,快如闪电,轻松集成 RAG。

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 搜索知识 🍴 复刻 120 🐛 待处理 13 👀 关注 6
访问官网 ↗ GitHub ↗
GitHub 星标 ★ 1822
维护状态 较活跃
是否开源 开源
定价模式 🏷️完全免费 开源项目,MIT许可证,完全免费,无付费版本。

项目预览

bm25s 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类搜索知识
开发团队xhluca
定价模式🏷️完全免费
价格说明开源项目,MIT许可证,完全免费,无付费版本。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议MIT
主要语言Python
技术栈/模型bm25,bm25-l,bm25-plus,information-retrieval,lexical-search,okapi-bm25,rag,retrieval,robertson,search
GitHub 星标★ 1822
上线时间2024-04-10 00:00:00
代码更新2026-11-02
仓库体积2.2 MB
本站数据更新2026-11-09
维护状态较活跃
收录时间2026-08-09
浏览次数4

项目介绍

bm25s 是一个基于 Python 的快速 BM25 搜索引擎库,利用 Numpy 和 Numba 实现高性能的文本检索。它解决了传统 BM25 实现在处理大规模语料时速度慢、内存占用高的问题,通过稀疏矩阵存储和向量化计算,显著提升索引构建和查询速度。核心能力包括:支持多种 BM25 变体(如 BM25+、BM25L)、内置分词器、支持中英文等多语言、提供简单易用的 API 用于索引和检索、支持从 Hugging Face 数据集直接加载语料、可导出为内存映射格式以节省内存。bm25s 特别适合作为 RAG(检索增强生成)系统的检索组件,或用于中小规模文档集的快速搜索。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1822

使用教程

难度:入门 约 10 分钟 部署方式:库/依赖 7 步

环境要求

  • Python 环境(README 未指定最低版本,建议 3.9+)
  • pip 或 uv 包管理工具
  • 如需 MCP 服务接入 Claude Desktop,需安装 uv 并准备好本地索引目录
  • 如需低内存检索,磁盘可存放导出的索引文件

安装与启动步骤

  1. 1安装 bm25s

    用 pip 安装 bm25s 本体,这是最小安装,只包含 numpy 等最基础依赖。

    pip install bm25s
  2. 2安装核心依赖

    README 强烈推荐,包含 json 加载、进度条、词干提取与 JIT 编译等核心能力。

    pip install "bm25s[core]"
  3. 3可选安装词干提取

    如果只想用词干提取提升检索效果,可单独安装 PyStemmer。

    pip install PyStemmer
  4. 4可选安装全部扩展

    安装所有额外依赖,体积更大但功能最全;也可单独装 CLI 扩展获得彩色交互选择器。

    pip install "bm25s[full]"
    pip install "bm25s[cli]"
  5. 5验证导入

    导入 bm25s 不报错即表示库安装成功;若失败请检查 Python 环境与 pip 版本。

    python -c "import bm25s"
  6. 6加载索引检索

    用 BM25HF 从 Hugging Face Hub 加载索引与语料,mmap=True 走内存映射以显著降低内存占用。

    import bm25s
    import Stemmer  # optional: for stemming
    
    retriever = bm25s.BM25HF.load_from_hub(
        f"{user}/bm25s-animals", load_corpus=True, mmap=True
    )
  7. 7配置 MCP 服务

    先安装 mcp 扩展,再把配置写入 Claude Desktop 的 claude_desktop_config.json,路径需全部替换为绝对路径。

    uv pip install "bm25s[mcp]"

关键配置

配置项必填说明示例
mcpServers.bm25s.command是uv 可执行文件的绝对路径,终端执行 which uv 获取/absolute/path/to/uv
mcpServers.bm25s.args是启动 bm25 MCP 服务的参数数组["--directory", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/bm25s", "ru
--index-dir是MCP 服务读取的 BM25 索引所在目录/absolute/path/to/your/index
load_corpus否load_from_hub 时是否同时加载语料True
mmap否是否以内存映射方式加载索引,用于节省内存True

如何确认成功

终端执行 python -c "import bm25s" 无报错即安装成功;能加载他人共享的 BM25HF 索引并返回检索结果说明可用。

常见问题

Q:应该装哪个安装命令?

A:先用 pip install bm25s 即可跑通;README 推荐再装 pip install "bm25s[core]",它包含 json 加载、进度条、词干提取与 JIT 编译等核心依赖。

Q:想要更好的检索效果怎么办?

A:安装词干提取器 pip install PyStemmer,并在代码中 import Stemmer,然后在索引/检索时启用词干提取。

Q:大索引内存占用太高怎么办?

A:加载索引时设置 mmap=True 使用内存映射。README 在 NQ、MSMARCO 数据集上显示该方式可将加载后内存从数 GB 降到 1GB 左右。

Q:怎么让 Claude Desktop 用上 bm25s?

A:安装 bm25s[mcp],在 claude_desktop_config.json 的 mcpServers 中加入 bm25s 条目,command 指向 uv 绝对路径,args 中指定项目目录与 --index-dir。

注意事项

  • README 的 Quickstart 代码片段不完整,完整 API 用法请参考官网 bm25s.github.io 与仓库示例目录。
  • f"{user}/bm25s-animals" 中的 {user} 需替换为实际的 Hugging Face 用户或组织名。
  • 磁盘占用参考:仅 bm25s 约 51MB,安装 bm25s[core] 约 188MB,远小于 pyserini(约 6976MB)。
  • MCP 配置中的目录与 uv 路径必须写成绝对路径,克隆到哪就以哪为准。

核心亮点

  • 索引构建和查询速度比传统 BM25 库快数倍,内存占用更低
  • 支持 BM25+、BM25L 等变体,适配不同检索场景
  • API 简洁,支持从 Hugging Face 数据集直接加载,便于快速实验

不足之处

  • 依赖 Numba,初次编译有额外开销,且对 Python 版本兼容性有限
  • 文档和社区生态相对薄弱,高级用法需自行摸索

适用场景

  • RAG 系统中的文档检索模块
  • 中小规模文档集的快速关键词搜索
  • 学术研究中 BM25 基线对比实验

替代项目

rank-bm25、Elasticsearch、Whoosh

上一篇:RAG-Survey

下一篇:raptor

同类项目推荐

bm25s 开源

用 Numpy 加速的 BM25 检索,快如闪电,轻松集成 RAG。

Fast BM25 search in Python, powered by Numpy and Numba

★ 1822 2026-08-09
MemoRAG 开源

给 RAG 装个记忆库,模糊问题也能精准检索

Empowering RAG with a memory-based data interface for all-purpose applications!

★ 2271 2026-08-09
verbatim-rag 开源

让AI回答自带原文出处,告别幻觉,每句话都有据可查

Provenance-first extractive RAG: return verbatim source spans with citations using l···

★ 208 2026-08-09
GPT3-4-Midjourney-StableDiffusio··· 开源

每天更新,一个页面找到能用的GPT和AI绘画镜像

国内AI镜像站的导航大全,每天收集公开的GPT3.5+GPT4受限试用+Midjourney+StableDiffusion···

★ 72 2026-08-09
rag-api 开源

FastAPI+pgvector 快速搭 RAG 问答接口

ID-based RAG FastAPI: Integration with Langchain and PostgreSQL/pgvector

★ 921 2026-09-25
youtu-rag 开源

让 AI 自己规划检索,复杂问题答得更准

Youtu-RAG: Next-Generation Agentic Intelligent Retrieval-Augmented Generation System

★ 285 2026-10-12
notebooklm-skill 开源

让 Claude Code 直接查你的 NotebookLM 私有文档,答案带引用

Use this skill to enable Claude Code to communicate directly with your Google Notebo···

★ 7788 2026-09-18
session-knowledge 开源

把 Claude Code 聊天记录变成本地可搜索知识库

Turn your Claude Code session history into a searchable local knowledge base — 13 M···

★ 306 2026-09-30
volo 开源

把维基百科变成你的 AI 问答知识库

An F/OSS solution combining AI with Wikipedia knowledge via a RAG pipeline

★ 110 2026-08-09