59.llama_index-记忆(基础使用) 📅 2026/7/19 9:28:45 内容参考于图灵AI大模型全栈记忆文档地址https://developers.llamaindex.ai/python/framework-api-reference/memory/bedrock_agentcore/存储聊天记录最基础的是ChatMemoryBuffer出了ChatMemoryBuffer还有ChatSummaryMemoryBuffer、VectorMemory、SimpleComposableMemory大模型它本身是不记任何东西的所以我们需要手动把历史内容保存下来存储历史内容也要注意存储的方式、每次给大模型多少个历史记录、存储多长时间这三个问题如果随意的存储时间长了历史记录多了大模型会出现幻觉、推理会变得卡顿、token也会花费很多然后存储的周期现在一般是持久化持久化可以理解为永久存储但是要对每一条记录加一个时间不然很久之前过时的内容也会被拿出来ChatSummaryMemoryBuffer它会对历史记忆进行压缩对历史对话进行总结但是时间长了历史记录也是很多针对“怎么存”和“喂多少”的问题它会请个“小秘书”把旧对话总结成一段摘要这样存的东西少了很多每次喂的时候也省 token。但时间一长摘要本身也会越攒越长最后“喂多少”的问题又会冒出来而且总结必然会有信息丢失一些细节就再也找不回来了。VectorMemory它会把聊天记录向量化可以长期存储直接把对话转成向量一种数学坐标扔进向量库。这招同时解决了“怎么存”和“存多久”的难题靠语义检索总能快速搜到相关历史哪怕是很久以前的存储成本也比存原文低长期存着也不怕。但它的弱点是如果问题太模糊或措辞差太远可能搜出一些不沾边的内容而且原始对话被向量化后那种一字不差的精确记忆就没了。SimpleComposableMemory组合记忆使用多个Memory这就是个“记忆工具箱”让你可以把好几种记忆组合在一起用。比如最近的对话用缓存记忆保证准确和速度稍早的用摘要记忆省空间特别久远但重要的内容交给向量记忆去搜。这样可以取长补短但也意味着搭建更复杂得自己平衡三个问题在每段记忆上的处理策略否则组合不好反而更乱。记忆基础存储使用存储历史记录的效果图存储的内容读取历史记录的效果图使用上方的代码会在它同级目录下创建用于保存历史记录的文件代码from llama_index.core.memory import ChatMemoryBuffer from llama_index.core.storage.chat_store import SimpleChatStore from llama_index.core.llms import ChatMessage, MessageRole # chat_store SimpleChatStore() # # # # 创建Memory # memory ChatMemoryBuffer( # token_limit1500, # memory.get() 最多返回约 1500 token 的历史记录超出会裁剪旧消息 # chat_storechat_store, # 指定聊天记录的存储后端不指定时默认使用内存中的 SimpleChatStore # chat_store_keyuser1 # 用户id # ) # # # 添加聊天记录 # memory.put( # ChatMessage( # roleMessageRole.USER, # content我叫张三 # ) # ) # # memory.put( # ChatMessage( # roleMessageRole.ASSISTANT, # content你好张三 # ) # ) # # # 查看历史 # print(memory.get()) # # 持久化保存 # chat_store.persist(./chat_store.json) # 读取持久化的聊天记录 chat_store SimpleChatStore.from_persist_path( ./chat_store.json ) memory ChatMemoryBuffer( token_limit1500, chat_storechat_store, chat_store_keyuser1# 用户id ) print(memory.get())