Skip to content

Latest commit

 

History

History
106 lines (72 loc) · 2.78 KB

File metadata and controls

106 lines (72 loc) · 2.78 KB

MCPO - 自然语言SQL检索系统

MCPO是一个基于自然语言处理技术的SQL检索系统,能够将用户的自然语言查询转换为SQL语句,并执行数据库查询。该系统特别针对中文场景进行了优化,使用了TF-IDF和大语言模型相结合的方法来提高检索精度。

项目特点

  • 使用TF-IDF + jieba分词优化中文检索
  • 支持大语言模型(如Qwen2.5)改写SQL,提高查询精度
  • 提供客户端-服务器架构,支持分布式部署
  • 支持离线应用模式,适用于无网络环境
  • 基于MCP(Model-Client-Protocol)协议实现服务通信

系统架构

项目包含以下主要组件:

  1. 离线应用 (offline_app.py): 独立运行的应用程序,支持自然语言到SQL的转换和数据库查询
  2. MCP服务器 (mcp_server.py): 提供自然语言到SQL转换的服务接口
  3. MCP客户端 (mcp_client.py): 连接到MCP服务器,发送查询请求并获取结果
  4. SQL模板库 (nlsql.json): 包含预定义的自然语言描述和对应SQL模板

技术栈

  • Python 3.x
  • 自然语言处理: jieba分词、TF-IDF向量化
  • 机器学习: scikit-learn (余弦相似度计算)
  • 大语言模型: OpenAI API兼容接口 (支持Qwen、Deepseek等模型)
  • 数据库: MySQL
  • 通信协议: MCP (Model-Client-Protocol)

安装与配置

依赖安装

pip install -r requirements.txt

配置项

offline_app.pymcp_server.py 中可以配置以下参数:

  • 大语言模型API地址和密钥
  • MySQL数据库连接信息
  • 本地模型路径

使用方法

离线应用模式

直接运行离线应用程序:

python offline_app.py

然后根据提示输入自然语言查询,系统会自动检索相关SQL模板,使用大语言模型改写SQL,并执行数据库查询。

客户端-服务器模式

  1. 首先启动MCP服务器:
python mcp_server.py
  1. 然后在另一个终端启动客户端:
python mcp_client.py

客户端会连接到服务器,并发送测试查询。

数据格式

SQL模板库(nlsql.json)的数据格式如下:

[
  {
    "id": 1,
    "description": "自然语言描述",
    "sql": "对应的SQL语句"
  },
  ...
]

工作流程

  1. 用户输入自然语言查询
  2. 系统使用TF-IDF + jieba分词对查询进行处理
  3. 系统从SQL模板库中检索最相关的SQL模板
  4. 使用大语言模型根据用户查询改写SQL语句
  5. 执行改写后的SQL语句并返回结果

日志

系统日志保存在 logs 目录下,可用于追踪系统运行状态和调试问题。

注意事项

  • 确保MySQL数据库已正确配置并可访问
  • 大语言模型API需要正确配置,支持本地部署的模型服务(如Ollama)
  • 系统性能取决于SQL模板库的质量和覆盖范围