Redis图数据库LLM记忆系统

基于Redis Graph构建的LLM对话长期记忆存储系统,支持多类型记忆存储、关系建立及复杂检索功能

  • by samwang0723
  • TypeScript
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 samwang0723/mcp-memory

使用说明

带Redis图形的MCP内存

该项目使用Redis Graph进行长期内存存储,为LLM对话实现了一个内存系统。

设置

先决条件

  • Docker和Docker Compose
  • Node.js(v16或更高版本)

使用RedisGraph运行Redis

  1. 使用RedisGraph模块启动Redis容器:
docker-compose up -d
  1. 验证Redis是否正在使用RedisGraph模块运行:
docker exec -it mcp-memory-redis-1 redis-cli

进入Redis CLI后,您可以检查是否加载了RedisGraph模块:

127.0.0.1:6379> MODULE LIST

您应该在加载的模块列表中看到RedisGraph。

从应用程序连接到Redis

应用程序使用中的配置连接到Redis src/index.ts。默认情况下,它连接到:

  • 主机:本地主机
  • 端口:6379

如果需要更改这些设置,请在中更新Redis客户端配置 src/index.ts.

用法

  1. 安装依赖项:
npm install
  1. 启动应用程序:
npm start

内存工具

该应用程序提供了几个管理内存的工具:

  • create_memory:创建新内存
  • retrieve_memory:按ID检索内存
  • search_memories:按类型或关键字搜索记忆
  • update_memory:更新现有内存
  • delete_memory:删除内存
  • create_relation:在记忆之间建立关系
  • get_related_memories:获取与特定记忆相关的记忆

示例用法

// Create a memory
const memory = await memoryService.createMemory({
  type: MemoryNodeType.CONVERSATION,
  content: 'This is a conversation about Redis Graph',
  title: 'Redis Graph Discussion',
});

// Search for memories
const memories = await memoryService.searchMemories(
  { keyword: 'Redis' },
  { limit: 10, orderBy: 'created', direction: 'DESC' },
);

概述

MCP Memory是一个服务器,它提供用于存储和检索与LLM对话中的内存的工具。它使用Redis Graph作为后端来创建内存的知识图,允许不同信息之间的复杂关系。

特性

  • 存储不同类型的记忆(对话、项目、任务、问题、配置、财务、待办事项)
  • 在记忆之间建立联系
  • 根据各种标准搜索和检索记忆
  • 更新和删除记忆

存储器类型

系统支持各种内存类型来处理不同的场景:

  • 交谈:一般对话记忆
  • 主题:讨论的具体议题
  • 项目:项目详细信息(例如,菲亚特供应商禁用脚本)
  • 任务:要完成的具体任务
  • 问题:错误或事件
  • 配置:配置细节(例如,产品费用设置)
  • 金融:财务建议或信息
  • 全部:所有项目

使用示例

1.项目详情

存储有关项目、配置和系统的信息:

create_memory(
  type: "Project",
  name: "Fiat Vendor Disable Script",
  description: "Script to disable fiat vendors in the system",
  content: "The script is located at /scripts/disable-vendor.js and takes vendor ID as parameter"
)

2.问题处理

记录错误和事件:

create_memory(
  type: "Issue",
  title: "Payment Processing Timeout",
  severity: "high",
  status: "open",
  content: "Payments are timing out when processing large transactions over $10,000"
)

3.个人理财建议

店铺财务建议:

create_memory(
  type: "Finance",
  category: "Investment",
  content: "Recommendation to allocate 60% to index funds, 30% to bonds, and 10% to speculative investments",
  metadata: {
    riskProfile: "moderate",
    timeHorizon: "long-term"
  }
)

4.与工作相关的待办事项

保存要完成的任务:

create_memory(
  type: "Todo",
  title: "Update payment network documentation",
  priority: "medium",
  completed: false,
  content: "Update the documentation to include the new payment networks: Visa Direct and MasterCard Send"
)

记忆之间的关系

你可以在记忆之间建立关系来构建知识图谱:

create_relation(
  fromId: "issue-123",
  toId: "project-456",
  type: "PART_OF"
)

搜索记忆

根据各种条件搜索记忆:

search_memories(
  type: "Project",
  keyword: "payment",
  limit: 10
)

建筑

该系统使用Redis Graph将内存作为节点存储在图形数据库中。每个内存都是一个具有属性的节点,内存之间的关系是图中的边。

MCP服务器提供与内存图交互的工具,允许LLM根据需要存储和检索信息。

许可证

国际协调委员会

使用Redis Graph

使用Redis CLI助手

我们提供了一个连接到Redis并显示常见RedisGraph命令的辅助脚本:

npm run redis:cli

这将打开一个Redis CLI会话,其中包含使用内存图的有用命令列表。

检查图表

要检查内存图的当前状态,请运行:

npm run check:graph

这将在图中显示所有节点、财务内存和关系。

检查图表

有关图形模式和内容的更详细检查:

npm run inspect:graph

常见的重新发现命令

以下是在redis-cli中运行的一些有用命令:

  1. 列出所有图表:

    GRAPH.LIST
    
  2. 统计所有节点:

    GRAPH.QUERY memory "MATCH (n) RETURN count(n)"
    
  3. 查看财务记忆:

    GRAPH.QUERY memory "MATCH (n:Finance) RETURN n.id, n.title, n.content"
    
  4. 搜索特定内容:

    GRAPH.QUERY memory "MATCH (n) WHERE n.content CONTAINS 'debit card' RETURN n.id, n.type, n.content"
    
  5. 查看关系:

    GRAPH.QUERY memory "MATCH (a)-[r]->(b) RETURN a.id, type(r), b.id"
    

在Docker中运行

在Docker中运行MCP内存服务器:

# Build the Docker image
docker build -t mcp/memory .

# Run the container on the same network as Redis
docker run --rm -i --network=mcp-memory_default -e REDIS_URL=redis://redis:6379 mcp/memory

测试

我们提供了几个测试脚本:

# Test Redis connection
npm run test:redis

# Test memory operations
npm run test:memory

# Test memory service
npm run test:service