English | 中文

MemoryScope

MemoryScopeLogo

为您的大语言模型聊天机器人配备强大且灵活的长期记忆系统。


📰 新闻

  • [2024-09-10] 我们现在发布了 MemoryScope v0.1.1.0,该版本也可以在 PyPI 上获取!


🌟 什么是MemoryScope?

MemoryScope可以为LLM聊天机器人提供强大且灵活的长期记忆能力,并提供了构建长期记忆能力的框架。 MemoryScope可以用于个人助理、情感陪伴等记忆场景,通过长期记忆能力来不断学习,记得用户的基础信息以及各种习惯和喜好,使得用户在使用LLM时逐渐感受到一种“默契”。

Demo

zh_demo

核心框架:

Framework

💾 记忆数据库: MemoryScope配备了向量数据库(默认是ElasticSearch),用于存储系统中记录的所有记忆片段。

🔧 核心worker库: MemoryScope将长期记忆的能力原子化,抽象成单独的worker,包括query信息过滤,observation抽取,insight更新等20+worker。

🛠️ 核心Operation库: MemoryScope将workers组织为工作流(workflow),构建了处理记忆的完善Operation库,实现了记忆检索,记忆巩固等核心能力。

  • 记忆检索:当用户输入对话,此操作返回语义相关的记忆片段。如果输入对话包含对时间的指涉,则同时返回相应时间中的记忆片段。

  • 记忆巩固:此操作接收一批用户的输入对话,并从对话中提取重要的用户信息,将其作为 observation 形式的记忆片段存储在记忆数据库中。

  • 反思与再巩固:每隔一段时间,此操作对新记录的 observations 进行反思,以形成和更新 insight 形式的记忆片段。然后执行记忆再巩固,以确保记忆片段之间的矛盾和重复得到妥善处理。

⚙️ 最佳实践:

  • MemoryScope在构建了长期记忆核心能力的基础上,实现了带长期记忆的对话接口(API)和带长期记忆的命令行对话实践(CLI)。

  • MemoryScope结合了目前流行的Agent框架(AutoGen、AgentScope),给出了最佳实践。

🤝主要特点

⚡ 极低的线上时延(RT):

  • 系统中后端操作(记忆巩固、反思和再巩固)与前端操作(记忆检索)相互独立。

  • 由于后端操作通常(并且推荐)通过队列或每隔固定间隔执行,系统的用户时延(RT)完全取决于前端操作,仅为约500毫秒。

🌲 记忆存储的层次结构和内容的连贯一致性:

  • 系统中存储的记忆片段采用分层结构,通过汇总主题相似的 observations 生成高层次的 insights 信息。

  • 定期处理记忆片段之间的矛盾和重复,以保证记忆内容的连贯一致性。

  • 过滤掉用户输入的虚构内容,以避免LLM产生幻觉。

⏰ 时间敏感性:

  • 在执行记忆检索和记忆巩固时具备时间敏感性,因此在输入对话包含对时间的指涉时,可以检索到准确的相关信息。


💼 支持的模型API

Backend

Task

Some Supported Models

openai_backend

Generation

gpt-4o, gpt-4o-mini, gpt-4, gpt-3.5-turbo

Embedding

text-embedding-ada-002, text-embedding-3-large, text-embedding-3-small

dashscope_backend

Generation

qwen-max, qwen-plus, qwen-plus, qwen2-72b-instruct

Embedding

text-embedding-v1, text-embedding-v2

Reranker

gte-rerank

未来将支持更多的模型接口和支持本地部署的LLM和emb服务


🚀 安装

完整的安装方法请参考安装指南

🍕 快速开始

💡 代码贡献

欢迎社区的代码贡献。 我们非常推荐每一个贡献者在代码提交前,安装pre-commit钩子工具, 能够帮助在每一次git提交的时候,进行自动化的代码格式校验。

pip install -e .
pre-commit install

请参阅我们的贡献指南 了解更多详细信息。

📖 引用

如果您在论文中有使用该项目,请添加以下引用:

@software{MemoryScope,
author = {Li Yu and 
          Tiancheng Qin and
          Qingxu Fu and
          Sen Huang and
          Xianzhe Xu and
          Zhaoyang Liu and
          Boyin Liu},
month = {09},
title = {{MemoryScope}},
url = {https://github.com/modelscope/MemoryScope},
year = {2024}
}