使用说明
矢量哈希映射内存系统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
手动设置
- 启动Redis:
redis-server
- 运行应用程序:
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__):
→ Usememory/searchmcp__omni__search→ Usememory/querymcp__omni__search→ Usememory/relatedmcp__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阶段)
- 附加抽象层
- 高级推理算法
- 多模态嵌入
- 分布式处理
- 实时同步