langchain.memory.vectorstore_token_buffer_memory
.ConversationVectorStoreTokenBufferMemory¶
- class langchain.memory.vectorstore_token_buffer_memory.ConversationVectorStoreTokenBufferMemory[source]¶
基类:
ConversationTokenBufferMemory
具有令牌限制和向量数据库支持的对话聊天记忆。
load_memory_variables() 将返回一个字典,键为 “history”。它包含从向量存储检索的背景信息以及当前对话的最新行。
为了帮助 LLM 理解存储在向量存储中的对话部分,每次交互都会被加上时间戳,并且当前日期和时间也会在历史记录中提供。这样做的一个副作用是 LLM 将能够访问当前的日期和时间。
初始化参数
此类接受 ConversationTokenBufferMemory 的所有初始化参数,例如 llm。此外,它还接受以下附加参数
- retriever: (必需) 要使用的 VectorStoreRetriever 对象
作为向量后备存储
- split_chunk_size: (可选,1000) 令牌块分割大小
用于 AI 生成的长消息
- previous_history_template: (可选) 用于格式化的模板
提示历史记录的内容
使用 ChromaDB 的示例
from langchain.memory.token_buffer_vectorstore_memory import ( ConversationVectorStoreTokenBufferMemory ) from langchain_chroma import Chroma from langchain_community.embeddings import HuggingFaceInstructEmbeddings from langchain_openai import OpenAI embedder = HuggingFaceInstructEmbeddings( query_instruction="Represent the query for retrieval: " ) chroma = Chroma(collection_name="demo", embedding_function=embedder, collection_metadata={"hnsw:space": "cosine"}, ) retriever = chroma.as_retriever( search_type="similarity_score_threshold", search_kwargs={ 'k': 5, 'score_threshold': 0.75, }, ) conversation_memory = ConversationVectorStoreTokenBufferMemory( return_messages=True, llm=OpenAI(), retriever=retriever, max_token_limit = 1000, ) conversation_memory.save_context({"Human": "Hi there"}, {"AI": "Nice to meet you!"} ) conversation_memory.save_context({"Human": "Nice day isn't it?"}, {"AI": "I love Wednesdays."} ) conversation_memory.load_memory_variables({"input": "What time is it?"})
- param ai_prefix: str = 'AI'¶
- param chat_memory: BaseChatMessageHistory [Optional]¶
- param human_prefix: str = 'Human'¶
- param input_key: Optional[str] = None¶
- param llm: BaseLanguageModel [Required]¶
- param max_token_limit: int = 2000¶
- param memory_key: str = 'history'¶
- param output_key: Optional[str] = None¶
- param previous_history_template: str = '\nCurrent date and time: {current_time}.\n\nPotentially relevant timestamped excerpts of previous conversations (you \ndo not need to use these if irrelevant):\n{previous_history}\n\n'¶
- param retriever: VectorStoreRetriever [Required]¶
- param return_messages: bool = False¶
- param split_chunk_size: int = 1000¶
- async aclear() None ¶
清除内存内容。
- 返回类型
无
- async aload_memory_variables(inputs: Dict[str, Any]) Dict[str, Any] ¶
异步返回给定链的文本输入的键值对。
- 参数
inputs (Dict[str, Any]) – 链的输入。
- 返回
键值对的字典。
- 返回类型
Dict[str, Any]
- async asave_context(inputs: Dict[str, Any], outputs: Dict[str, str]) None ¶
将此对话的上下文保存到缓冲区。
- 参数
inputs (Dict[str, Any]) –
outputs (Dict[str, str]) –
- 返回类型
无
- clear() None ¶
清除内存内容。
- 返回类型
无
- load_memory_variables(inputs: Dict[str, Any]) Dict[str, Any] [source]¶
返回历史记录和内存缓冲区。
- 参数
inputs (Dict[str, Any]) –
- 返回类型
Dict[str, Any]
- save_context(inputs: Dict[str, Any], outputs: Dict[str, str]) None [source]¶
将此对话的上下文保存到缓冲区。已修剪。
- 参数
inputs (Dict[str, Any]) –
outputs (Dict[str, str]) –
- 返回类型
无
- save_remainder() None [source]¶
将对话缓冲区的剩余部分保存到向量存储。
如果您已使向量存储持久化,这将非常有用,在这种情况下,可以在会话结束前调用此方法以存储对话的剩余部分。
- 返回类型
无
- property buffer: Any¶
内存的字符串缓冲区。
- property buffer_as_messages: List[BaseMessage]¶
如果 return_messages 为 True,则将缓冲区公开为消息列表。
- property buffer_as_str: str¶
如果 return_messages 为 False,则将缓冲区公开为字符串。
- property memory_retriever: VectorStoreRetrieverMemory¶
从传递的 retriever 对象返回一个内存检索器。