LLM Development: LangChain's Memory Types and their Applications for Chatbots
why use memory in LangChain?
1. ConversationBufferMemory:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
# Create LLM and memory components
llm = ChatOpenAI(temperature=0.0) memory = ConversationBufferMemory()
# Create a conversation chain with these components conversation = ConversationChain( llm=llm, memory=memory )
Pros:
Cons:
2. ConversationBufferWindowMemory:
from langchain.memory import ConversationBufferWindowMemory
memory = ConversationBufferWindowMemory(k=3)
llm = ChatOpenAI(temperature=0.0) memory = ConversationBufferWindowMemory(k=3) conversation = ConversationChain( llm=llm, memory=memory )
Pros:
Cons:
3. ConversationTokenBufferMemory:
from langchain.memory import ConversationTokenBufferMemory
memory = ConversationTokenBufferMemory(llm=llm, max_token_limit=60)
llm = ChatOpenAI(temperature=0.0) memory = ConversationTokenBufferMemory(llm=llm, max_token_limit=60) conversation = ConversationChain( llm=llm, memory=memory )
Pros:
Cons:
领英推荐
4. ConversationSummaryMemory:
from langchain.memory import ConversationSummaryMemory
memory = ConversationSummaryMemory(llm=llm)
llm = ChatOpenAI(temperature=0.0)
memory = ConversationSummaryMemory(llm=llm)
conversation = ConversationChain( llm=llm, memory=memory )
Pros:
Cons:
5. ConversationEntityMemory:
from langchain.memory import ConversationEntityMemory
memory = ConversationEntityMemory()
llm = ChatOpenAI(temperature=0.0)
memory = ConversationEntityMemory()
conversation = ConversationChain( llm=llm, memory=memory )
Pros:
Cons:
6. VectorStoreRetrieverMemory:
from langchain.memory import VectorStoreRetrieverMemory
memory = VectorStoreRetrieverMemory()
llm = ChatOpenAI(temperature=0.0)
memory = VectorStoreRetrieverMemory()
conversation = ConversationChain( llm=llm, memory=memory )
Pros:
Cons:
These two memory types offer specialized features catering to specific needs, such as entity tracking and vector-based retrieval, providing flexibility in addressing different requirements within the LangChain framework. The choice depends on the nature of the application and the desired characteristics of memory usage.