|
你是否也曾苦恼,精心调教的 AI 助手,转头就把你们的对话忘得一干二净?每开启一次新的会话,都得把前情提要再说一遍,仿佛在和一个只有七秒记忆的鱼对话。 这背后的原因其实很简单:大多数大型语言模型(LLM)天生是无状态的,它们不会主动保留过去的交互信息。为了解决这个问题,开发者们通常会引入向量数据库来存储对话历史和上下文。但这也带来了新的挑战:技术栈更复杂了,成本也上去了,还可能被特定的服务商“套牢”。 今天,我们要介绍一个名为 Memori 的开源项目,它为 AI 的“失忆症”提供了一剂优雅且经济的良方。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;display: block;max-width: 100%;margin: 0.1em auto 0.5em;border-radius: 4px;height: auto !important;" title="null" src="https://api.ibos.cn/v4/weapparticle/accesswximg?aid=128450&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL3N6X21tYml6X3BuZy9ORVdFb3l2c3Y1QTFPcWhjVTN5eTBJYWhhZUZEbTFUUHZBYmM4a2pFcVJCMkRNZkppYnNHaWE5ZHRmY3ZUaWNnMFdxVG1NVlcxZlpLRE1KSTQ3S2hJZ0xWUS82NDA/ZnJvbT1hcHBtc2cmYW1w;wx_fmt=png"/>Memori 是什么?Memori 是一个为 LLM、AI Agent 和多智能体系统设计的开源记忆引擎。它的核心理念是:用一行代码,为你熟悉的标准 SQL 数据库(如 SQLite, PostgreSQL, MySQL)赋予 AI 记忆能力。 没错,你没看错,只需要一行代码:memori.enable()。 为什么选择 Memori? - • 一键集成:无论是 OpenAI、Anthropic、LangChain 还是其他 LLM 框架,都能无缝接入。
- • 原生 SQL 存储:将记忆数据存储在你完全控制的 SQL 数据库中,数据可移植、可查询、可审计。
- • 节省 80-90% 成本:不再需要昂贵且复杂的向量数据库。
- • 零厂商锁定:你可以随时将记忆数据导出为 SQLite 文件,轻松迁移。
- • 智能记忆:自动提取实体、映射关系,并根据上下文智能判断记忆的优先级。
快速上手体验 Memori 的魔力有多简单?我们来看一段代码。 首先,安装 SDK: pipinstallmemorisdk 然后,在你的代码中加入 Memori: frommemoriimportMemori fromopenaiimportOpenAI
#初始化并启用Memori memori=Memori(conscious_ingest=True) memori.enable()
client=OpenAI()
#第一次对话 response=client.chat.completions.create( model="gpt-4o-mini", messages=[{"role":"user","content":"我正在开发一个FastAPI项目"}] )
#过了一段时间,开启新的对话 response=client.chat.completions.create( model="gpt-4o-mini", messages=[{"role":"user","content":"帮我为这个项目添加用户认证功能"}] ) #此时,LLM已经知道你在谈论的是之前的FastAPI项目
就是这么简单!在第二次对话中,你无需重复提及项目背景,Memori 已经悄悄地将上下文信息注入,让 LLM “记起”了你们之前的谈话内容。 工作原理Memori 的实现方式非常巧妙,它通过“拦截” LLM 的调用请求来工作。
整个流程可以分为两部分: - 1. 调用前(上下文注入):当你的应用调用 LLM 时,Memori 会先拦截这个请求。它会根据当前对话,从你的 SQL 数据库中检索最相关的记忆片段,然后将这些上下文信息“注入”到发送给 LLM 的消息中。
- 2. 调用后(记忆存储):当 LLM 返回响应后,Memori 再次拦截。它的记忆代理(Memory Agent)会从这次交互中提取关键实体、事实、偏好等信息,进行分类和结构化,然后存入 SQL 数据库,以备将来使用。
此外,Memori 还有一个后台的“意识代理”(Conscious Agent),它会定期分析长期记忆,将重要的信息提升到短期工作记忆中,进一步优化检索效率。 强大的兼容性Memori 的设计初衷就是为了让开发者能够轻松地将其集成到现有工作流中。 数据库支持 你可以使用任何你熟悉的 SQL 数据库,只需提供一个连接字符串即可。
| ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;border-width: 1px;border-style: solid;border-color: rgb(223, 223, 223);padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;background: rgba(0, 0, 0, 0.05);">数据库 | ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;border-width: 1px;border-style: solid;border-color: rgb(223, 223, 223);padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;background: rgba(0, 0, 0, 0.05);">连接字符串示例
|---|
| ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;border-width: 1px;border-style: solid;border-color: rgb(223, 223, 223);padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;">SQLite | ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;border-width: 1px;border-style: solid;border-color: rgb(223, 223, 223);padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;">sqlite:///my_memory.db | ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;border-width: 1px;border-style: solid;border-color: rgb(223, 223, 223);padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;">PostgreSQL | ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;border-width: 1px;border-style: solid;border-color: rgb(223, 223, 223);padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;">postgresql://user:pass@localhost/memori | ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;border-width: 1px;border-style: solid;border-color: rgb(223, 223, 223);padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;">MySQL | ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;border-width: 1px;border-style: solid;border-color: rgb(223, 223, 223);padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;">mysql://user:pass@localhost/memori | ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;border-width: 1px;border-style: solid;border-color: rgb(223, 223, 223);padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;">Neonpostgresql://user:pass@ep-*.neon.tech/memori | | Supabase | postgresql://postgres:pass@db.*.supabase.co/postgres | LLM 框架支持 得益于 LiteLLM 的回调系统,Memori 可以支持几乎所有的 LLM 框架。
| 框架 | 状态 |
|---|
| OpenAI | ✓ 原生支持 | | Anthropic | ✓ 原生支持 | | LiteLLM | ✓ 原生支持 | | LangChain | ✓ 支持 | | Azure OpenAI | ✓ 支持 | | 100+ 模型 | ✓ 支持 | 总结对于正在构建 AI 应用的开发者来说,记忆管理是一个无法回避的核心问题。Memori 项目提供了一种全新的解决思路,它通过拥抱开发者最熟悉的 SQL 技术,极大地降低了实现持久化记忆的门槛和成本。 它不仅让 AI “记住”了过去,更让开发者能够完全掌控自己的数据,避免了被特定技术或服务锁定。如果你也想让你的 AI 应用变得更聪明、更善解人意,那么 Memori 绝对是一个值得尝试的开源利器。 |