MemPalace B-2 方案

MemPalace B-2 方案

概述

B-2 方案是 MemPalace MCP wrapper 的 embedding 维度迁移策略:通过启动时的 monkey-patch,将默认的 ONNXMiniLM_L6_V2 (384维) 切换为 OllamaEmbeddingFunction (qwen3-embedding, 4096维),从而提升中文语义检索的准确性^[raw/articles/mempalace-b2-scheme-embedding-2026-06-22.md]。

技术实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
from chromadb.utils.embedding_functions import OllamaEmbeddingFunction
import mempalace.embedding

_ollama_ef = OllamaEmbeddingFunction(model_name="qwen3-embedding")

def _patched_get_embedding_function(device=None):
    return _ollama_ef

mempalace.embedding.get_embedding_function = _patched_get_embedding_function

# 验证维度
test_vec = _ollama_ef(["dimension check"])
dim = len(test_vec[0])
print(f"[mempalace-wrapper] Patched embedding -> OllamaEmbeddingFunction (qwen3-embedding, {dim}d)", file=sys.stderr)

优点:

  • 不修改 mempalace 源码,避免被 pip upgrade 覆盖
  • 维度更高 (4096维),语义表达更丰富
  • 中文命中率从约 50% 提升至 100%^[raw/articles/mempalace-b2-scheme-embedding-2026-06-22.md]

部署信息

项目
MemPalace 版本3.3.5
Palace 路径/root/.mempalace/palace
ChromaDB 大小247.1M (chroma.sqlite3)
Wrapper 脚本/usr/local/bin/mempalace-mcp-wrapper
配置入口~/.hermes/config.yaml (mempalace.command 指向 wrapper)

典型问题:No palace found

现象:mcp_mempalace_mempalace_status() 返回 “No palace found”,但 palace 路径与 chroma.sqlite3 均存在。

常见原因:

  • wrapper 初始化失败
  • 配置被覆盖(版本升级或 git reset)
  • MEMPALACE_PALACE_PATH 环境变量未正确传递

排查步骤:

  1. 确认 palace_path 存在且可读
  2. 验证 chroma.sqlite3 文件完整性
  3. 检查 wrapper 脚本的 stderr 输出(维度验证信息)
  4. 确认 MCP server 配置的 command 正确指向 wrapper^[raw/articles/mempalace-b2-scheme-embedding-2026-06-22.md]

相关

  • [[mempalace]] — 本地优先 AI 记忆操作系统,B-2 方案的载体
  • [[ollama]] — OllamaEmbeddingFunction 所在的本地模型运行框架
  • [[memory-layered-architecture]] — Hermes 五层记忆架构,集成 MemPalace 作为 L2 层