清华大学和北京智源人工智能研讨院的研讨者们提出了ChatDB:用数据库作为符号性回忆模块来增强壮言语模型。
随着大言语模型(Large Language Models)的爆火,例如 ChatGPT,GPT-4,PaLM,LLaMA 等,如何让大言语模型更好的应对有很长的上下文信息(超出其最大处理长度)的场景并运用相关前史信息做杂乱的推理,成为一个热门研讨话题。现有的干流做法是给大言语模型添加回忆(memory)模块,在需求的时候从回忆模块中提取相关的前史信息帮助大言语模型。
近期,清华大学和北京智源人工智能研讨院的研讨者们提出了一种新型的符号性(symbolic) 回忆模块。他们从现代核算机架构中汲取创意,运用符号性回忆模块来增强壮型言语模型。这种符号性回忆模块可以运用符号性的操作,准确的操控回忆模块中的信息。这样的符号性回忆框架由一个大言语模型(如 ChatGPT)和一个数据库组成,称为 ChatDB。其间大言语模型担任操控对回忆模块的读写操作。在 ChatDB 中,大言语模型经过生成 SQL 指令来操作数据库,然后完结对回忆模块中前史信息准确的增修改查,并在需求时为大言语模型供给信息,以帮助其回应用户的输入。这项研讨可以让大言语模型胜任需求对前史信息进行长期且准确的记载、处理和剖析的场景,例如各种办理和剖析体系,以后甚至有望代替办理者,直接让大言语模型依据准确的前史数据做剖析和决议计划。
相关论文为:ChatDB: Augmenting LLMs with Databases as Their Symbolic Memory,代码已开源。
- 论文地址:arxiv.org/abs/2306.03…
- 项目主页:chatdatabase.github.io
- 项目代码:github.com/huchenxucs/…
推特上一些闻名的机器学习和自然言语处理研讨者也对这项研讨进行了宣传:
与相关作业的对比
之前的回忆模块首要分为,Prompt-based memory 和 Matrix-based memory 两类。Prompt-based memory 是将之前的前史文本和相应文本的 vector embedding 保存下来,需求的时候再运用 vector embedding 间的类似性找到相关的前史信息,然后放到 prompt 中,作为大言语模型的输入,相关的作业有 Auto-GPT 和 Generative Agents 等等。Matrix-based memory 是运用额外的 memory tokens 或许 memory matrices 来记载前史信息,相关的作业有 Recurrent Memory Transformer 等等。之前这些回忆模块的设计,要么需求依托文本的 vector embedding 之间的类似度,要么将前史信息隐式地存储在神经网络的权重中,都触及神经性(neural)的操作,无法像符号性操作那样准确操作回忆模块中的前史信息。
它们的首要问题有两点:(1) 没有以结构化的办法存储前史信息;(2) 对存储在回忆模块中的信息的操作不行准确:它们依赖于一些向量类似度的核算,这可能不准确,长期下来或许进行多步推理的时候就会导致过错的堆集。
ChatDB 学习之前 Neuro-symbolic AI 的一些作业,如 Neural Symbolic Machines,运用支撑 SQL 指令的数据库作为符号性回忆模块,来支撑对前史信息笼统的(abstract),可拓宽的(scalable)和准确的(precise) 的操作。这些都是引入符号性回忆模块所带来的优势。符号性回忆模块还可以跟之前的回忆模块一起运用,起到相辅相成的作用。
之前的一些大言语模型和数据库结合的作业(比如DB-GPT和ChatExcel)也触及用大言语模型生成 SQL 或 Excel 的指令,但 ChatDB 跟它们有本质上的不同。DB-GPT 和 ChatExcel 更多重视运用大言语模型处理自然言语到 SQL 或 Excel 指令的转化,而且更多只是用来处理查询的问题,数据源本身是给定好的。ChatDB 则是将数据库作为符号性回忆模块,不只触及查询,包含了数据库的增修改查等一切操作,整个数据库是从无到有,不断记载并更新大言语模型的前史信息。而且,ChatDB 中的数据库,即符号性回忆模块,是与大言语模型紧密关联、融为一体的,可以帮助大言语模型进行杂乱的多步推理。
从大言语模型运用东西的视角来看,类比之前的作业 Toolformer 和 Langchain,ChatDB 将符号性回忆模块(即数据库)用作东西。其优势在于,关于需求运用准确前史数据进行多步推理的问题,它可以让大言语模型更准确的存储并运用前史数据,而且可以运用数据库存储和再运用推理的中心成果,然后取得更好的效果。
重要意义
该作业对大言语模型(LLMs)范畴做出了如下几个奉献:
- 首先,提出了 ChatDB—— 一个用数据库作为 LLMs 的符号性回忆模块来增强 LLMs 的框架。这使得前史数据可以准确的以结构化的办法进行存储,而且支撑运用 SQL 句子进行笼统的、可拓宽的、准确的数据操作。
- 其次,提出了Chain-of-Memory(CoM,回忆链) 办法,经过将用户输入转化为多步中心的回忆操作,完结了对回忆模块中前史信息的杂乱操作。这提高了 ChatDB 的功能,使其可以处理杂乱的、触及多个表的数据库交互,并提高了准确性和稳定性。
- 最后,将符号性回忆模块与 LLMs 结合,可以防止过错的累积,方便地存储中心成果,然后提高了多步推理(multi-hop reasoning)能力,使 ChatDB 在组成数据集上明显优于 ChatGPT。
办法
ChatDB 框架包含三个首要阶段:input processing(输入处理),chain-of-memory(回忆链),和 response summary(总结回复),如图 2 所示。
1 输入处理:关于用户的输入,如果不触及运用回忆模块,则直接生成回复;如果需求回忆模块,如查询或许更新数据库,言语模型则生成与回忆模块交互的一系列 SQL 句子。
2 回忆链:履行一系列回忆操作来与符号性回忆模块交互。ChatDB 按照从前生成的一系列 SQL 句子顺次操作符号性回忆模块,包含插入、更新、选择、删除等操作。外部数据库履行相应的 SQL 句子,更新数据库并返回成果。值得注意的是,在履行每一步回忆操作之前,ChatDB 会依据从前 SQL 句子的成果决定是否更新当时回忆操作。ChatDB 按照此进程履行每一步回忆操作,直到一切回忆操作完结。
3 总结回复: 言语模型归纳与数据库交互得到的成果,并对用户的输入做出总结回复。
其间 Chain-of-Memory(CoM,回忆链)是一个新提出的办法,以更有效地操作符号性回忆模块,然后进一步增强 LLMs 的推理能力。回忆链办法将用户输入转化为一系列中心回忆操作过程,将杂乱的问题用多个回忆操作过程来处理,每个中心过程触及一个或多个 SQL 句子,大大下降了处理问题的杂乱度。
试验和成果
试验设置:为了验证 ChatDB 中将数据库作为符号性回忆模块来增强壮言语模型的有效性,并与其他的模型进行定量比较,作者构造了一个模仿一家生果店的运营办理的组成数据集。该数据命名为 “生果商铺数据集”,其间包含了 70 条按时刻次序生成的商铺记载,总共约有 3.3k 个 tokens(小于 ChatGPT 最大上下文窗口长度 4096)。这些记载包含生果店的四种常见操作:收购、出售、价格调整和退货。为了评价模型的功能,作者针对出售记载收集了 50 个问题,并为这些问题标注了标准答案。这些问题首要触及商铺数据的剖析和办理,它们难度各不相同,既包含需求进行多次推理的困难问题,也包含只需从前史数据中检索信息的简略问题。其间包含了 15 个简略问题和 35 个困难问题。
模型对比:ChatDB 模型中的 LLM 模块运用了 ChatGPT (GPT-3.5 Turbo),温度参数设置为 0,并运用 MySQL 数据库作为其外部符号性回忆模块。对比的基线模型为 ChatGPT (GPT-3.5 Turbo),最大的上下文长度为 4096,温度参数也设置为 0。
目标成果:作者在生果商铺问答数据集上进行了试验,相关于 ChatGPT,ChatDB 在这些问题的解答上展现出了明显的优势。
表 1:答复生果商铺数据集中问题的正确率
作者表明目前试验还只是在一个简略的组成数据集上进行的,之后会在更杂乱更贴近实际需求的场景下进行试验,拓宽 ChatDB 的应用价值。
Demo 展现
下面是用大言语模型作为店长经营一家生果商铺的例子:
商铺进货
顾客购买商品
顾客退货
剖析商铺前史记载
ChatDB 交互示例:
ChatDB对生果商铺数据集中四种常见操作的回应:
ChatDB和ChatGPT答复问题的示例:
这三个例子中,ChatGPT无法正确答复任何问题,但ChatDB成功答复了一切问题。
团队介绍
该论文来自于清华大学 MARS Lab和北京智源研讨院,论文的作者为清华大学博士生胡晨旭,杜晨壮,骆思勉,指导老师为付杰,赵行,赵俊博。
清华大学MARS Lab,是清华大学交叉信息院下的人工智能试验室,由赵行教授组建和指导。咱们测验处理一系列探索性的AI问题,而且一直在寻觅新的挑战。当时咱们特别感兴趣如何让机器像人相同的可以经过多种感知输入进行学习、推理和交互。咱们的研讨涵盖了许多基础AI问题及其应用:(1)多媒体核算, (2)自动驾驶, (3)机器人。
了解概况,请点击阅读原文检查项目主页。