Java 端怎么弄大模型的长期记忆

查看 83|回复 9
作者:edg   
目前第一次做大模型的长期记忆这方面,不知道有没有有经验的大哥指导一下。
目前的难点是不知道用哪种库去存以及怎么去做更新。
当前想法:
用 es 做大模型长期记忆存储,现在的 es 结构大致为 category ,key ,value 。其中 category 是大分类,比如用户偏好,需求,个人信息,key 是一个 category 的具体方面,如个人信息中 key 可以是身高,体重,血糖等具体方面,value 就是对应的值。
目前的大致流程:用户问题进来-->通过某种技术来判断是否是长期记忆并且解析出对应的 category ,key ,value(这种技术在我的认知里 java 应该实现不了,这个先不深究,就当能够实现)---->我拿到这些信息对用户记忆做添加或者修改--->再把记忆拼接到 prompt 里面。
因为我第一次弄这方面也不知道可不可行,在网上看了很多也没有一个明确的方向,所以想请教下各位大哥,不知道有没有业界更先进的做法。

Java, 大模型, 长期记忆

frandy   
了解下 langchain4j 或者 spring ai ,不需要自己从头写,2023 年的时候自己写过,原理是将 AI 和人的对话存储到数据库,按照时间排序,然后每次新的对话,就把之前的对话一起拼起来扔给模型,是的,没错,就是这么做的,你去看一些成熟的框架,也是这么做的,好的是,可以根据对话轮次或者文字长度,进行截取。为什么这么做?因为受限于大模型的 token 最大值不是无限的
MIUIOS   
楼上说的基本没错,找下现成框架没必要自己手撸,人家带全套的生态工具,直接套用就行了,都是调 api 只是看谁调的花。
aisk   
拿过去的用户输入,或者做了简单关键词命中的输入,给大模型解析一下让它提取关键信息成你想要的格式,写到 es 里?
Solix   
找个开源记忆项目,vibe coding 重构成 java 结束
maolon   
长期记忆一般分为几种做法
1. 个人 profile ,这种提取信息结构化存 json ,一个用户有且只有一个,读的时候固定读取,用 rdb 就行了
2. 知识库/摘要信息,这种就是你现在用 es 在做的事,但是更常见的做法是存 vector db(然后走 rag 那一套),或者走 graph db 那一套(知识提取为三元组,具体看是哪种类型的知识),这两种市面上都有很多开源库的实现
3. 行为记忆/日程,也就是最近有什么 events/日程之类的,一般用于 recall 用户最近行为(而且需要准确 recall ),很多人会把这个功能合并到知识库里(但是这种一般是 time sensitive ,所以直接合并知识库其实不是特别好管理)
然后在此之上,就是记忆的读取/业务层,比如语义检索,关键字检索,retreive ,trim, summary function 之类的东西,这个看你们业务怎么做了,都是自由发挥
记忆读取出来都是拼接回当前的 context 内(你可以简单理解为 prompt ,但是我更愿意叫他 context ),然后调用模型 api
soap0X   
大模型是无状态无记忆的。最好向量库,不要用传统的库(最近看搜索知道了向量库回想了下之前的知识库,但这里我没实践过)
edg
OP
  
@frandy 也考虑过用框架,但是我们有自己训练的模型所以很早之前手搓了一个,如果引入框架感觉动的刀子太大
edg
OP
  
@aisk 对,目前我的想法就是这样
edg
OP
  
@maolon 好的,谢谢哥,这个我再看下
您需要登录后才可以回帖 登录 | 立即注册

返回顶部