有没有可能用数据库内容训练ai模型,然后通过自然语言对数据库直接进行各种访问?
然后有可能你为了得到想要的结果,写出来的 prompt 比 sql 还啰唆。
我想的是直接输出最终结果,而不是sql,面向最终用户的。
你曲解了我的意思。
楼主的描述不太清楚啊, 我觉得你想要的不是 “用数据库内容训练 gpt” 而是 “训练 gpt 使用数据库查询结果并汇总”. 前者没什么意义因为一般数据库内容太少基本被 gpt 的整个语料库淹没掉了.
后面这项其实就是 new bing 做的事情. 微软会先给 gpt 类似这样的一段提示词:
用户提问时, 你可以输出 QUERY(keyword) 查询相关信息, 综合之后作答.
微软会扫描 gpt 输出, 遇到 QUERY(...)
这种格式的就调用搜索引擎 api 查询相关内容给 gpt (这部分用户看不到), gpt 理解之后再汇总给用户. gpt 可以现场学会使用这些, 不需要重新训练模型参数.
放在楼主这个问题里面, 就是把前面提示词里的 QUERY
换成要求 gpt 自己写 sql 语句, 你自己再写个工具扫描它的输出, 遇到它输出 SQL(SELECT * ...)
之类的就拿到数据库查了结果给它.
问题是 gpt 用简单的工具还成, sql 有点复杂, 它不一定能用得好.
前几天 meta 有篇文章就是讲这个的, 有兴趣的话可以参考: [2302.04761] Toolformer: Language Models Can Teach Themselves to Use Tools
如果是简单的查询,直接让chatgpt干就行了。因为像sql这样很简单的语言chatgpt是不太可能出错的,你只要事先喂给他你的表的名字和字段啥的,然后用自然语言说你想要查什么数据,他都能给你写正确。
不过 gpt 目前支持的上下文长度是有限的,如果你的表太多字段也太多,可能会导致预输入文本太长,没办法支持后续的完整的交互。
但是如果你需要很复杂的查询,那肯定会很麻烦,因为自然语言是很不精确的,一旦逻辑复杂起来,想用自然语言讲清楚一个查询逻辑,复杂程度是几何程度的递增。当逻辑复杂起来以后,我们也是用类似伪代码的程度来描述逻辑,而不是用通俗的自然语言。这种时候打半天 prompt 还要考虑自然语言可能没有说清楚的问题,干脆不如直接写 SQL了。
可以的吧,但数据库表结构和与其它表的关系不要设计得太复杂了。数据表结构设计得很简单,sql就不会写出很复杂的查询,这样用prompt自然语言写查询就可以做到。
如果不得不把数据表结构逻辑设计得很复杂,那不如直接写sql,不要用自然语言。