短期记忆暂时存储最近的感知,它会接收一些感觉记忆,并且可以通过其他观察或检索的记忆来增强它以进入长期记忆。

在大多数情况下,短期记忆类似于LLM约束的上下文窗口内的输入信息。所以你可以认为短期记忆在大多数情况下都会被写入LLM的提示词中。

使用短期记忆

  1. from dbgpt.agent import AgentMemory, ShortTermMemory
  2. # Create an agent memory, which contains a short-term memory
  3. memory = ShortTermMemory(buffer_size=2)
  4. agent_memory: AgentMemory = AgentMemory(memory=memory)
  1. 跟感知记忆一样,短期记忆也有buffer size,当buffer满时,将保留最新的`buffer_size` 记忆,并且一些被丢弃的记忆将被转移到长期记忆中。

默认的短期记忆是FIFO记忆,这里暂不做详细介绍。

短期记忆增强

与人类短期记忆一样,DB-GPT智能体的短期记忆可以通过外部观察来增强。 这里我们介绍一种增强短期记忆,称为EnhancedShortTermMemory 你需要提供一个Embedding嵌入模型。

准备Embedding模型

DB-GPT支持许多的Embedding模型,此处是其中一些展示

OpenAI(API)
  1. import os
  2. from dbgpt.rag.embedding import DefaultEmbeddingFactory
  3. api_url = os.getenv("OPENAI_API_BASE", "https://api.openai.com/v1") + "/embeddings"
  4. api_key = os.getenv("OPENAI_API_KEY")
  5. embeddings = DefaultEmbeddingFactory.openai(api_url=api_url, api_key=api_key)
text2vec(local)
  1. from dbgpt.rag.embedding import DefaultEmbeddingFactory
  2. embeddings = DefaultEmbeddingFactory.default("/data/models/text2vec-large-chinese")
Embedding API Server(cluster)


如果你已经部署了DB-GPT集群模式和APIServer,你可以链接API server获取到embeddings

  1. from dbgpt.rag.embedding import DefaultEmbeddingFactory
  2. embeddings = DefaultEmbeddingFactory.remote(
  3. api_url="http://localhost:8100/api/v1/embeddings",
  4. api_key="{your_api_key}",
  5. model_name="text2vec"
  6. )

使用增强的短期记忆

  1. from concurrent.futures import ThreadPoolExecutor
  2. from dbgpt.agent import AgentMemory, EnhancedShortTermMemory
  3. # Create an agent memory, which contains a short-term memory
  4. memory = EnhancedShortTermMemory(
  5. embeddings=embeddings,
  6. buffer_size=2,
  7. enhance_similarity_threshold=0.5,
  8. enhance_threshold=3,
  9. executor=ThreadPoolExecutor(),
  10. )
  11. agent_memory: AgentMemory = AgentMemory(memory=memory)

在DB-GPT中,核心接口是异步非阻塞的,因此我们使用ThreadPoolExecutor在单独的线程中运行相似度计算以获得更好的性能。

在上面的代码中,我们将enhance_similarity_threshold设置为0.5,这意味着如果相似度大于0.7,则新的观察有可能被增强到短期记忆(增强过程中有随机因素)。我们将enhance_threshold设置为3,这意味着如果记忆增强大于等于3倍时,它将被转移到长期记忆中。

现在你可以在智能体中使用增强短期记忆了。