admin管理员组

文章数量:1437103

AI超级智能体教程(六)

1.自定义文件持久化ChatMemory

1.1相关原理

原理的话,就是我们的持久化存储,也就是说,我们需要把消息保存到文件或者是数据库里面,之前我们都是基于内存的操作,但是内存这个东西一断电就没有了,显然是不可取的,因此我们需要一个更加高效的方案进行相关的设计;

一个方法就是保存到数据库里面,这个是需要引入数据库相关的以来的,另外一个方法就是保存到文件里面去,但是这个涉及到我们的消息和文本的转换,消息就是我们和大模型对话的,你想要把他进行持久化的存储,这个时候需要转换成为我们的文本文件类型的语言,例如这个txt之类的,保存的时候需要转换,从文本文件读取成为消息的时候同样是需要进行转换的;

这个 不断的转换的过程实际上就是我们的序列化和反序列化的过程,下面的代码里面我们会具体的进行相关的说明

1.2具体实现

在我们的pomm.xml里面引入下面的这个依赖:这个kyro依赖就是我们需要使用的这个依赖

image-20250504122015901
代码语言:javascript代码运行次数:0运行复制
<dependency>
        <groupId>com.esotericsoftware</groupId>
        <artifactId>kryo</artifactId>
        <version>5.6.2</version>
</dependency>

下面的这个,就是我们新建一个包包,搞一下这个序列化反序列化的相关问题,这个里面需要置顶一下我们的文件保存在哪一个目录下面,我们后面就回去调用这个相关的方法;

image-20250504144612220

下面的这个实际上就是CURD的方法,一共是三个方法,对文本信息进行读取啥的,清除,以及文本的内容的添加;

image-20250504144736494

下面的这个进行的就是我们的序列化和反序列化的相关操作,主要就是我们的kryo这个东西进行我们的文本和消息之间的转换

image-20250504144835013

1.3测试用例

这个实际上就不用去写这个测试用例,直接运行,这个对应的目录生成出来,对应的大模型的回答也会在我们的指定的目录下面产生,这个就没有问题了,这个就相当于是把我们的大模型输出的消息转换成为文本,保存到我们的磁盘里面去了,这个就实现了这个数据的持久化存储的功能;

image-20250504145040180

2.RAG实战—文档的读取和加载

RAG相关的有很多原理,但是全部是理论,大家可以去网上找一些相关的科普视频啥的学习一下,我这里就不去说明了;

我们主要去看一下这个文档是怎么被加载和读取的;

2.1引入MD文件读取依赖

下面的这个依赖就是我们的MD文件的读取的相关依赖,看这个字面意思相信大家也是可以理解的;

image-20250504124039991

2.2准备需要用到的文档

下面的这个就是鱼皮准备的这个文档,我们直接整到我们的项目文件里面就可以了:

image-20250504145353343

2.3编码进行读取

下面的这个导包的时候需要注意一下:

image-20250504124343925

下面的这个即使我们的读取文档的代码:先指定我们需要读取的这个文档是在哪一个路径下面的,然后进行读取,把这个结果保存到一个列表里面去即可;

image-20250504145553360

我们可以通过调试的过程,看到下面的这个类似的结果情况:我们一共是三个文档嘛,所以一共是10个消息的分割结果,因为是从0开始进行编号的,因此这个就是0-14,每一个文档相当于是被切割成为了5个不同的部分罢了;

文档嘛,所以一共是10个消息的分割结果,因为是从0开始进行编号的,因此这个就是0-14,每一个文档相当于是被切割成为了5个不同的部分罢了;

image-20250504144103629
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-05-04,如有侵权请联系 cloudcommunity@tencent 删除模型序列化原理存储教程

本文标签: AI超级智能体教程(六)