Memary简介
Memary是一个开源项目,旨在为自主AI代理提供高效的记忆层。它的目标是通过模拟人类记忆的工作方式,帮助AI代理更好地管理和利用信息,从而提升其推理和决策能力。Memary的核心理念是,记忆对于人类的推理至关重要,同样也应该在构建AI代理时得到同等的重视。
Memary项目由一群热衷于推动AI技术发展的开发者创建和维护。它采用MIT开源许可证,鼓励社区参与和贡献。项目的GitHub仓库提供了详细的文档、示例代码和使用指南,方便开发者快速上手和集成。
Memary的核心概念
Memary的设计基于几个核心概念,这些概念共同构成了其独特的记忆管理方法:
1. 自动生成的记忆
Memary能够自动捕获和存储代理与环境交互过程中产生的信息。这种自动化的记忆生成机制使得开发者无需手动管理记忆内容,大大简化了集成过程。同时,它还支持多个数据库的组合,为记忆存储提供了灵活性。
2. 记忆模块
Memary采用模块化设计,包括记忆流(Memory Stream)和实体知识存储(Entity Knowledge Store)两个主要组件。这种设计允许系统跟踪用户的偏好和兴趣变化,为分析和优化代理行为提供了基础。
3. 系统改进
Memary模仿人类记忆随时间演化和学习的过程。它能够跟踪代理的改进速度,帮助开发者了解代理的学习进展。
4. 记忆回溯
Memary保存了所有对话历史,使得开发者可以回溯代理的执行过程,并在特定时间点访问代理的记忆状态。这一功能对于调试和优化代理行为非常有用。
Memary的技术架构
Memary的技术架构包括几个关键组件,它们协同工作以提供全面的记忆管理解决方案:
代理系统
Memary使用ReAct代理来规划和执行查询。这个代理配备了多种工具,其中最关键的是搜索工具,用于从知识图谱中检索信息。如果知识图谱中没有相关实体,代理会执行外部搜索。其他工具还包括基于LLaVa的计算机视觉功能和使用地理编码器和Google Maps的位置工具。
知识图谱
Memary使用Neo4j图数据库来存储知识。它利用Llama Index将文档中的节点添加到图存储中,并使用Perplexity(基于mistral-7b-instruct模型)进行外部查询。知识图谱的使用场景包括:
- 将代理的最终响应注入现有的知识图谱
- 使用递归检索方法搜索知识图谱
- 在处理多个关键实体的查询时,使用多跳推理来连接多个子图
这些技术减少了搜索整个知识图谱时的延迟。
记忆模块
记忆模块由记忆流和实体知识存储组成,其设计受到了微软研究院提出的K-LaMP模型的启发。
记忆流
记忆流捕获所有插入到知识图谱中的实体及其相关时间戳。它反映了用户知识的广度,即用户接触过的概念,但不推断接触的深度。记忆流支持以下功能:
- 时间线分析:绘制交互的时间线,突出显示高度参与或主题焦点转移的时刻。
- 提取主题:在交互中寻找重复出现的主题或话题。
实体知识存储
实体知识存储跟踪记忆流中存储的每个实体的引用频率和最近度。它反映了用户知识的深度,即用户更熟悉的概念。实体知识存储支持以下功能:
- 按相关性排序实体:使用频率和最近度来对实体进行排序。
- 对实体进行分类:根据实体的性质或提及的上下文将实体分组。
- 突出显示随时间变化:识别实体排名或分类随时间的重大变化。
新的上下文窗口
Memary利用与用户相关的关键分类实体和主题来定制代理响应,使其更贴近用户当前的兴趣/偏好和知识水平/专业程度。新的上下文窗口由以下部分组成:
- 代理响应
- 最相关的实体
- 聊天历史(经过总结以避免令牌溢出)
Memary的使用方法
要开始使用Memary,开发者需要遵循以下步骤:
-
安装Memary: 可以通过pip安装或从源代码本地安装。确保使用的Python版本不高于3.11.9。
-
指定使用的模型: Memary支持使用本地模型(通过Ollama)或OpenAI的模型。默认情况下,它会使用本地运行的模型,除非明确指定。
-
运行Memary:
- 如果使用Ollama运行本地模型,需要按照相关仓库的说明进行设置。
- 创建一个包含必要凭证的.env文件。
- 获取所需的API凭证(如OpenAI、Neo4j、Perplexity等)。
- 更新用户角色和系统角色(如果需要)。
- 运行Streamlit应用程序。
-
基本用法: Memary提供了一个ChatAgent类,可以用来初始化和管理代理。开发者可以添加或删除自定义工具,以扩展代理的功能。
Memary的未来发展
Memary团队计划在未来添加更多功能,以进一步增强其记忆管理能力:
-
与代理记忆对话:提供一个聊天界面,允许用户访问、搜索和查看代理的记忆。
-
分析代理进展:提供相关指标,以展示代理记忆随时间的增长。
-
跟踪记忆:为每个生成的响应提供详细的代理记忆分析。
-
受众偏好:通过专有记忆模块推断受众在特定时期的偏好。
-
memaryParse:支持解析和清理专有数据,并将其插入代理记忆。
-
memaryRetrieval:使用不同技术检索代理记忆,并支持组合多个检索器。
-
可定制的记忆:允许用户查看、搜索和配置记忆,以及组合不同的记忆以改进检索。
-
游乐场:提供工具、模型和基准测试游乐场,方便开发者实验和优化。
结语
Memary为AI代理提供了一个强大的记忆管理解决方案,通过模拟人类记忆的工作方式,帮助代理更好地理解和利用信息。它的开源性质和灵活的架构使得开发者可以轻松集成和定制,以满足特定需求。随着项目的不断发展和社区的贡献,Memary有望在推动AI代理技术进步方面发挥重要作用。
对于那些希望深入了解Memary或为项目做出贡献的开发者,可以访问Memary的GitHub仓库获取更多信息。无论是构建更智能的聊天机器人,还是开发复杂的AI助手,Memary都为提升AI代理的记忆和认知能力提供了宝贵的工具和框架。