DB2LLM | 传统数据库链接大语言模型的最小化原型

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 密钥

安装

  1. 克隆仓库
bash 复制代码
git clone https://github.com/loocor/db2llm.git
cd db2llm
  1. 安装依赖
bash 复制代码
bun install
  1. 配置 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 启动。

使用方法

  1. 打开浏览器访问 http://localhost:3000
  2. 上传 SQLite 数据库文件
  3. 输入 LLM API 密钥(和可选的 API 地址)
  4. 点击"连接"按钮
  5. 连接成功后,在对话框中输入自然语言查询
  6. 系统将自动处理查询并返回结果

示例查询

  • "显示所有用户信息"
  • "查找所有女性用户"
  • "统计男性用户数量"
  • "添加一个新用户,姓名为李四,性别男,年龄30岁"
  • "更新ID为5的用户的电话号码为13812345678"
  • "删除ID为10的用户"
  • "再找找看"(基于上下文的后续查询)

数据库支持

字段类型

  • 基本类型:INTEGER, TEXT, NUMBER 等
  • 支持自定义枚举值映射,如:
    • 性别:['女', 'female', 'f', '2', '0'] -> 女性
    • 状态:['active', '1', '启用'] -> 启用

元数据

  • 表结构信息
  • 字段属性(主键、非空等)
  • 字段枚举值映射
  • 外键关系
  • 索引信息

注意事项

  • 本项目是一个概念验证原型,不建议在生产环境中使用
  • 未实现用户认证和授权机制
  • 未优化大型数据库的性能
  • API 密钥直接在前端输入,存在安全风险
  • 会话数据存储在内存中,服务重启后会丢失

许可证

MIT

相关推荐
有梦想的攻城狮1 天前
大语言模型与多模态模型比较
人工智能·语言模型·自然语言处理·llm·大语言模型
幸福回头2 天前
ms-swift 代码推理数据集
llm·swift
亚里随笔2 天前
AlphaEvolve:LLM驱动的算法进化革命与科学发现新范式
人工智能·算法·llm·大语言模型
水煮蛋不加蛋4 天前
RAG 赋能客服机器人:多轮对话与精准回复
人工智能·ai·机器人·大模型·llm·rag
zstar-_4 天前
FreeTex v0.2.0:功能升级/支持Mac
人工智能·python·macos·llm
江小皮不皮4 天前
为何选择MCP?自建流程与Anthropic MCP的对比分析
人工智能·llm·nlp·aigc·sse·mcp·fastmcp
q_q王5 天前
‌FunASR‌阿里开源的语音识别工具
python·大模型·llm·语音识别
pedestrian_h5 天前
Spring AI 开发本地deepseek对话快速上手笔记
java·spring boot·笔记·llm·ollama·deepseek
浪淘沙jkp5 天前
AI大模型学习二十、利用Dify+deepseekR1 使用知识库搭建初中英语学习智能客服机器人
人工智能·llm·embedding·agent·知识库·dify·deepseek
HuggingFace5 天前
大模型评估排障指南 | 关于可复现性
大模型·llm