)
memU 本地模式如何配置不同的 embedding 提供方OpenAI、Jina、Voyage、Doubao、OpenRouter【免费下载链接】memUPersonal memory across agents项目地址: https://gitcode.com/GitHub_Trending/mem/memUmemU 提供本地模式local mode记忆存在本机的 SQLite 或 Postgres 库里而 memU Cloud 模式则由托管侧完成向量化。本地模式的代价是——写入和检索都要调用一个外部的 embedding 提供方选错或配错提供方检索会一直成功但什么都找不到。本文的任务是把 memU 本地模式配置成使用你指定的 embedding 提供方OpenAI、Jina、Voyage、Doubao、OpenRouter 五种之一并用doctor验证配置真的生效。前提已完成 memU 的安装pip install --upgrade memu-cli带--upgrade旧版本不支持init、config等子命令。下文以 Codex 适配器memu-codex为例其他宿主的适配器memu-claude-code、memu-cursor等共享同一套配置接口和同一个~/.memu/config.env。与 embedding 相关的配置项有哪些memU 的取值按这个顺序解析进程环境变量 →~/.memu/config.env→ 默认值见 README 的 Configuration 一节。本地模式下每个 CLI flag 都有对应的环境变量配置环境变量默认值数据库MEMU_DB./data/memu.sqlite3CLI宿主适配器必填Embedding 提供方MEMU_EMBED_PROVIDERopenai可选jina、voyage、doubao、openrouterAPI keyMEMU_API_KEY该提供方自己的环境变量如OPENAI_API_KEYEmbedding 模型MEMU_EMBED_MODEL该提供方的默认模型Base URLMEMU_BASE_URL该提供方的默认端点其中MEMU_LLM_PROVIDER是旧变量仍会被读取作为MEMU_EMBED_PROVIDER的回退旧配置文件不用改。五个提供方的默认模型和端点集中定义在 defaults.py不指定--embed-model/MEMU_EMBED_MODEL时就按下表取值提供方--embed-provider值默认模型默认端点默认凭据环境变量OpenAIopenaitext-embedding-3-smallhttps://api.openai.com/v1OPENAI_API_KEYJinajinajina-embeddings-v3https://api.jina.ai/v1JINA_API_KEYVoyagevoyagevoyage-3.5https://api.voyageai.com/v1VOYAGE_API_KEYDoubaodoubaodoubao-embedding-large-text-250515https://ark.cn-beijing.volces.comARK_API_KEYOpenRouteropenrouteropenai/text-embedding-3-smallhttps://openrouter.aiOPENROUTER_API_KEY端点和凭据环境变量都是默认值如果你用--embed-base-url覆盖了端点或MEMU_API_KEY有值以显式配置为准。用 config 命令配置宿主适配器路径不要手工编辑~/.memu/config.env不用 heredoc、echo 或编辑器。所有宿主共享这一个文件其中存着明文凭据且写入和检索必须指向同一个后端、同一个库、同一套 embedding 空间这条不变量靠文本编辑保不住。唯一的写入入口是binary config它按合并语义写入只传了的 flag 才会被写其余不动、设置文件权限并拒绝会悄悄弄坏检索的改动。以配置 Jina 为例一条命令带上库路径和提供方memu-codex config --local --db /absolute/path/memu.sqlite3 --embed-provider jina --embed-api-key 你的 Jina API key命令中你的 Jina API key占位符请替换为你从 Jina 获取的实际密钥其余各提供方同理只改--embed-provider和 key。完整的提供方示例# Voyage memu-codex config --local --db /absolute/path/memu.sqlite3 --embed-provider voyage --embed-api-key 你的 Voyage API key # Doubao memu-codex config --local --db /absolute/path/memu.sqlite3 --embed-provider doubao --embed-api-key 你的 ARK API key # OpenRouter memu-codex config --local --db /absolute/path/memu.sqlite3 --embed-provider openrouter --embed-api-key 你的 OpenRouter API key # OpenAI默认提供方只需给库和 key memu-codex config --local --db /absolute/path/memu.sqlite3 --embed-api-key 你的 OpenAI API key # 覆盖默认模型以 Jina 为例 memu-codex config --local --db /absolute/path/memu.sqlite3 --embed-provider jina --embed-model Jina 的模型名 --embed-api-key 你的 Jina API key--local可用的 flag来自 Codex 安装指南配置flag说明数据库--db绝对路径如~/.memu/memu.sqlite3展开后的路径或postgres://…DSNEmbedding 提供方--embed-provideropenai、jina、voyage等Embedding 模型--embed-model省略时用该提供方的默认模型Embedding 凭据--embed-api-key是提供方的 key不是 memU Cloud 的 keyEmbedding 端点--embed-base-url本地 OpenAI 兼容服务器时使用两条容易踩的要求--db必须给绝对路径相对路径会按一个计划任务没有的工作目录解析不要把这些值 export 到 shell profile因为定时任务不继承交互式 shell 的环境config.env文件才是唯一的载体。写入完成后命令会提示ready — verify with \memu-codex doctor接着走验证。不经宿主适配器的两种配法裸memuCLI / 环境变量。不接宿主时直接设置上表的环境变量即可解析顺序同样是 进程 env →~/.memu/config.env→ 默认值。例如只换提供方、其余吃默认值export MEMU_EMBED_PROVIDERjina export JINA_API_KEY你的 Jina API keyPython 库。代码里用MemoryService时通过embedding_profiles指定提供方示例来自 READMEservice MemoryService( database_config{metadata_store: {provider: postgres, dsn: postgresql://...}}, embedding_profiles{default: {provider: jina}}, )按 ADR 0005省略embedding_profiles时会从 LLM profiles 派生embedding_config_from_llm旧配置可以不动但要让 embedding 提供方与 chat 提供方不同时必须显式写embedding_profiles。embedding 是独立的memu.embedding包每个提供方一个 backend 模块openai、jina、voyage、doubao含多模态、openrouter其他提供方会回退到 OpenAI 兼容 backend传输层由client_backend选择——sdk官方 OpenAI SDK或httpx裸 HTTP支持memu.embedding.backends里的全部提供方见 EmbeddingConfig。验证配置生效memu-codex config showconfig show只读不写会打印~/.memu/config.env声明的 mode、store、provider、model、embed key是否已设置如果进程环境变量与文件冲突还会注明哪些变量在运行时覆盖了文件。然后跑决定性的一关memu-codex doctordoctor打印解析出的 mode 与本地库/提供方并执行一次冒烟检索必须干净退出。新库上零命中是预期结果——你验证的是配置解析和库能应答不是库里有内容。如果doctor报错用再一次config调用来修而不是去编辑config.env。最后确认检索路径AGENTS.md注入的 skill 走的就是这条路memu-codex retrieve smoke test空结果列表是正常的这一步只验证读路径工作。限制与边界换提供方/模型有保护。MEMU_DB、MEMU_EMBED_PROVIDER、MEMU_EMBED_MODEL三者共同绑定已有的向量空间config拒绝修改任何一个已经设置的值——修好其中一个会让整个库的向量全部失效而检索仍会继续成功但什么都不返回。拒绝信息里提到的--force只用于库确实在被整体替换的场景不用于让 doctor 变绿。如果三个值里有一个看起来错了停下来先确认不要强推。本地 embedding 服务器是可选分支。没有任何云 key 时可以保持openai提供方、把端点指到本地 OpenAI 兼容服务器文档以 Ollama 为例memu-codex config --local --db /absolute/path/memu.sqlite3 --embed-provider openai --embed-base-url http://localhost:11434/v1 --embed-model nomic-embed-text --embed-api-key local这种服务器会忽略凭据所以--embed-api-key local传占位值即可。若经代理访问本地服务器时doctor报 502新版 memU 对 loopback 地址自动绕过代理旧版本需要给调用 memU 的命令设NO_PROXYlocalhost,127.0.0.1非 loopback 的本地地址在任何版本都需要手动加进NO_PROXY。Cloud 模式不适用本文。云模式下 embedding 由托管侧完成--embed-api-key在 cloud 配置里没有角色——它是 embedding 提供方的凭据别和 memU Cloud key 混用。提供方知识以文档核对为准。defaults.py 中的模型名和端点是单一事实来源文件头注明经提供方文档核对换模型或改端点时先以这张表为基准。配置完成后config show里的 provider/model 与doctor冒烟检索通过就是本地模式 embedding 配置完成的标志之后由定时写入任务和retrieve共用这一份配置写入什么就能检索到什么。【免费下载链接】memUPersonal memory across agents项目地址: https://gitcode.com/GitHub_Trending/mem/memU创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考