智能个人知识库助手
一种模型上下文协议(MCP)服务器,为AI助手提供对本地知识库的访问。该服务器使AI代理能够在矢量数据库中搜索、添加和管理文档,以实现高效检索和上下文感知响应。它可以连接不同的LLM,提供智能文档处理和检索功能。
特性
- 文档搜索:使用向量嵌入在知识库中进行语义搜索
- 文档管理:添加和组织具有元数据的文档
- 文件摘要:快速浏览知识库中的文档
- RAG集成:使用ChromaDB进行高效的矢量存储和检索
先决条件
- Python 3.10或更高版本
- OpenAI API密钥(用于嵌入)
安装
- 克隆此存储库
- 安装依赖项:
pip install -r requirements.txt- 复制
.env.example到.env并配置您的设置:
cp .env.example .env
# Edit .env with your settings用法
- 什么是OpenAI API密钥?为什么需要它?
OpenAI API密钥是一个秘密令牌,可以让您的应用程序访问OpenAI的云AI服务(如GPT、嵌入等)。 为什么需要: 在您的项目中,您使用OpenAI的嵌入模型将文本/文档转换为语义搜索的向量。API密钥验证您的请求并启用这些功能。
- 什么是存储路径?为什么需要它?
STORAGE_PATH是一个配置变量(来自.env),它告诉服务器存储和查找知识库(文档、笔记等)的位置。 为什么需要: 它使您的数据保持有序和持久。 示例:如果存储路径=。/知识库,所有文件和矢量数据库都保存在知识库文件夹中。
- LangChain是什么?ChromaDB是什么?(详细)
LangChain LangChain是一个Python库,用于使用语言模型(LLM)构建应用程序。 特征: 加载各种格式的文档(PDF、DOCX、TXT) 将文本拆分为可管理的块 与矢量存储和LLM集成 将多个AI操作(搜索、汇总等)链接在一起 色度数据库 ChromaDB是一个开源的矢量数据库。 特征: 存储文本/文档的矢量嵌入 启用快速相似性搜索(查找与查询相似的文档) 持久存储(在服务器重启之间保存数据) 为什么一起使用: LangChain加载和处理文档,生成嵌入(使用OpenAI),并将其存储在ChromaDB中以进行语义搜索。
- 我们为什么选择FastAPI web服务器?
FastAPI是一个现代、快速的Python web框架。 选择理由: 高性能(异步支持) API自动文档(Swagger/OpenAPI) 使用Python类型提示轻松定义端点 非常适合构建与AI模型和客户端交互的API
- 我们在哪里加载文档/知识库?
文档从STORAGE_PATH指定的文件夹(例如./knowledge_base)加载。 server.py中的KnowledgeBase类使用LangChain的加载器从该目录读取文件,对其进行处理,并将其嵌入存储在ChromaDB中。
- 详细解释mcp.json。如何启动MCP服务器?
mcp.json是mcp服务器的VS代码配置文件。
目的: 告诉VS Code如何启动MCP服务器,以便AI客户端可以连接。
例子: { “服务器”:{ “知识库服务器”:{ “类型”:“stdio”, “command”:“python”, “args”:\[“server.py”\] } } }
“type”:“stdio”表示服务器通过标准输入/输出进行通信。 “command”:“python”和“args”:\[“server.py”\]告诉VS Code使用python server.py运行服务器。 如何开始: 在VS Code中,您可以使用MCP扩展或运行MCP.json中定义的命令来启动服务器。
- 我们选择哪种AI客户端?我们可以添加其他吗?
选择的AI客户端: 您可以使用Claude Desktop、Cursor或任何兼容MCP的客户端。 你能添加其他吗? 对!任何支持MCP协议(基于stdio或HTTP的JSON-RPC)的客户端都可以连接。 你也可以用Python、TypeScript等编写自己的自定义客户端。
发展
项目结构
mcp-knowledge-base/
├── server.py # Main MCP server implementation
├── requirements.txt # Python dependencies
├── .env # Configuration settings
└── knowledge_base/ # Local storage for vector database添加新功能
要添加新工具或功能,请执行以下操作:
- 向中添加新方法
KnowledgeBaseServer类 - 使用以下工具将其注册为工具
@app.tool()装饰器 - 根据需要更新文档
安全说明
- 该服务器专为本地使用而设计,需要为生产部署进行适当的配置
- API密钥应保持安全,并且永远不要致力于版本控制
- 如果部署在多用户环境中,请考虑实施身份验证
\=======
智能个人知识库助手
使用MCP连接不同LLM的智能个人知识库助手
