综合介绍
Memary 是一个创新的开源项目,专注于为自主智能体提供长期记忆管理解决方案。该项目通过知识图谱和专门的记忆模块,帮助智能体突破传统上下文窗口的限制,实现更智能的交互体验。Memary 采用自动化的记忆生成机制,可以在智能体交互过程中自动更新记忆,并通过统一的仪表盘展示这些记忆。系统支持多种模型配置,包括本地运行的 Llama 和 LLaVA 模型,以及云端的 GPT 模型。此外,Memary 还提供了多图支持,允许开发者为不同用户创建独立的智能体实例,实现个性化的记忆管理。
功能列表
- 自动化记忆生成与更新
- 知识图谱存储与检索
- 记忆流(Memory Stream)跟踪实体与时间戳
- 实体知识库(Entity Knowledge Store)管理频率与时效性
- 递归检索方法优化知识图谱搜索
- 多跳推理支持复杂查询处理
- 自定义工具扩展支持
- 多智能体图谱管理
- 记忆压缩与上下文窗口优化
- 主题提取与实体分类
- 时间线分析功能
使用帮助
1. 安装配置
1.1 基本要求
- Python 版本要求: <= 3.11.9
- 推荐使用虚拟环境进行安装
1.2 安装方式
a) 使用 pip 安装:
pip install memary
b) 本地安装:
- 创建并激活虚拟环境
- 安装依赖:
pip install -r requirements.txt
1.3 模型配置
Memary 支持两种运行模式:
- 本地模式(默认):使用 Ollama 运行模型
- LLM: Llama 3 8B/40B(推荐)
- 视觉模型: LLaVA(推荐)
- 云端模式:
- LLM: gpt-3.5-turbo
- 视觉模型: gpt-4-vision-preview
2. 环境准备
2.1 配置 .env 文件
OPENAI_API_KEY="YOUR_API_KEY"
PERPLEXITY_API_KEY="YOUR_API_KEY"
GOOGLEMAPS_API_KEY="YOUR_API_KEY"
ALPHA_VANTAGE_API_KEY="YOUR_API_KEY"
# 数据库配置(二选一):
FALKORDB_URL="falkor://[[username]:[password]]@[falkor_host_url]:port"
或
NEO4J_PW="YOUR_NEO4J_PW"
NEO4J_URL="YOUR_NEO4J_URL"
2.2 更新用户配置
- 编辑
streamlit_app/data/user_persona.txt
设置用户特征 - 可选:修改
streamlit_app/data/system_persona.txt
调整系统特征
3. 基本使用
3.1 启动应用
cd streamlit_app
streamlit run app.py
3.2 代码示例
from memary.agent.chat_agent import ChatAgent
# 初始化聊天智能体
chat_agent = ChatAgent(
"Personal Agent",
memory_stream_json,
entity_knowledge_store_json,
system_persona_txt,
user_persona_txt,
past_chat_json,
)
# 添加自定义工具
def multiply(a: int, b: int) -> int:
"""乘法计算工具"""
return a * b
chat_agent.add_tool({"multiply": multiply})
# 移除工具
chat_agent.remove_tool("multiply")
4. 多智能体配置
适用于使用 FalkorDB 数据库时:
# 用户 A 的个人智能体
chat_agent_user_a = ChatAgent(
"Personal Agent",
memory_stream_json_user_a,
entity_knowledge_store_json_user_a,
system_persona_txt_user_a,
user_persona_txt_user_a,
past_chat_json_user_a,
user_id='user_a_id'
)
# 用户 B 的个人智能体
chat_agent_user_b = ChatAgent(
"Personal Agent",
memory_stream_json_user_b,
entity_knowledge_store_json_user_b,
system_persona_txt_user_b,
user_persona_txt_user_b,
past_chat_json_user_b,
user_id='user_b_id'
)
5. 记忆管理特性
5.1 记忆流(Memory Stream)
- 自动捕获所有实体及其时间戳
- 支持时间线分析
- 主题提取功能
5.2 实体知识库(Entity Knowledge Store)
- 跟踪实体引用频率和时效性
- 实体相关性排名
- 实体分类功能
- 时间变化分析
5.3 知识图谱功能
- 递归检索优化
- 多跳推理支持
- 自动更新机制