基于Docker的聊天机器人,配备类似MCP的服务器和管理员界面
这个项目提供:
- 后端 (
backend/): FastAPI服务器,提供管理员端点(上传/列出/删除)和聊天端点。为管理员和聊天提供静态用户界面服务。 - MCP服务器 (
mcp_server/): 暴露工具的WebSocket JSON-RPC服务器:add_document,list_documents,delete_document,search_documents在Postgres中存储数据,使用pgvector并且使用了OpenAI的嵌入技术。 - 数据库Postgres(与……一起使用)
pgvector扩展。
该系统通过Docker Compose进行编排。
服务
- 数据库Postgres 配合 pgvector。
- mcp-server 翻译成中文是“MCP服务器”FastAPI WebSocket 在
ws://localhost:8765/ws。 - 后端FastAPI HTTP 在
http://localhost:8000为管理员界面和聊天用户界面提供服务。
快速入门
- 创建一个
.env来自文件的(内容/信息).env.example并设置您的变量(如OpenAI密钥等)。 - 构建并运行:
docker compose up --build- 开放:
- 管理界面:http://localhost:8000/admin
- 聊天用户界面:http://localhost:8000/
环境变量
POSTGRES_USER(默认mcp)POSTGRES_PASSWORD(默认mcppassword)POSTGRES_DB(默认mcpdb)EMBEDDING_MODEL_NAME(默认text-embedding-3-small)OPENAI_API_KEY(对于MCP服务器中的嵌入是必需的,对于后端聊天是可选的)OPENAI_MODEL(默认gpt-4o-mini)MCP_WS_URL(后端到MCP WS,默认ws://mcp-server:8765(在)内部编写
它是如何工作的
- 管理员上传了一个文件到
POST /admin/upload。 - 后端读取内容并调用MCP(管理控制平面/微服务控制平面等,具体含义根据上下文确定)
add_document通过WS(Web服务)。 - MCP数据块和嵌入式数据,存储在Postgres+pgvector中。
- 聊天称MCP(注:MCP在此处可能是一个特定的名称或缩写,根据上下文可能需要具体翻译,但直接翻译为“聊天称MCP”即可,若MCP有特定含义,则需根据实际情况调整)
search_documents并且可选择调用OpenAI来生成附带来源的答案。
笔记
- 仅处理UTF-8编码的文本内容。对于PDF/DOCX文件,请添加转换器或文本提取步骤。
- 如果
OPENAI_API_KEY未提供:
- MCP服务器无法嵌入文本;请添加您的密钥或将嵌入替换为本地模型。 - 后端聊天将仅返回包含来源的模拟响应。
发展
- 健康检查:
GET /health(后端)和GET /health(mcp-server) 可以翻译为“(多客户端协议服务器)”或者根据具体上下文,也可以简化为“(MCP服务器)”,其中“MCP”可能代表特定的多客户端协议或系统名称。 - 根据您的需求更新分块、维度和模型。
未来的改进方向
- 管理员路由的身份验证。
- PDF/DOCX文件提取。
- 在聊天中实时显示回复。
- 原始文件的持久化对象存储。
连接到数据库
psql -h localhost -p 5432 -U mcp -d mcpdb