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 对象返回一个内存检索器。