DB2LLM 是一个将 SQLite 数据库的元数据与 RESTful API 和大型语言模型(LLM)结合的最小化原型。它允许用户通过自然语言与数据库进行交互,无需编写 SQL 查询或了解数据库结构。当前为便于演示,使用 SQLite 数据库,实际使用时,请使用自己的数据库并更新相关的配置。
与Chat2DB等已有的方案不同,DB2LLM旨在尝试用简洁清晰的实现展示 "如何在技术层面实现数据库与 LLM 的有效连接" 的一种技术方法,为开发者提供灵感和基础构建块,而不是试图成为中间件或产品。
功能特点
- 提供用户对话窗口,支持配置 LLM 的 API 地址和授权密钥
 - 支持用户指定 SQLite 数据库文件
 - 自动分析数据库结构,提取元数据信息
- 表结构和字段信息
 - 字段枚举值映射(如性别:男/女、male/female 等)
 - 主键、外键和索引信息
 
 - 动态生成 RESTful API,用于数据库操作
 - 智能会话管理
- 支持上下文记忆,理解后续查询
 - 会话超时自动清理(30分钟)
 - 结果摘要生成
 
 - 将用户自然语言查询转换为 API 请求
 - 执行 API 请求并返回结果
 - 支持多步骤复杂查询
 
技术栈
- 运行时: Bun
 - Web 框架: Hono
 - 数据库: SQLite
 - ORM: TypeORM
 - LLM 集成: OpenAI API 及兼容接口
 
快速开始
前提条件
- 安装 Bun 运行时
 - 准备一个 SQLite 数据库文件
 - 获取 OpenAI API 密钥或其他兼容的 LLM API 密钥
 
安装
- 克隆仓库
 
            
            
              bash
              
              
            
          
          git clone https://github.com/loocor/db2llm.git
cd db2llm
        - 安装依赖
 
            
            
              bash
              
              
            
          
          bun install
        - 配置 LLM 修改 
config/config.yaml文件: 
            
            
              yaml
              
              
            
          
          server:
  port: 3000
  host: "localhost"
database:
  tempDir: "db2llm"
  defaultName: "db2llm.sqlite"
  connection:
    synchronize: false
    logging: ["error", "warn"]
llm:
  provider: "deepseek"
  openai:
    model: "deepseek-chat"
    temperature: 0.3
    defaultApiUrl: "https://api.deepseek.com/v1"
    apiKey: "sk-4c907ed3eed5468db793b6f431e9a28c"
ui:
  title: "DB2LLM - 数据库对话助手"
  welcomeMessage: "欢迎使用 DB2LLM 数据库对话助手!请先连接数据库和配置 LLM API。"
  readyMessage: "我已准备好,跟我来聊吧!"
        支持的 LLM 提供商:
- DeepSeek API(默认)
 - OpenAI API
 - Azure OpenAI
 - Claude API
 - 其他兼容 OpenAI API 格式的服务
 
运行
            
            
              bash
              
              
            
          
          bun run dev
        应用将在 http://localhost:3000 启动。
使用方法
- 打开浏览器访问 http://localhost:3000
 - 上传 SQLite 数据库文件
 - 输入 LLM API 密钥(和可选的 API 地址)
 - 点击"连接"按钮
 - 连接成功后,在对话框中输入自然语言查询
 - 系统将自动处理查询并返回结果
 
示例查询
- "显示所有用户信息"
 - "查找所有女性用户"
 - "统计男性用户数量"
 - "添加一个新用户,姓名为李四,性别男,年龄30岁"
 - "更新ID为5的用户的电话号码为13812345678"
 - "删除ID为10的用户"
 - "再找找看"(基于上下文的后续查询)
 
数据库支持
字段类型
- 基本类型:INTEGER, TEXT, NUMBER 等
 - 支持自定义枚举值映射,如:
- 性别:['女', 'female', 'f', '2', '0'] -> 女性
 - 状态:['active', '1', '启用'] -> 启用
 
 
元数据
- 表结构信息
 - 字段属性(主键、非空等)
 - 字段枚举值映射
 - 外键关系
 - 索引信息
 
注意事项
- 本项目是一个概念验证原型,不建议在生产环境中使用
 - 未实现用户认证和授权机制
 - 未优化大型数据库的性能
 - API 密钥直接在前端输入,存在安全风险
 - 会话数据存储在内存中,服务重启后会丢失
 
许可证
MIT