Files
MemoryBear/README.md
2025-11-30 18:22:17 +08:00

138 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MemoryBear
## 项目简介
MemoryBear 是一个面向智能体的记忆系统与知识管理服务。它支持从对话与文档中萃取结构化知识、生成嵌入向量、构建图谱,提供关键词与语义的混合搜索,并内置遗忘机制与自我反思流程,以维持长期记忆的有效性与可用性。
## 核心特性
- 知识萃取:陈述句、三元组、时间信息与摘要生成
- 图谱存储:对接 Neo4j 管理实体与关系
- 混合搜索:关键词检索 + 语义向量检索
- 遗忘机制:按记忆强度与时效做逐步衰减
- 自我反思:定期回顾并优化已有记忆
- FastAPI 服务:统一暴露管理端与服务端 API
## 架构总览
- 萃取引擎Extraction Engine预处理、去重、结构化提取
- 遗忘引擎Forgetting Engine记忆强度模型与衰减策略
- 自我反思引擎Reflection Engine评价与重写记忆
- 检索服务:关键词、语义与混合检索
- Agent 与 MCP提供多工具协作的智能体能力
## 快速开始
### 环境要求
- Python 3.12
- PostgreSQL 13+
- Neo4j 4.4+
- Redis 6.0+
### 安装依赖
```bash
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 方式一:基于 pyproject 安装
pip install .
# 方式二:使用 requirements.txt
pip install -r requirements.txt
```
### 配置环境变量
创建 `.env` 文件(示例):
```env
# Postgres
DB_HOST=127.0.0.1
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your-password
DB_NAME=redbear-mem
DB_AUTO_UPGRADE=false
# Neo4j
NEO4J_URI=bolt://localhost:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=your-password
# Redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=1
# LLM / API Keys按需
OPENAI_API_KEY=your-openai-key
DASHSCOPE_API_KEY=your-dashscope-key
# 其他
WEB_URL=http://localhost:3000
LOG_LEVEL=INFO
```
### 初始化与启动
```bash
# 如需自动迁移数据库:设置 DB_AUTO_UPGRADE=true 或手动执行
alembic upgrade head
# 启动开发服务
uvicorn app.main:app --reload --port 8000
# 打开交互文档
# http://localhost:8000/docs
```
## 项目结构
```
app/
├── main.py # FastAPI 入口
├── controllers/ # 控制器与路由
├── core/ # 核心:配置、异常、日志等
│ └── memory/ # 记忆模块
│ ├── storage_services/ # 萃取/遗忘/反思/检索
│ ├── agent/ # Agent + MCP 服务
│ ├── utils/ # 工具与提示词
│ └── models/ # 领域模型
└── rag/ # RAG 能力与文档解析
logs/ # 日志与输出
LICENSE # 许可协议Apache-2.0
README.md # 项目说明
```
## API 与路由
- 管理端:`/api`JWT 认证)
- 服务端:`/v1`API Key 认证)
- 根路由健康检查:`GET /` 返回运行状态
- Swagger 文档:`/docs`
## 部署建议
- 使用 `gunicorn` + `uvicorn.workers.UvicornWorker` 作为生产入口
- 配置 `LOG_LEVEL=WARNING` 并启用文件日志
- 数据库与缓存请使用托管服务或独立实例
示例:
```bash
gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker
```
## 许可证
本项目采用 Apache License 2.0 开源协议,详情见 `LICENSE`
## 致谢与交流
- 问题反馈与讨论:请提交 Issue 到代码仓库
- 欢迎贡献:提交 PR 前请先创建功能分支并遵循常规提交信息格式