离线维基百科搜索服务

Local-Wikipedia是一个MCP服务器,允许用户下载维基百科内容后进行离线全文搜索和阅读文章,适用于无网络环境和高频搜索场景。

  • by soukouki
  • Python
  • 本地部署
  • 20 星标
  • 更新于
在 GitHub 查看 soukouki/local-wikipedia

使用说明

本地维基百科

日语版在这里

本地维基百科是一个MCP服务器,可以让你让维基百科离线——在快速一次性下载后搜索和阅读文章。

这就是为什么这很重要:

  1. 维基百科全文搜索
    • 大多数MCP服务器只支持精确的标题匹配和基本的重定向处理。
    • 因为本地维基百科在本地存储全文,所以您可以运行真正的全文搜索。
  2. 一次性下载后即使没有互联网也能继续工作
    • 由于数据保存在本地,即使您离线,也可以搜索和阅读维基百科文章。
  3. 处理高搜索频率
    • 没有网络API速率限制-尽可能多地迭代和优化您的搜索。
    • 非常适合灵活解释查询和运行重复搜索的用例。
  4. 易于扩展,因为全文是本地的
    • 有了整个语料库,其他MCP服务器上难以实现的功能在这里要容易得多。
      • 其他MCP服务器可能受到它们所依赖的web API的限制;本地维基百科不是。
    • 例如,添加“获取随机文章”功能很简单。

此MCP服务器旨在与小型本地LLM很好地配对。即使在没有大型LLM的地方,你仍然可以灵活地搜索维基百科并检索信息。我们使用一种名为Gemma 3n E4B的紧凑型面向移动设备的模型对其进行了验证,即使在仅使用CPU的环境中,它也能快速运行。

为了让小LLM变得友好,我们做出了一些深思熟虑的选择:

  1. 只有两个参数最少的工具,因此LLM可以可靠地调用它们。
  2. 启发式查询校正,用于清理LLM中过度指定或嘈杂的输入。
  3. 简洁、情境感知的输出,即使在短上下文窗口和有限计算的情况下也能快速运行。
  4. 高级数据库索引,实现快速搜索和低内存使用。初始设置需要更长的时间,但一旦完成,它就会很快。

特性

此MCP服务器提供以下两个工具。

搜索_文章

根据指定的标题灵活搜索文章并返回适当的结果。多种搜索策略被统一到一个工具中,以使LLM的工具使用简单。

搜索方法包括:

  1. 标题完全匹配
  2. 精确重定向匹配
  3. 部分标题匹配
  4. 部分重定向匹配
  5. 正文全文搜索

对于1和2,返回文章的主要部分(摘要)。对于3、4和5,最多返回20个结果。

还有一个启发式查询修复功能,以防LLM意外地将额外或无关的细节传递给工具。

阅读_随机_文章

从维基百科的指定语言版本中随机获取一篇文章。

设置

一切都是用Docker Compose设置的。按照以下步骤操作。

确保已安装Docker和Docker Compose。

git clone https://github.com/soukouki/local-wikipedia.git
cd local-wikipedia
docker-compose up

首次运行时,将下载config.yaml中指定语言的维基百科数据并为其编制索引。这可能需要一段时间——日语大约需要几十分钟,英语大约需要几个小时。我们建议使用稳定的光纤连接进行下载。

安装完成后,MCP服务器将启动。默认情况下,它监听端口29423。连接方式如下:

{
  "servers": {
    "local-wikipedia": {
      "url": "http://localhost:29423"
    }
  }
}

技术细节

本地维基百科使用官方维基百科转储数据进行页面和重定向,以及发布在 拥抱脸FW/finewiki·拥抱脸上的数据集.

对于全文搜索,它使用PGroonga在日语和英语中提供快速、内存高效的搜索。

重要提示

  • 当前的Local-Wikipedia实现不是为公共API访问而设计的。在外部公开API时,出于安全目的,我们建议进行适当的代码修改。
  • 维基百科内容根据知识共享署名-相同方式共享4.0国际许可证(CC BY-SA 4.0)和GNU自由文档许可证(GFDL)获得许可。