让AI记住图片、视频和音频:Mnemosyne多模态记忆完整实战教程
【免费下载链接】mnemosyneZero-cloud AI memory that works everywhere. SQLite-backed. One pure-Python dependency.项目地址: https://gitcode.com/gh_mirrors/mnemosyne5/mnemosyne
Mnemosyne 是一款零云端的 AI 记忆系统:它只依赖 SQLite 和一个纯 Python 库,却能让 AI 不仅记住文字,还能记住图片、视频和音频。本教程带你从零配置 Mnemosyne 多模态记忆——把一张截图、一段录音、一个视频变成 AI 可以检索的长期记忆,数据始终留在你的设备上。
为什么"只记文字"的AI记忆不够用?
大多数 AI 记忆方案只处理文本:你截图问 AI、给它一段会议录音,它要么答不上来,要么只能"听过就算了"。
Mnemosyne 的多模态记忆要回答的是这类问题:
- "那张截图里是哪个深色主题配色方案?"
- "那段视频里第几分钟提到了数据库迁移?"
- "我上周录的那段语音里,他答应了什么?"
答案藏在项目的设计文档里:docs/rfc/0002-modality-providers.md 定义了"AI 理解媒体"的接口,docs/rfc/0003-media-moments.md 定义了"文字记到哪里"。
多模态记忆的核心设计:3个关键决策 💡
Mnemosyne 的多模态方案可以用三句话概括,这也是它和"往数据库里塞二进制文件"的方案最大的不同:
| 决策 | 含义 | 对用户的价值 |
|---|---|---|
| 只记文字,不记字节 | 数据库里存的是媒体引用 + AI 生成的描述文字 | 隐私友好,数据库轻量,所有索引内容你都看得懂、可修改 |
| 描述结果=普通记忆 | 每段描述(caption、字幕、OCR)都是一条标准记忆 | 自动继承召回、遗忘衰减、整理、同步等全部能力 |
| 默认不开启 | MNEMOSYNE_MEDIA_*关闭时不发任何网络请求 | 隐私是默认值,不是可选项 |
核心实现在 mnemosyne/core/media.py 的remember_media()入口,它会把媒体登记为一条"资产",再生成若干条"时刻"(moment)——比如视频的某一帧画面描述、音频的某段转录文字,每条时刻都精确标注了位置(时间段、页码、图像区域等)。
快速上手:3步开启多模态记忆 ⚡
第1步:获取 Mnemosyne
git clone https://gitcode.com/gh_mirrors/mnemosyne5/mnemosyne cd mnemosyne && pip install -e .第2步:配置理解端点
Mnemosyne 只认一种协议:OpenAI 兼容接口。所以 Atlas Cloud、OpenRouter、自建的 vLLM,甚至本地 LM Studio 都能用,换服务商只改环境变量,不改代码(完整配置说明见 docs/integrations/openai-compatible-vision.md):
export MNEMOSYNE_MODALITY_ENABLED=1 # 主开关,默认 false export MNEMOSYNE_MODALITY_BASE_URL=https://你的端点/v1 export MNEMOSYNE_MODALITY_API_KEY=你的密钥 export MNEMOSYNE_MODALITY_VISION_MODEL=你的视觉模型 # 可选:视频帧模型 / 音频转写模型 export MNEMOSYNE_MODALITY_VIDEO_MODEL=... export MNEMOSYNE_MODALITY_AUDIO_MODEL=whisper-1⚠️新手最容易踩的坑:如果你已经运行过 Mnemosyne,
config.yaml里已经写入了这些键的默认值,此时再 export 环境变量会被静默忽略。请改用mnemosyne config set命令,或执行mnemosyne config migrate一次性导入。详见官方文档。
想要完全不出网?把端点指向本地 LM Studio(http://localhost:1234/v1),图片和视频理解全程离线。
第3步:记下第一张图片
mnemosyne media ./diagram.png --title "架构图" --jsonCLI 入口在 mnemosyne/cli.py。输出会告诉你资产 ID、理解状态和生成的记忆条数。
按类型实战:图片、视频、音频、文档怎么做?
| 类型 | 处理方式 | 生成的"时刻"类型 | 额外要求 |
|---|---|---|---|
| 🖼️ 图片 | 发给视觉模型描述 | 整体描述(caption)、OCR 文字(ocr) | 视觉模型 |
| 🎬 视频 | 最多抽 8 帧发给视觉模型 + 音轨转文字 | 画面描述(shot)、字幕(transcript),带时间戳 | ffmpeg/ffprobe |
| 🎙️ 音频 | 发给转写接口(OpenAI 兼容audio/transcriptions) | 带时间戳的转录文本 | 音频模型 |
| 📄 文档 | 本地解析,不上传 | 按页/章节/字符范围定位的文字片段 | PDF 需pip install 'mnemosyne-memory[media]' |
几个值得记住的细节:
- 文档永远不出机器。txt、md、docx、pptx、epub 全部本地解析(mnemosyne/core/modality_documents.py);唯一例外是无文字层的扫描版 PDF,会被当图片发给视觉模型。
- 视频理解由 mnemosyne/core/modality_video.py 负责:抽帧 + 音轨转写,两种信息合并成带时间戳的时刻,所以"第 90 秒谁说了 X"这种问题才有依据。
- 音频转写走 mnemosyne/core/modality_openai_audio.py,超过 25MB 的音频会在本地直接拒绝,而不是发出去被拒。
- 每个资产最多保留 12 条时刻(
MNEMOSYNE_MODALITY_MAX_MOMENTS),防止一个视频生成几百条记忆挤爆工作记忆。
4种写入方式:CLI、MCP工具、Python、Hermes
同一个remember_media能力,在不同入口都能调用:
| 入口 | 用法 |
|---|---|
| CLI | mnemosyne media <路径或URL> [--modality image] [--title T] [--hint H] |
| MCP 工具 | 调用mnemosyne_remember_media,参数ref加可选的modality、title、hint |
| Python | BeamMemory.remember_media(ref),实现在 mnemosyne/core/beam.py |
| Hermes | 通过 Mnemosyne provider 暴露的同名工具 |
MCP 工具定义见 mnemosyne/tool_schemas.py。注意工具入口比 CLI 更严格:本地文件必须先在MNEMOSYNE_MEDIA_ALLOWED_PATHS白名单目录内(防符号链接越权),且默认禁止指向内网/本地回环地址的 URL——因为调用方可能是远程模型。
召回实战:怎么问出"我看到过什么"?
这是多模态记忆最爽的部分:时刻就是普通记忆,所以你不需要学新查询语法。
- 直接问:"那个架构图里画了什么模块?"——命中的是当初生成的 caption 记忆。
- 召回结果会附带只读的
media增强字段(媒体引用、模态、时间区间),客户端可以据此深链跳转到视频的具体时间点,而召回过程绝不取回原始字节。 - 健康检查:
mnemosyne doctor会报告孤立的时刻记录;资产理解状态有 5 种——pending / ok / partial / unavailable / refused,其中unavailable(没配置模型,只登记了引用)是成功而非报错,你依然拥有一条"我引用过这个文件"的可搜索记录。
相关设计见 docs/rfc/0004-archive-boundary.md,测试覆盖在 tests/test_media_ingest.py 等文件中,可以放心跟随主线版本升级。
隐私安全清单:把心放肚子里 🛡️
- 默认静默:
MNEMOSYNE_MODALITY_ENABLED未开启时,即使注册了后端也不会发起任何外呼(检查逻辑在 mnemosyne/core/modality_backends.py)。 - 无环境采集:没有文件监听、没有目录扫描,只处理你明确点名的文件。
- 字节不落库:两张媒体表没有 BLOB 列,数据库里只有引用和文字。
- 内联载荷封顶 25MB,本地路径白名单 + 私有 URL 默认拒绝。
常见问题 FAQ ❓
Q:配置了模型,状态却是unavailable?检查端点连通性和模型是否真的支持图像输入。Mnemosyne 会可选地探测/models接口,在模型是纯文本时给出警告,但探测失败不影响主流程。
Q:改了MNEMOSYNE_MODALITY_BASE_URL没生效?端点和模型名在客户端构建时只读一次,需要重启进程;其余参数即时生效。
Q:想让 AI 按我的口吻描述图片?用--hint参数或MNEMOSYNE_MODALITY_PROMPT环境变量覆盖描述提示词。
Q:能用自己的视觉客户端替换 HTTP 适配器吗?可以。协议只有一个describe()方法,set_modality_backend一行注册,详见官方文档的 "Bringing your own backend" 一节。
写在最后
Mnemosyne 的多模态记忆方案证明了"最便宜的架构往往最优雅":不新建向量表、不往数据库塞二进制、不新增召回通道——让媒体退化成文字,整个现有记忆引擎就自动全部生效。三步配置、四种类型全覆盖、数据不出本机,这就是零云端 AI 多模态记忆的完整形态。现在就跑起mnemosyne media,让 AI 开始记住你看到和听到的一切吧。
【免费下载链接】mnemosyneZero-cloud AI memory that works everywhere. SQLite-backed. One pure-Python dependency.项目地址: https://gitcode.com/gh_mirrors/mnemosyne5/mnemosyne
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考