自己的第一个开源项目 db2llm

176 天前
 Loocor

https://github.com/loocor/db2llm

仅仅是个原型,用于验证传统系统的数据库与 LLM 互通的方式的 ...

兄弟们帮我点点 star 我去换个 idea 的授权呢 🫣


DB2LLM 最小化原型

概述

DB2LLM 是一个将 SQLite 数据库的元数据与 RESTful API 和大型语言模型( LLM )结合的最小化原型。它允许用户通过自然语言与数据库进行交互,无需编写 SQL 查询或了解数据库结构。当前为便于演示,使用 SQLite 数据库,实际使用时,请使用自己的数据库并更新相关的配置。

功能特点

技术栈

快速开始

前提条件

安装

  1. 克隆仓库
git clone https://github.com/loocor/db2llm.git
cd db2llm
  1. 安装依赖
bun install
  1. 配置 LLM 修改 config/config.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 提供商:

运行

bun run dev

应用将在 http://localhost:3000 启动。

使用方法

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

示例查询

数据库支持

字段类型

元数据

注意事项

许可证

MIT

2930 次点击
所在节点    程序员
15 条回复
ferock
176 天前
db , 这个形状...
Loocor
176 天前
@ferock 😂 啥奇怪的关注点
twig
176 天前
,,,,
db
EastLord
176 天前
貌似有不少同类型的产品
Loocor
176 天前
@EastLord 嗯啊,不过我也是发了才知道 Chat2DB 这类产品。不过我这个就是个技术方案演示,算不得产品😂
elffkdx
176 天前
楼主有微信吗?
Alexf4
176 天前
昨晚简单撸了个 MySQL MCP Server, 感觉就是类似这种场景的。但是现在还要依赖一些支持 MCP 的组件。
aminobody
176 天前
text2sql
Loocor
176 天前
@elffkdx MTgyODAwNTg0MDU= 🤝
Loocor
176 天前
@Alexf4 MCP Server 因该是更规范灵活的做法,但我没深入了解过 MCP 架构,就选了这种最简单的方式来实现了
Loocor
176 天前
@aminobody 😂 还是交流好,这个 text2sql 还有 Chat2DB 之前都没留意。从 text2sql 官网看它的实现基础估计也是基于数据库的 meta 信息做文章
Wxh16144
176 天前
@Loocor #10 https://github.com/modelcontextprotocol/servers/tree/main/src/sqlite 这个例子差不多🤔,大家都遵循 MCP 最好了
Loocor
176 天前
@Wxh16144 确实,遵循一致的规范有必要,下来得学习下 MCP 。

代码上我大概看了下,不知道这个方案是如何处理表、字段命名一致性的问题。看起来它完全依赖于 LLM 的判断来生成表名,这可能会导致几个潜在的问题:
1 、命名不一致:
- 同样的概念可能会用不同的表名( customers/clients/users )
- 不同的会话可能产生不同的命名选择
- 缺乏命名规范的强制执行
2 、结构不一致:
- 字段名称可能不统一( first_name/firstname/fname )
- 数据类型可能不一致( VARCHAR/TEXT, INT/INTEGER )
- 缺乏字段定义的标准化
3 、关系混乱:
- 外键引用可能使用不同的表名
- 索引命名可能不统一
- 缺乏关系模式的规范

db2llm 不同,默认是 db first 模式,现在的例子里是通过已有的 meta 信息来约束 llm 生成的请求,从而保证请求一致性的问题。但是除了 mcp 规范的欠缺外,其实对比前面这几个方案来看创建记录没问题但要新增表的话,一样也会出现一致性的毛病,我看看有没有其他的模式来处理这个问题
Greatshu
175 天前
博客园有个 chat2db ,感觉和你差不多
Loocor
174 天前
@Greatshu 他那个更完整,是产品向的东西,我这个勉强算是个初期技术模板🥲

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1117108

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX