项目简介

'MemKB' 是一个用 Rust 编写的基于 Model Context Protocol (MCP) 的智能知识库服务器。它通过内存中的方式,对指定目录下的 Markdown 文档进行索引、分块和嵌入,并利用外部嵌入(Embedding)和生成(Generation)模型提供强大的语义搜索和 AI 问答能力。它允许 LLM 客户端(如 Claude Desktop)通过标准化的 MCP 协议调用其功能,从而为大语言模型提供实时、丰富的上下文信息。

主要功能点

  • 语义搜索: 利用文档内容的向量嵌入进行智能和高效的知识检索,超越关键词匹配。
  • AI 生成答案: 综合多个相关文档片段的信息,生成连贯、有条理且带有引用来源的回答。
  • Markdown 文档管理: 自动扫描并处理指定目录下的 '.md' 文件,进行智能分块,方便内容管理。
  • MCP 工具集成: 通过 MCP 协议暴露 'ask_question' 工具,供兼容的 LLM 客户端直接调用。
  • 外部 LLM 集成: 支持连接外部的嵌入服务器和生成服务器(兼容 OpenAI API 接口),允许用户灵活选择和配置本地或云端大语言模型。
  • 内存高效: 将所有知识数据保存在内存中,提供极速的查询响应。

安装步骤

  1. 安装 Rust 编程语言环境: 'MemKB' 是用 Rust 编写的。如果您尚未安装 Rust,请访问 https://www.rust-lang.org/tools/install 按照指引安装 'rustup'。
  2. 安装 MemKB 服务器: 打开终端或命令行界面,运行以下命令即可安装 'MemKB' 可执行文件:
    cargo install memkb
  3. 准备外部 LLM 服务: 'MemKB' 需要外部的嵌入服务(用于生成文本内容的向量表示)和生成服务(用于生成回答)。您可以选择搭建本地 LLM 服务(例如使用 'ollama'、'lm-studio'、'vllm' 等工具),并确保它们提供了兼容 OpenAI API 接口的端点。
    • 示例: 启动一个本地嵌入模型监听 'http://127.0.0.1:9095/v1',启动一个本地聊天生成模型监听 'http://127.0.0.1:9091/v1'。

服务器配置 (MCP 客户端用)

MCP 客户端(例如 Claude Desktop 或其他支持 MCP 协议的应用)需要以下 JSON 格式的配置信息来连接 MemKB 服务器。请根据您实际部署的服务器 IP 地址、端口和外部 LLM 服务端点进行调整。

{
  "name": "MemKB 知识库",
  "description": "通过语义搜索和AI生成,从Markdown文档中获取答案的知识库。",
  "command": "memkb",
  "args": [
    "--port", "8080",
    "--host", "127.0.0.1",
    "--directory", "./docs",
    "--embedding-url", "http://127.0.0.1:9095/v1",
    "--generation-url", "http://127.0.0.1:9091/v1",
    "--chunk-size", "1000",
    "--overlap", "200"
  ],
  "arg_descriptions": {
    "--port": "MCP服务器监听的端口,默认8080。请确保防火墙允许此端口访问。",
    "--host": "MCP服务器监听的地址,默认127.0.0.1(本地)。如果从其他机器访问,请设置为0.0.0.0。",
    "--directory": "包含您的Markdown文档(.md文件)的目录路径,默认当前目录(.)。",
    "--embedding-url": "外部嵌入服务器的API端点(兼容OpenAI API)。例如:http://127.0.0.1:9095/v1。",
    "--generation-url": "外部生成服务器的API端点(兼容OpenAI API)。例如:http://127.0.0.1:9091/v1。",
    "--chunk-size": "文档分块时每个文本块的最大字符数,默认1000。较大的块可能包含更多上下文,但搜索精度可能下降。",
    "--overlap": "文档分块时相邻文本块之间的重叠字符数,默认200。重叠有助于保持上下文连贯性。",
    "--http": "(可选)启用一个额外的HTTP服务器,提供Web测试界面和OpenAI兼容的聊天API。此HTTP服务将运行在MCP主端口+1的端口上,例如主端口8080,则HTTP服务在8081。",
    "--parallel-embeddings": "(可选)并行生成嵌入的线程数,默认1。增加此值可以加快初始索引速度,但会消耗更多CPU资源。"
  }
}

基本使用方法

  1. 准备 Markdown 文档: 将您希望 MemKB 索引的所有 Markdown 文档('.md' 文件)放入一个单独的目录中,例如 '~/my_knowledge_base/docs'。
  2. 启动外部 LLM 服务: 确保您的嵌入服务和生成服务已按“安装步骤”中的说明运行并可访问。
  3. 启动 MemKB 服务器: 在终端中,运行以下命令(请根据您的实际情况替换路径和 URL):
    memkb --directory ~/my_knowledge_base/docs --embedding-url http://127.0.0.1:9095/v1 --generation-url http://127.0.0.1:9091/v1 --port 8080
    服务器启动后会扫描目录,生成文本块并进行嵌入。
  4. 连接 MCP 客户端: 在您偏好的 MCP 客户端(如 Claude Desktop)中,使用上面提供的 JSON 配置信息连接到 MemKB 服务器。客户端将能发现并调用 'ask_question' 工具来查询您的知识库。
  5. 通过 MCP 客户端提问: 在客户端中,您可以通过调用 'ask_question' 工具,向您的知识库提出问题,MemKB 将返回基于您的 Markdown 文档内容的 AI 生成答案。
  6. (可选)Web 测试界面: 如果您在启动服务器时添加了 '--http' 标记,MemKB 会在主端口 + 1 的端口上额外启动一个 Web 服务器。您可以在浏览器中访问 'http://localhost:8081'(假设主端口是 8080)来测试其聊天功能和知识检索效果。

信息

分类

AI与计算