链载Ai
标题: Memori:让 AI 拥有 [打印本页]
作者: 链载Ai 时间: 昨天 22:38
标题: Memori:让 AI 拥有
之前和大家分享了我们的pxcharts多维表格编辑器和flowmixAI智能办公工作台:flowmixAI:从 AI 知识库到企业级智能工作台pxcharts多维表格ultra版:AI + 多维表,工作效率飙升!JitWord,一款AI驱动的协同Word文档编辑器ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;background-color: rgb(255, 255, 255);line-height: 2em;visibility: visible;">最近发现了一个能解决 AI 开发核心痛点的工具 ——Memori。这个被称为 "AI 第二大脑" 的开源项目,正在用一种巧妙的方式解决 LLM 对话中 "记不住事" 的经典问题。ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;background-color: rgb(255, 255, 255);line-height: 2em;visibility: visible;">今天我们就来深度拆解这个项目,看看它到底有什么过人之处。ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;background-color: rgb(255, 255, 255);line-height: 2em;visibility: visible;overflow-wrap: break-word !important;">github地址:https://github.com/GibsonAI/memoriingFang SC", "Source Han Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;scrollbar-color: transparent transparent;margin: 24px 0px;padding: 0px;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 600;font-stretch: inherit;font-size: 16px;line-height: 26px;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;letter-spacing: 0px;color: rgba(0, 0, 0, 0.9);orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">它到底解决什么痛点?ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;background-color: rgb(255, 255, 255);line-height: 2em;visibility: visible;overflow-wrap: break-word !important;">做 RAG 的朋友都知道:ingFang SC", "Source Han Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;scrollbar-color: transparent transparent;margin: 0px 0px 16px;padding: 0px 0px 0px 24px;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 400;font-stretch: inherit;font-size: 14px;line-height: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;list-style: disc;color: rgba(0, 0, 0, 0.9);letter-spacing: 0.5px;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1">向量数据库只存“外部知识”,对话一关就“失忆”;
提示词长度有限,历史记录一多就“断片”;
多租户场景下,用户隐私数据混在 prompt 里,极易泄露。
ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;background-color: rgb(255, 255, 255);line-height: 2em;visibility: visible;overflow-wrap: break-word !important;">memori把“会话级记忆”抽象成独立层,让大模型在每次请求时自动携带“相关往事”,既省 token 又合规。一句话:给 LLM 装上“私人日记本”,且日记本归用户自己保管。它就像给 AI 装了一个 "外接大脑",用标准 SQL 数据库(SQLite/PostgreSQL 等)存储记忆,让 LLM 能跨会话记住关键信息,还能智能提取有用内容 —— 比如用户说 "我是 Python 开发者",它会自动归类为 "技能",后续对话时自动调出来。ingFang SC", "Source Han Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;scrollbar-color: transparent transparent;margin: 24px 0px;padding: 0px;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 600;font-stretch: inherit;font-size: 16px;line-height: 26px;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;letter-spacing: 0px;color: rgba(0, 0, 0, 0.9);orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">功能亮点ingFang SC", "Source Han Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;scrollbar-color: transparent transparent;margin: 24px 0px;padding: 0px;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 600;font-stretch: inherit;font-size: 16px;line-height: 26px;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;letter-spacing: 0px;color: rgba(0, 0, 0, 0.9);orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">在研究了这款项目之后,我总结一下它的几个亮点,供大家参考:- ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;background-color: rgb(255, 255, 255);line-height: 2em;visibility: visible;overflow-wrap: break-word !important;">会话持久化:自动分段、去重、加密落盘。
零配置召回:基于 Hybrid Retrieval(向量 + 关键词 + 时间衰减),Top-K 自动可插。
多租户隔离:Namespace + 端到端 AES, SaaS 直接抄作业。
生命周期管理:支持 TTL、手动遗忘、GDPR 一键导出。
边缘部署:50 MB 内存即可跑,树莓派当“记忆盒子”。
技术架构:它是如何实现 "记忆" 的?
理解Memori的架构,关键要抓住 "拦截 - 处理 - 存储" 这个核心流程。下面我总结了一个它的架构总览图:
┌-------------------------┐│ChatApp/Agent│<--任何HTTP/gRPC客户端└-----------┬-------------┘│JWT/APIKey┌-----------┴-------------┐│memori-server(TS)│<--无状态,可横向扩│├─REST/WebSocket││├─ACL中间件││└─记忆调度器│└-----------┬-------------┘│gRPC┌-----------┴-------------┐│memori-core(Python)│<--有状态,负责召回&写入│├─EmbeddingRouter│(支持Ollama/OpenAI/Claude)│├─RecallService│(HybridRetrieval)│├─MemoryStore│(SQLite/PG/S3插件)│└─CryptoLayer│(AES-256-GCM,key不归服务器)└-----------┬-------------┘│FFI┌-----------┴-------------┐│memori-lite(Rust)│<--边缘侧,50MB内存│嵌入式向量索引│└-------------------------┘
我们可以把它拆成三个层面来看:
- 调用前(Context Injection)当我们调用
client.chat.completions.create()时,Memori 会先拦截请求,通过 Retrieval Agent(自动模式)或 Conscious Agent(手动模式)从数据库拉取相关记忆,悄悄塞到对话上下文里。 - 调用后(Recording)LLM 返回响应后,Memory Agent 会自动提取关键信息(比如 "用户用 FastAPI"),分类后存入 SQL 数据库,并建立全文搜索索引。
- 后台优化每 6 小时,Conscious Agent 会自动分析记忆,把重要内容从 "长期存储" 提到 "短期缓存",确保关键信息优先被调用。
模块组成(代码级拆解)
从项目结构看,Memori采用了高度模块化的设计:
memori/├──core/#核心模块:记忆接口、数据库管理│├──memory.py#主类,控制双记忆模式│├──database.py#数据库连接和操作├──agents/#智能处理代理│├──memory_agent.py#提取和分类记忆│├──conscious_agent.py#后台分析和优化│└──retrieval_agent.py#记忆检索引擎├──integrations/#LLM适配器:OpenAI/Anthropic等├──database/#多数据库支持:连接和迁移工具└──tools/#记忆搜索工具,支持函数调用
这种设计的好处很明显:想加新数据库?改 database 模块;想支持新 LLM?加个 integration 适配器就行,核心逻辑不用动。
双记忆模式(灵活适配场景)
Memori支持两种记忆模式,这点我认为特别贴心:
- auto_ingest(自动模式)
- conscious_ingest(手动模式)可自定义记忆规则,适合复杂场景(比如需要筛选敏感信息时)
核心技术栈清单
我总结了一下Memori采用的技术方案,大家可以参考一下:
应用场景:哪些地方能用上它?
Memori的适用范围比我想象的更广,举几个典型场景:
- 个人助手类应用记住用户的作息、偏好(比如 "我不吃辣"),提供个性化服务
- 开发者工具像例子里的 "FastAPI 项目助手",记住项目细节,不用反复说明需求
- 客服 AI
- 多 Agent 系统让多个 AI 角色共享记忆库,协同完成任务(比如一个做调研,一个写报告)
- 教育类 AI
官方 demo 里的 "个人日记助手" 特别有意思,它能分析用户的情绪变化和生活规律,提供个性化建议 —— 这就是记忆能力带来的进阶体验。
本地部署教程
想亲手试试?3 分钟就能跑起来:
- 安装依赖
pipinstallmemorisdk#如需PostgreSQL,额外安装:pipinstallpsycopg2-binary
- 配置环境变量创建
.env文件,填入 LLM 密钥(以 OpenAI 为例):
- 编写测试代码
frommemoriimportMemorifromopenaiimportOpenAI#初始化记忆系统memori=Memori(conscious_ingest=True)memori.enable()#初始化OpenAI客户端client=OpenAI()#第一次对话:告诉AI你的信息client.chat.completions.create(model="gpt-4o-mini",messages=[{"role":"user","content":"我在用Django开发博客"}])#第二次对话:测试记忆效果response=client.chat.completions.create(model="gpt-4o-mini",messages=[{"role":"user","content":"怎么给我的项目加评论功能?"}])print(response.choices[0].message.content)#此时AI会自动关联"Django博客"的上下文,给出针对性建议- 运行代码
运行后会生成memori.db(SQLite 数据库),所有记忆都存在这里,下次运行还能复用。
总结:为什么说它是 AI 开发的 "刚需工具"?
在 AI 应用从 "单次对话" 走向 "长期交互" 的趋势下,Memori解决的 "记忆问题" 其实是个底层刚需。它的聪明之处在于:不用发明新的存储方案(直接用 SQL),不用复杂的集成步骤(一行代码搞定),却能实实在在降低 80% 以上的开发成本和 token 消耗。
对于开发者来说,这意味着我们能更专注于业务逻辑,不用重复造记忆系统的轮子;对于企业来说,数据存在自己的数据库里,既安全又灵活。
| 欢迎光临 链载Ai (https://www.lianzai.com/) |
Powered by Discuz! X3.5 |