Ziyu Li's Homepage

Back

文档说明#

本文档说明数据集的制作方式

长程对话到树#

假设我们有一个Locomo10那样的双人长程对话,那么LLM可以很轻松的从其中抽取出fact和树来,他只要自行判断对话当中的事实 属于什么对象就行了,通俗理解就是replay session, 等到session重放了一遍树也就做出来了,

树的分布不均#

实验证明一个长程对话大概能抽取出5-6颗树,但是如果不加限制(如LocoMo那样),容易出现不均,即对话的双方各占了一颗树,然后这两棵树 可能总共占了90%以上的fact,剩下的树基本上是空的

label_plot

上面这个图是从真实的一个locomo10数据集里面的一个长程对话(的一部分)抽出来的4颗树,明显这个对话就是James和John之间的对话, 但是LLM可能识别到其他两个项目也算主体,所以又弄了两棵树,但是fact很少,约等于没有,所以如果我们照着Locomo去造对话的话,大概率会有这个问题

对话的要求#

所以我们需要这样的长程对话:这个长程对话由若干个session组成,最后LLM可以从这个对话里面抽出若干棵树,然后每棵树的fact数量要差不多

如此一来不妨用一个跨session的配平算法来达到这个目的,对话的长度不需要先验的设定,fact不够就让他继续顺下去说就可以了

label_plot

如此一来的话,对话和树都有了,但是作为训练数据集我们不需要对话,把树存下来就好了

树的例子#

来看两件事情:第一是LLM能从一个多轮对话里面抽出几颗什么样的树,第二就是随机的抽一棵树看树的结构如何

我们希望的是:树和树之间,深度和fact数量要差不多,树内上下级关系合理,不要出现极端深度/flat的情况

label_plot

最下面两颗树是副产物,不列入正式训练的,可以看到在这一场Layla和Anh的长对话当中,弄出了5颗fact和深度都差不多的树,达到了我们的要求

再来挑一棵树看看结构

类似于一个一开N的树,没什么大问题

Locomo就只有两个Person的树,为了让训练样本多一点,特意让他多造了一些树

警告#

这里有个工程经验,用LLM造树最好不要让他从上到下开始造,不然的话,很可能他会直接在你上面的aspect上扩写变成下面的fact,这会导致 两个文本相似度过高,有可能模型分不开

Agent Memory Research In MMLab (Part 2)
https://astro-pure.js.org/blog/memory_part2
Author Ziyu(Albert) Li 李子煜
Published at August 4, 2026
Comment seems to stuck. Try to refresh?✨