使用说明
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 |
返回的最大搜索结果数量 |
它是如何工作的
- 初始化首次运行时,服务器会处理指定目录中的所有Markdown文件
- 分块处理文档被分割成重叠的片段,以便更好地进行语义检索
- 嵌入创建每个数据块都使用指定的模型转换为向量嵌入
- 存储向量存储被持久化到磁盘上以供将来使用
- 搜索这个
rag_question该工具查找语义上最相似的片段来回答问题
MCP 工具
rag_question
在文档集合中搜索与给定问题相关的信息。
参数:
question(必填):用于查找相关信息的搜索问题
返回值: 最相关的文档片段,有助于回答问题。
使用方法
- 将您的Markdown文档放置在配置的目录中(默认:
markdown/) - 启动服务器:
go run main.go - 将您的MCP客户端连接到
http://localhost:9090/mcp - 使用
rag_question用于搜索您的文档集合的工具