链载Ai

标题: 基于聊天记录的问答——数据分块篇 [打印本页]

作者: 链载Ai    时间: 昨天 18:52
标题: 基于聊天记录的问答——数据分块篇

前言

有一段时间没有更新文章了,最近决定梳理一下这几个月一直在忙的聊天记录问答项目,分享一下作者的心得。

实际上,整个项目不止是基于聊天记录的问答,这里以聊天记录问答为例,是为了各位读者便于理解。

其它信息在这里不便多说,希望各位读者能够理解。

话不多说,咱们直接进入正题。

整个项目打算分为两块来讲:

一、数据样例

在这里插入图片描述在这篇文章中,我们只需要关注右侧的聊天记录部分。

二、分析

从上图的数据样例可以看出,我们有几个可选的方案:

具体的方案,读者可以自行思考优劣,咱们在这里不展开叙述(下一篇讲)。

很显然,我们首先可以排除 “将每条消息embedding,直接做RAG” 的方案,因为这样做,我们检索出来的消息,几乎都长得一样,并且非常碎片化,基于这些数据生成的回答,往往不够全面。

那么,剩下的方案,看起来都是有效的,事实也确实如此,我们最终的方案便是三者结合。

NaiveRAG和GraphRAG有一个共同点:由于LLM最大上下文限制,当两人的聊天记录非常多时,需要对数据分块。

实际上,我们的业务不仅需要做问答,还需要对聊天记录摘要,因此,合理的数据分块,是非常重要的。

这便引出了我们这篇博客主题。

三、如何做

我们的核心原则:不能把同一个话题划分到多个窗口,要尽量保持话题的完整性。

结合我们平时的聊天习惯很容易想到的是:当两条消息的发送时间间隔不长时,那他们大概属于同一个话题。

很显然,这是对的。

我们的做法:

  1. 基于消息发送时间间隔划分

通过时间间隔划分好窗口后我们发现,有些话题,还是被划分到多个窗口去了,比如:有些消息没有得到及时回复,可能间隔了三五个小时,但他们确实属于同一个话题,应该被划分到同一个窗口。

  1. 合并相似窗口






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5