LangChain核心组件-记忆Memory

  • 维护对话上下文和历史,实现有状态的连续交互

记忆类型

  • 对话缓冲:保存最近的对话记录
  • 对话摘要:对历史对话进行摘要
  • 向量存储:基于语义的长期记忆
  • 自定义记忆:特定场景的记忆逻辑

简单应用

from langchain.memory import ConversationBufferMemory, ConversationSummaryMemory

# 1. 缓冲记忆 - 保存完整对话历史
buffer_memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)

# 2. 摘要记忆 - 对长对话进行摘要
summary_memory = ConversationSummaryMemory.from_llm(
llm=llm,
memory_key="summary_history"
)

# 在链中使用记忆
from langchain.chains import ConversationChain

conversation = ConversationChain(
llm=llm,
memory=buffer_memory,
verbose=True
)

# 多轮对话
conversation.predict(input="你好,我是小明")
conversation.predict(input="你还记得我的名字吗?") # 能记住上下文

高级记忆模式

# 结合向量数据库的长期记忆
from langchain.vectorstores import Chroma
from langchain.memory import VectorStoreRetrieverMemory

retriever = vectorstore.as_retriever(search_kwargs={"k": 1})
memory = VectorStoreRetrieverMemory(retriever=retriever)

# 记忆会自动保存和检索相关上下文
memory.save_context({"input": "我喜欢Python"}, {"output": "好的,已记录"})
memory.load_memory_variables({"input": "我喜欢的编程语言"})