精益记忆
针对AI代理的设备内存搜索,针对精益计算进行了优化。没有GPU。没有2GB型号下载。只需对您的markdown文件进行快速关键字和语义搜索。
叉子 QMD 由Tobi Lutke开发,针对无头服务器、VPS实例和无法在CPU上下载和运行三个GGUF模型的环境进行了重建。
发生了什么变化
| QMD(上游) | 精益记忆 | |
|---|---|---|
| 嵌入 | 嵌入Gemma 300M GGUF(~30MB) | BGE小型ONNX(~33MB) |
| 重排序器 | Qwen3重新分级0.6B GGUF(~640MB) | 已删除 |
| 查询扩展 | 自定义微调1.7B GGUF(~1.1GB) | 已删除 |
| 模型总重量 | ~2.1GB | ~33MB |
| 搜索模式 | 关键字,语义,混合(扩展+重新排序) | 关键字,语义 |
| 首次搜索 | ~10s(模型加载+扩展+重新存储) | ~0.6s |
| 典型搜索 | ~2-10秒 | ~0.3-0.6秒 |
| 最小计算量 | 快速CPU+4GB RAM | 任何CPU+512MB RAM |
为什么
QMD专为配备M系列芯片和大量RAM的MacBook而设计。在每月5美元的VPS上,对每个搜索查询运行1.7B的参数模型进行查询扩展是不现实的。即使是0.6B的重新登录也会在CPU上为每个查询增加几秒钟的延迟。
精益记忆以混合流水线换取原始速度。我们使用 BGE-small-en-v1.5 (2023)用于嵌入,其在MTEB检索基准测试中的得分高于MiniLM模型(2022),并且通过CPU上的ONNX在每个嵌入中运行约4ms。
结果:搜索分数翻了一番(在我们的语料库上,平均值从39%上升到70%+),搜索时间从秒下降到亚秒,总下载量为33MB,而不是2.1GB。
快速开始
# Install
bun install -g github:joinQuantish/lean-memory
# Add your documents
qmd collection add ~/notes --name notes
qmd collection add ~/docs --name docs
# Build search index
qmd update && qmd embed
# Search
qmd search "API authentication" # Fast keyword search (~30ms)
qmd vsearch "how does auth work" # Semantic search (~600ms)MCP 服务器
Lean Memory公开了一个MCP服务器,其中包含5个用于AI代理集成的工具:
| 工具 | 说明 |
|---|---|
search | BM25关键字搜索(~30ms) |
vector_search | 语义向量搜索(~600ms) |
get | 按路径或docid检索文档 |
multi_get | 按glob或list批量检索 |
status | 索引健康和收集信息 |
克劳德代码
# Via plugin
claude plugin add lean-memory或在 ~/.claude/settings.json:
{
"mcpServers": {
"memory": {
"command": "qmd",
"args": ["mcp"]
}
}
}光标/风帆
{
"mcpServers": {
"memory": {
"command": "qmd",
"args": ["mcp"]
}
}
}HTTP传输
对于共享的长期服务器:
qmd mcp --http # localhost:8181
qmd mcp --http --port 8080 # custom port
qmd mcp --http --daemon # background, PID in ~/.cache/qmd/mcp.pid
qmd mcp stop # stop daemon终点:
POST /mcp--MCP流式HTTP(JSON,无状态)GET /health--活性检查
建筑
┌─────────────────────────────────────────────────┐
│ Lean Memory Pipeline │
└─────────────────────────────────────────────────┘
┌──────────┐
│ Query │
└────┬─────┘
│
┌──────────┴──────────┐
▼ ▼
┌────────────────┐ ┌────────────────┐
│ BM25 (FTS5) │ │ BGE-small │
│ Keyword match │ │ ONNX embed │
│ ~30ms │ │ ~4ms/embed │
└────────────────┘ └────────────────┘
│ │
▼ ▼
┌────────────────┐ ┌────────────────┐
│ SQLite FTS5 │ │ sqlite-vec │
│ inverted idx │ │ cosine sim │
└────────────────┘ └────────────────┘无查询扩展。没有重新登录。没有2GB的GGUF型号。只有两条快速搜索路径。
用法
集合
qmd collection add ~/notes --name notes
qmd collection add ~/docs --name docs --mask "**/*.md"
qmd collection list
qmd collection remove notes上下文(元数据以获得更好的结果)
qmd context add qmd://notes "Personal notes and ideas"
qmd context add qmd://docs "API documentation"
qmd context list索引
qmd update # Index all collections
qmd update --pull # Git pull first, then index
qmd embed # Generate vector embeddings
qmd embed -f # Force re-embed everything搜索
# Keyword search (BM25)
qmd search "authentication flow"
qmd search "API" -c notes # Filter to collection
qmd search "API" -n 20 --min-score 0.3 # More results, with threshold
# Semantic search (vector)
qmd vsearch "how to login"
qmd vsearch "deployment process" -c docs
# Output formats
qmd search "API" --json # JSON for agents
qmd search "API" --files # File paths only
qmd search "API" --md # Markdown检索
qmd get "notes/meeting.md" # By path
qmd get "#abc123" # By docid
qmd get "notes/meeting.md:50" # Start at line 50
qmd multi-get "docs/*.md" # Glob pattern
qmd multi-get "a.md, b.md" # Comma-separated需求
- 包子 >=1.0.0(或Node.js>=22)
- macOS:
brew install sqlite(用于扩展支持) - 约33MB磁盘,适用于BGE小型ONNX型号(首次嵌入时自动下载)
数据存储
指标: ~/.cache/qmd/index.sqlite
collections -- Indexed directories with name and glob patterns
path_contexts -- Context descriptions by virtual path
documents -- Markdown content with metadata and docid
documents_fts -- FTS5 full-text index
content_vectors -- Embedding chunks (384-dim BGE-small vectors)
vectors_vec -- sqlite-vec cosine similarity index学分
许可证
麻省理工学院
