AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Memary:赋予Agent智能体长期记忆的开源项目
发布日期:2024-04-30 08:05:03 浏览次数: 2170


人工智能浪潮席卷而来,大型语言模型(LLM)在自然语言处理领域展现出惊人的能力。然而,LLM 仍然存在一个关键的限制:有限的上下文窗口。这意味着 LLM 只能处理有限长度的文本输入,无法有效地利用历史信息和长期记忆,从而限制了 LLM 在需要长期记忆的场景中的应用,例如对话系统和自主智能体。

Memary项目应运而生,旨在解决 LLM 的上下文窗口限制问题,为自主智能体提供长期记忆能力。通过将信息存储在知识图谱中,并通过记忆模块推断用户知识,Memary 使智能体能够仅检索相关信息来生成更有意义的响应。

Memary的功能

路由代理:Memary 集成了 ReAct 代理,可以根据查询内容在多个工具之间进行路由,例如位置识别、图像分析和知识图谱搜索。这使得智能体能够根据不同的任务选择合适的工具,并有效地获取所需信息。例如,当用户询问附近的咖啡馆时,路由代理会选择位置识别工具来确定用户的位置,并使用谷歌地图查找附近的咖啡馆。

知识图谱创建和检索:Memary 利用 Neo4j 图数据库构建知识图谱,用于存储信息和实体之间的关系。智能体可以将信息存储在知识图谱中,并通过查询检索相关信息。例如,当用户询问苹果公司的 CEO 是谁时,智能体可以查询知识图谱并找到答案是蒂姆·库克

记忆流:Memary 的记忆流使用实体提取技术跟踪存储在知识图谱中的所有实体,并记录它们出现的时间戳。这反映了用户知识的广度,即用户接触过哪些概念。例如,如果用户经常询问与科技相关的问题,那么记忆流中就会包含很多科技相关的实体,例如人工智能机器学习等。

实体知识库:Memary 的实体知识库跟踪记忆流中每个实体的引用频率和时间,并对实体进行排序。这反映了用户知识的深度,即用户对哪些概念更熟悉。例如,如果用户经常询问与人工智能相关的问题,那么人工智能这个实体在实体知识库中的排名就会比较靠前。


Memary的工作原理

Memary的核心组件包括路由代理、知识图谱和记忆模块。当用户输入查询时,路由代理会根据查询内容选择合适的工具,并执行查询。查询结果会被存储在知识图谱中,并更新记忆流和实体知识库。记忆模块会根据实体知识库中排名靠前的 N 个实体生成摘要,并将其与查询历史一起传递给 LLM 进行推理。

路由代理:路由代理使用 ReAct 代理框架实现,可以根据预定义的规则和工具的功能选择合适的工具执行查询。例如,如果查询包含位置关键词,路由代理会选择位置识别工具;如果查询包含图片关键词,路由代理会选择图像分析工具。

知识图谱:知识图谱使用 Neo4j 图数据库构建,并使用 Llamaindex  Perplexity 等工具将信息和实体添加到图谱中。例如,可以使用 Llamaindex 将维基百科的文章转换为知识图谱,可以使用 Perplexity 将用户的查询历史转换为知识图谱。

记忆模块:记忆模块由记忆流和实体知识库组成,并使用特定的算法计算实体的排名和生成摘要。例如,可以使用 TF-IDF 算法计算实体的权重,并根据权重对实体进行排序。可以使用 TextRank 算法生成实体的摘要。


未来集成

Memary计划在未来集成多处理功能,使代理能够同时处理多个子查询。此外,Memary 还将集成查询分解和重新排序技术,进一步提高响应的相关性和准确性。

多处理功能:多处理功能将允许代理同时处理多个子查询,从而提高响应速度和效率。例如,当用户询问附近的咖啡馆和餐厅时,代理可以同时处理附近的咖啡馆附近的餐厅两个子查询,并将结果合并后返回给用户。

查询分解:查询分解技术将复杂查询分解为更简单的子查询,以便代理更容易理解和处理。例如,当用户询问苹果公司的 CEO 是谁,他毕业于哪所大学时,查询分解技术可以将查询分解为苹果公司的 CEO 是谁蒂姆·库克毕业于哪所大学两个子查询。

重新排序:重新排序技术将根据相关性对代理的响应进行排序,确保最相关的响应排在最前面。例如,当用户询问附近的咖啡馆时,重新排序技术可以将距离用户最近的咖啡馆排在最前面。


Memary的核心代理实现逻辑

Memary的核心代理实现逻辑基于 BaseMemory 抽象类、MemoryStream 类和 EntityKnowledgeStore 类,主要功能包括记忆管理、知识图谱更新和实体知识提取。

