使用Python SDK调用Mem0主要分为自托管托管服务两种方式。下面这个表格汇总了核心的调用流程和关键点,方便你快速把握。

特性

自托管 (开源)

托管服务 (火山引擎/官方平台)

核心对象

Memory

MemoryClient

初始化关键

配置 config字典,指定LLM、Embedding模型、向量数据库

使用 api_key进行身份验证

核心操作

add, search, get_all, delete等方法一致

数据存储

存储在你自己配置的向量数据库(如Chroma, Qdrant)中

存储在Mem0官方托管的云端

适用场景

注重数据隐私、需要深度定制、离线环境

追求快速上手、省去运维负担、团队协作

🔧 初始化客户端

根据你选择的方式,初始化步骤有所不同。

  1. 自托管模式:你需要一个详细的 config配置来连接本地资源。

    from mem0 import Memory
    import os
    
    # 配置项:需要指定LLM、嵌入模型和向量数据库
    config = {
        "llm": {
            "provider": "openai",  # 例如使用OpenAI的模型
            "config": {
                "model": "gpt-4o-mini",
                "api_key": os.getenv("OPENAI_API_KEY"),
            },
        },
        "embedder": {
            "provider": "openai",
            "config": {
                "model": "text-embedding-3-small",
            },
        },
        "vector_store": {
            "provider": "chroma",  # 例如使用本地的Chroma数据库
            "config": {
                "collection_name": "my_memories",
                "path": "./chroma_db",
            },
        },
    }
    
    # 根据配置创建记忆客户端
    memory_client = Memory.from_config(config)
  2. 托管服务模式:初始化非常简单,只需要API密钥。

    from mem0 import MemoryClient
    
    # 替换 'your-api-key-here' 为你在火山引擎或Mem0官方平台获取的密钥
    memory_client = MemoryClient(api_key="your-api-key-here")

💾 存储与检索记忆

初始化客户端后,核心操作是统一的。

  • 添加记忆:使用 add方法。你可以存储单条信息或完整的对话记录。

    # 添加单条记忆
    memory_client.add("用户计划下个月读一本人工智能相关的书", user_id="user_123")
    
    # 添加多轮对话记忆
    messages = [
        {"role": "user", "content": "我叫李明,喜欢打篮球和编程。"},
        {"role": "assistant", "content": "好的李明,已记下你的爱好。"}
    ]
    result = memory_client.add(messages, user_id="user_123")
  • 检索记忆:使用 search方法,Mem0会基于语义相似度返回最相关的记忆片段。

    # 当用户提问时,搜索相关记忆
    query = "我之前和你聊过什么关于爱好的事吗?"
    relevant_memories = memory_client.search(query=query, user_id="user_123")
    
    # 打印检索结果
    for memory in relevant_memories["results"]:
        print(f"- 记忆ID: {memory['id']}, 内容: {memory['memory']}, 相关性得分: {memory.get('score', 'N/A')}")

🔍 其他实用操作

  • 获取所有记忆:获取某个用户的全部记忆列表。

    all_user_memories = memory_client.get_all(user_id="user_123")
  • 删除记忆:可以按记忆ID删除单条,或删除用户的全部记忆。

    # 删除单条记忆
    memory_client.delete(memory_id="具体的记忆ID")
    
    # 删除用户的所有记忆
    memory_client.delete_all(user_id="user_123")

💡 集成到AI应用中的模式

一个典型的集成模式是“检索-增强-生成”(RAG),即在调用大模型(LLM)生成回复前,先通过Mem0检索相关记忆作为上下文。

def chat_with_memory(user_message, user_id):
    # 1. 检索相关记忆
    memories = memory_client.search(query=user_message, user_id=user_id)
    context = "\n".join([mem["memory"] for mem in memories["results"]])
    
    # 2. 构建增强的Prompt
    prompt = f"""基于以下用户背景信息回答问题。
用户背景:
{context}
问题:{user_message}
回答:"""
    
    # 3. 调用LLM生成回复 (这里需要你已有的LLM客户端,如OpenAI)
    # response = your_llm_client.chat.completions.create(...)
    # assistant_reply = response.choices[0].message.content
    
    # 4. (可选) 将本轮交互作为新记忆存储
    # new_messages = [{"role": "user", "content": user_message}, {"role": "assistant", "content": assistant_reply}]
    # memory_client.add(new_messages, user_id=user_id)
    
    # return assistant_reply
    pass

希望这份指南能帮助你顺利开始使用Mem0。如果你在初始化配置或具体操作中遇到任何问题,可以随时告诉我,例如你倾向于自托管还是托管服务,我可以提供更具体的建议。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