向量哈希内存系统

一个专注于CRUD操作的持久化向量存储系统,具有Redis缓存和基于图的内存关系。

  • by NeoTecDigital
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 NeoTecDigital/mcp_memory

使用说明

矢量哈希映射内存系统v2(以CRUD为中心)

一个持久的向量存储系统,专注于使用Redis缓存和基于图的内存关系进行CRUD操作。搜索功能已移至 mcp__omni__ 服务,以更好地进行跨服务协调。

🚀 当前状态:为服务分离而重构

最新更新: 2025年1月

✅ 简化的API -仅支持CRUD操作,搜索已转移到全方位服务
✅ 整洁架构 -明确区分服务之间的关注点
✅ 测试已验证 -API成功率90%,全面测试覆盖
✅ 性能已验证 -亚秒级响应时间,高效缓存
✅ 基础设施就绪 -Docker部署、Redis健康监控

架构更改: 搜索和查询操作现在由处理 mcp__omni__ 服务

特性

  • 矢量哈希图:使用向量嵌入的快速基于哈希的查找
  • 图形结构:由上下文边连接的内容节点
  • 语义分析:相似性检测和重复数据删除
  • 持久性:Redis缓存+ChromaDB矢量存储
  • 队列管理:使用缓冲进行异步请求处理
  • 边缘加权:自动权重归一化和分辨率跟踪
  • 推理引擎:基于查询的上下文内存检索

建筑

┌─────────────────┐
│   FastAPI App   │
├─────────────────┤
│   Middleware    │
│  - Cache        │
│  - RateLimit    │
│  - Queue        │
├─────────────────┤
│ Vector HashMap  │
│  - Embeddings   │
│  - Graph Store  │
├─────────────────┤
│   Storage       │
│  - Redis        │
│  - ChromaDB     │
└─────────────────┘

项目结构

├── src/                     # Source code
│   ├── api/                 # FastAPI REST endpoints
│   │   └── main.py          # Application entry point
│   ├── core/                # Core business logic
│   │   ├── vector_hashmap.py # Main memory system
│   │   └── middleware.py    # Request processing middleware
│   └── models/              # Data models and schemas
│       └── models.py        # Pydantic models
├── tests/                   # Test suite
│   ├── unit/               # Unit tests (future)
│   ├── integration/        # Integration tests (future)
│   ├── reports/           # Test result reports
│   └── *.py               # Current test files
├── static/                 # Web interface
│   ├── index.html         # Main web UI
│   ├── js/app.js         # Frontend JavaScript
│   └── css/styles.css    # Styling
├── docs/                  # Documentation
│   └── README.md         # Documentation index
└── README.md             # This file

安装

pip install -r requirements.txt

快速开始

使用Docker Compose

docker-compose up -d

手动设置

  1. 启动Redis:
redis-server
  1. 运行应用程序:
uvicorn src.api.main:app --reload

API变更(重要)

简化的CRUD API

内存服务现在只专注于CRUD操作。所有搜索功能已移至 mcp__omni__ 服务。

新增API函数:

  • mcp__memory__remember -存储新的记忆(创建)
  • mcp__memory__update -更新现有内存(更新)
  • mcp__memory__forget -删除记忆(Delete)
  • mcp__memory__list -列出带分页的内存(读取)
  • mcp__memory__get -按ID获取特定内存(读取)
  • mcp__memory__stats -获取统计数据
  • mcp__memory__health -健康检查

已删除的函数(请改用mcp_omni__):

  • memory/search → Use mcp__omni__search
  • memory/query → Use mcp__omni__search
  • memory/related → Use mcp__omni__get_related

看 存储器_服务_API.md 获取完整的API文档。

API示例

存储内存(创建)

mcp__memory__remember
{
  "content": ["word1", "word2", "word3"],
  "context": "brief context"
}

更新存储器

mcp__memory__update
{
  "node_id": "node-123",
  "content": "updated content",
  "context": "new context"
}

删除内存

mcp__memory__forget
{
  "node_id": "node-123"
}

列出回忆

mcp__memory__list
{
  "offset": 0,
  "limit": 100
}

推断

POST /memory/infer?query=your+question&context_limit=5

统计

GET /memory/statistics

数据模型

节点

  • 内容节点:带有嵌入的单个概念/单词
  • 上下文节点:内容之间的上下文关系

边缘

  • 连接内容节点
  • 按距离和频率加权
  • resolve 计数器随着重复而增加
  • 语义关系的上下文嵌入

测试

pytest test_memory_system.py -v

配置

参数 默认值 说明
redis URL redis://localhost:6379 重定向连接URL
chroma_persist_dir 。/chroma_db ChromaDB存储目录
embedding_model 全MiniLM-L6-v2 句子转换模型
cache_ttl 3600 缓存ttl(秒)
max_edges_per_node 100 每个节点的最大边数

示例用法

from models import ContentInput
import httpx

# Store memory
input_data = {
    "content": ["machine", "learning", "algorithm"],
    "context": "AI basics"
}

response = httpx.post("http://localhost:8000/memory/store", json=input_data)

# Query memory
query_data = {
    "query": "explain machine learning",
    "top_k": 10,
    "threshold": 0.7
}

response = httpx.post("http://localhost:8000/memory/query", json=query_data)
print(response.json())

性能注意事项

  • 嵌入缓存在Redis中,TTL可配置
  • 大输入的批处理
  • 速率限制防止过载
  • 请求队列管理并发操作
  • 边缘权重归一化可防止无限增长

未来增强功能(第2阶段)

  • 附加抽象层
  • 高级推理算法
  • 多模态嵌入
  • 分布式处理
  • 实时同步