检索增强生成服务

一个实现检索增强生成(RAG)功能的模型上下文协议(MCP)服务器,用于处理Markdown文档、创建向量嵌入并通过MCP工具提供语义搜索能力。

  • by SnipWise
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 SnipWise/mcp-docs-server

使用说明

MCP 文档服务器

一个实现检索增强生成(RAG)功能的模型上下文协议(MCP)服务器。该服务器处理Markdown文档,创建向量嵌入,并通过MCP工具提供语义搜索能力。

特点/特性

  • 文档处理自动处理指定目录中的Markdown文件
  • 文本分块将文档拆分为可配置的块,并设置重叠部分以更好地保留上下文信息
  • 向量嵌入使用可配置的嵌入模型创建嵌入表示
  • 持久化存储将向量存储保存为JSON格式,以实现重启后的持久化
  • 语义搜索提供 rag_question 用于在您的文档集合中查找相关信息的工具
  • MCP集成通过模型上下文协议暴露功能

配置

服务器使用环境变量进行配置,并设定了合理的默认值:

变量 默认值 描述
MODEL_RUNNER_BASE_URL http://localhost:12434/engines/llama.cpp/v1/ LLM/嵌入服务的基础URL
EMBEDDING_MODEL ai/mxbai-embed-large:latest 用于生成嵌入的模型名称
JSON_STORE_FILE_PATH rag-memory-store.json 用于持久化向量存储的路径
DOCUMENTS_PATH markdown 包含要处理的Markdown文件的目录
CHUNK_SIZE 1024 文本块的大小(以字符计)
CHUNK_OVERLAP 256 字符块之间的重叠
MCP_HTTP_PORT 9090 MCP HTTP 服务器的端口
LIMIT 0.6 搜索结果的最小相似度阈值
MAX_RESULTS 2 返回的最大搜索结果数量

它是如何工作的

  1. 初始化首次运行时,服务器会处理指定目录中的所有Markdown文件
  2. 分块处理文档被分割成重叠的片段,以便更好地进行语义检索
  3. 嵌入创建每个数据块都使用指定的模型转换为向量嵌入
  4. 存储向量存储被持久化到磁盘上以供将来使用
  5. 搜索这个 rag_question 该工具查找语义上最相似的片段来回答问题

MCP 工具

rag_question

在文档集合中搜索与给定问题相关的信息。

参数:

  • question (必填):用于查找相关信息的搜索问题

返回值: 最相关的文档片段,有助于回答问题。

使用方法

  1. 将您的Markdown文档放置在配置的目录中(默认: markdown/)
  2. 启动服务器: go run main.go
  3. 将您的MCP客户端连接到 http://localhost:9090/mcp
  4. 使用 rag_question 用于搜索您的文档集合的工具