BaseMemory抽象类

功能: 定义了记忆管理的基本操作,包括初始化记忆、加载记忆、添加记忆、获取记忆、删除旧记忆和保存记忆等。

属性:

file_name:存储记忆的文件名。

entity:实体名称。

memory:存储记忆数据的列表。

方法:

__len__():返回记忆中的项目数量。

init_memory():初始化记忆。

load_memory_from_file():从文件中加载记忆。

add_memory(data):添加新的记忆数据。

get_memory():获取记忆数据。

remove_old_memory(days):删除指定天数之前的旧记忆。

save_memory():将记忆保存到文件中。

MemoryStream

•功能: 继承自 BaseMemory 类,实现了记忆流的管理功能,包括添加记忆和获取记忆等。记忆流记录了所有实体及其出现的时间戳,反映了用户知识的广度。

•属性:

memory:存储记忆流数据的列表。

•方法:

init_memory():初始化记忆流,加载已有的记忆流数据,并根据传入的实体添加新的记忆。

add_memory(entities):将实体列表转换为记忆流数据,并添加到记忆流中。

get_memory():获取记忆流数据。

EntityKnowledgeStore

•功能: 继承自 BaseMemory 类,实现了实体知识库的管理功能,包括将记忆流转换为知识记忆、更新知识记忆和获取知识记忆等。实体知识库记录了每个实体的出现次数和最近出现时间,反映了用户知识的深度。

•属性:

knowledge_memory:存储知识记忆数据的列表。

•方法:

init_memory():初始化知识记忆,加载已有的知识记忆数据,并根据传入的实体添加新的知识记忆。

load_memory_from_file():从文件中加载知识记忆数据。

add_memory(memory_stream):将记忆流转换为知识记忆,并更新知识记忆。

_update_knowledge_memory(knowledge_memory):使用新的知识记忆项目更新知识记忆。

_convert_memory_to_knowledge_memory(memory_stream):将记忆流转换为知识记忆列表。

get_memory():获取知识记忆数据。

核心代理实现逻辑

•初始化: Memary 代理初始化时,会创建一个 MemoryStream 对象和一个 EntityKnowledgeStore 对象,分别用于管理记忆流和实体知识库。

•处理查询: 当用户输入查询时,代理会使用路由代理选择合适的工具执行查询,并将查询结果存储在知识图谱中。

•更新记忆: 代理会将查询结果中的实体提取出来,并添加到 MemoryStream 对象中。然后,代理会将 MemoryStream 对象中的数据传递给 EntityKnowledgeStore 对象,更新实体知识库。

•生成响应: 代理会根据实体知识库中排名靠前的 N 个实体生成摘要,并将其与查询历史一起传递给 LLM 进行推理,最终生成响应。

memory_stream entity_knowledge_store 的作用和差别

•memory_stream: 记忆流记录了所有实体及其出现的时间戳,反映了用户知识的广度,即用户接触过哪些概念。

entity_knowledge_store: 实体知识库记录了每个实体的出现次数和最近出现时间,反映了用户知识的深度,即用户对哪些概念更熟悉。

•差别: 记忆流关注的是实体出现的顺序和时间,而实体知识库关注的是实体出现的频率和时间。记忆流可以用来分析用户兴趣的变化趋势,而实体知识库可以用来确定用户最熟悉的概念。


结语

记忆是智能体发展的重要基石。如同人类依赖记忆进行学习、推理和决策,智能体也需要记忆来理解上下文、积累经验并做出明智的行动。Memary 项目正是为解决这一需求而生,它为自主智能体提供了长期记忆能力,使其能够突破 LLM 有限上下文窗口的限制,在与用户交互的过程中不断学习和成长。

知识图谱优于其他知识存储方式:Memary 认为,知识图谱比其他知识存储方式更适合存储和检索信息,因为它能够更好地捕捉实体之间的关系,并提供更深入的上下文信息。例如,在问答系统中,知识图谱可以帮助系统理解问题中实体之间的关系,并找到更准确的答案。相比之下,传统的数据库只能存储实体的属性,而无法存储实体之间的关系。

记忆模块有效提升 LLM 性能:Memary 的记忆模块通过跟踪用户知识的广度和深度,并将其传递给 LLM,能够有效提升 LLM 的推理能力和响应的相关性。例如,在对话系统中,记忆模块可以帮助系统记住用户的兴趣和偏好,并生成更个性化的响应。相比之下,传统的 LLM 只能根据当前的输入生成响应,而无法利用历史信息。

项目地址:https://github.com/kingjulio8238/memary


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询