PolarDB 长期记忆Mem0

更新时间:
复制为 MD 格式

AI Agent在与用户交互时,往往因为缺乏长期记忆而导致对话体验不连贯、无法提供个性化服务。PolarDB Mem0是一款为AI Agent构建专属长效记忆的托管服务,100%兼容开源的Mem0系统。通过在多次交互中高效地抽取、存储与调用记忆,赋予Agent持续学习与积累认知的能力,帮助您打造真正智能和个性化的AI应用。

说明

PolarDB mem0功能目前处于灰度阶段。若您有相关需求,可通过钉钉搜索群号入群咨询。钉钉群号:28000021116。

功能优势

  • 开箱即用,快速集成:100%兼容开源Mem0框架,支持通过简洁的API快速接入,帮助您将现有Agent应用无缝迁移。服务内置了优化的Prompt模板,同时支持自定义策略,以适应不同业务场景。

  • 全托管服务,成本更优:提供可视化的Web管理界面,您无需投入硬件成本,也无需关心系统的部署、运维和故障处理。通过记忆精炼技术,可显著降低大模型的Token消耗,进一步节约资源成本。

应用场景

  • 智能客服系统:感知跨会话上下文,避免重复询问,提供连贯的问题解决方案,提升服务效率与满意度。

  • 个性化教育:构建学员能力画像,动态调整教学内容,提供个性化学习路径,实现因材施教。

  • 医疗健康管理:持续记录患者病史、治疗方案与生理指标,建立完整健康档案,提供连续性个体化医疗服务。

  • 情感陪伴与心理健康:深度理解用户情绪、性格和生活事件,识别压力源并提供共情式持续支持。

  • 智能推荐系统:基于用户的长期兴趣和即时反馈,提供更精准、动态的推荐内容。

快速体验

步骤一:创建长期记忆Mem0

  1. 登录PolarDB控制台,单击左侧导航栏中的PolarDB Mem0,并单击新建记忆

  2. 在购买页面中,请根据您的需求选择适合的配置:

    配置项

    说明

    名称

    为您创建的长期记忆Mem0设置一个名称。

    说明

    不能以http://或者https://开头,且长度2~256个字符。

    地域

    选择应用所在的地理位置

    说明
    • 长期记忆Mem0购买完成后,不支持更改地域。

    • 建议将长期记忆Mem0与需要连接的ECS创建在同一地域,否则它们将无法通过内网(私网)实现互通,只能通过外网(公网)进行通信,这将无法充分发挥最佳性能。

    网络类型

    固定为专有网络。建议选择与需要连接的ECS相同的专有网络VPC,否则它们将无法通过内网(私网)实现互通,仅能通过外网(公网)进行通信,这将无法充分发挥集群的最佳性能。

    说明

    如果已有专有网络和交换机无法满足您的要求,您可以自行创建专有网络与交换机

    安全组

    配置长期记忆Mem0的安全组。

  3. 购买成功后,请返回控制台,即可查看新创建的长期记忆Mem0

    说明

    系统需要3~5分钟创建应用,请耐心等待。

    image

步骤二:获取连接地址与访问凭证

  • 获取连接地址:在长期记忆Mem0列表页面,单击您的应用ID/名称进入详情页,在基本信息页签中查看公网地址私网地址

    说明
    • 公网地址需单独申请,请单击申请按钮以进行申请。

    • 公网地址仅提供IP地址和端口,不提供域名。如您有相关需求,可自行绑定域名。

    image

  • 获取配置信息:在长期记忆Mem0列表页面,单击您的应用ID/名称进入详情页,在配置页签中查看相关配置信息。image

步骤三:配置白名单

长期记忆Mem0列表页面,单击您的应用ID/名称进入详情页,并在白名单页签,新增IP白名单分组选择安全组配置已有白名单分组。

说明
  • 应用白名单与集群白名单相互独立,需进行单独配置。

  • 如果您的ECS实例需要访问应用,可在ECS实例详情页面查看ECS实例的IP地址,并将其填写至IP白名单中。

    • 如果您的ECS实例与应用位于同一VPC内,您可以填写ECS的私网IP地址或其所在VPC网段。

    • 如果您的ECS实例与应用不在同一VPC内,您可填写ECS的公网IP地址,或添加ECS所在的安全组。

  • 如果您本地的服务器、电脑或其他云服务器需要访问应用,请将其公网IP地址添加到IP白名单中。

image

步骤四:(可选)自定义提取策略(Prompt)

长期记忆Mem0通过内置的Prompt模板(提取策略)来指导LLM如何从对话中提取和总结记忆。您可以自定义这些Prompt以适应特定的业务场景。

策略类型

  • 当前仅支持会话摘要与语义记忆两种策略类型。

  • 每种策略类型(如会话摘要)在同一时间只能启用一个策略。

操作说明

  1. 您可以在长期记忆Mem0提取策略页签中进行管理这些策略。image

  2. 您可以编辑现有的策略进行微调,或新增策略后,通过修改策略按钮将其设为当前启用的策略。image

步骤五:操作示例

添加记忆

curl -X POST http://my-endpoint:8080/v1/memories \
  -H "Content-Type: application/json" \
  -H "Authorization: Token <your-api-key>" \
  -d '{
        "messages": [
            {
              "role": "user",
              "content": "我喜欢吃辣,特别是川菜。"
            },
            {
              "role": "assistant",
              "content": "好的,已经记下您的口味偏好。"
            }
        ],
        "user_id": "user_002",
        "agent_id": "food-assistant",
        "run_id": "user_002_run_id",
        "metadata": {
            "additionalProp1": {}
        }
    }'

预期返回结果:

{
    "results": [
        {
            "id": "32155c0a-xxxx-xxxx-xxxx-804e119bb965",
            "event": "ADD",
            "data": {
                "memory": "喜欢吃辣"
            }
        },
        {
            "id": "9188deee-xxxx-xxxx-xxxx-3073ef826b42",
            "event": "ADD",
            "data": {
                "memory": "特别喜欢川菜"
            }
        }
    ]
}

搜索记忆

curl -X POST http://my-endpoint:8080/v2/memories/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Token <your-api-key>" \
  -d '{
        "query": "我喜欢什么菜",
        "agent_id": "food-assistant",
        "filters": {
            "user_id": "user_002",
            "run_id": "user_002_run_id",
            "additionalProp1": {}
        }
    }'

预期返回结果:

{
    "results": [
        {
            "id": "9188deee-xxxx-xxxx-xxxx-3073ef826b42",
            "memory": "特别喜欢川菜",
            "hash": "a826fbf3c3844024633e84d04875ee45",
            "metadata": {
                "additionalProp1": {

                }
            },
            "score": 0.681654033365126,
            "created_at": "2026-03-05T23:59:36.038217-08:00",
            "updated_at": null,
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id"
        },
        {
            "id": "32155c0a-xxxx-xxxx-xxxx-804e119bb965",
            "memory": "喜欢吃辣",
            "hash": "b2882aaf96654a9e16f45f363022010a",
            "metadata": {
                "additionalProp1": {

                }
            },
            "score": 0.582298149788604,
            "created_at": "2026-03-05T23:59:36.023417-08:00",
            "updated_at": null,
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id"
        }
    ]
}

获取记忆

  curl -X POST http://my-endpoint:8080/v2/memories \
  -H "Content-Type: application/json" \
  -H "Authorization: Token <your-api-key>" \
  -d '{
        "filters": {
            "user_id": "user_002",
            "run_id": "user_002_run_id",
            "agent_id": "food-assistant"
        }
    }'

预期返回结果:

{
    "results": [
        {
            "id": "39b06e97-xxxx-xxx-xxxx-4223818bc04e",
            "memory": "喜欢吃辣",
            "hash": "b2882aaf96654a9e16f45f363022010a",
            "metadata": {
                "additionalProp1": {

                }
            },
            "created_at": "2026-03-06T00:12:45.109789-08:00",
            "updated_at": null,
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id"
        },
        {
            "id": "482def46-xxxx-xxxx-xxxx-ff4886a1047c",
            "memory": "特别喜欢川菜",
            "hash": "a826fbf3c3844024633e84d04875ee45",
            "metadata": {
                "additionalProp1": {

                }
            },
            "created_at": "2026-03-06T00:12:45.121585-08:00",
            "updated_at": null,
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id"
        }
    ]
}

释放长期记忆Mem0

登录PolarDB控制台,单击左侧导航栏中的PolarDB Mem0,并找到您的长期记忆Mem0,单击操作列的释放应用

重要

释放后,该长期记忆Mem0将无法恢复,请谨慎处理。

image

计费说明

邀测期间免费。

附录:API参考

PolarDB Mem0基于开源框架mem0(V1.0.1)提供托管服务。您可以通过访问http://<your-endpoint>:8080/docs查看实时更新的API文档。image

请求头

所有API请求都需要在HTTP Header中包含Authorization: Token <your-api-key>进行认证。

请求示例

此处仅列举部分API参考。

创建记忆(Create Memories)

存储新的记忆。服务会自动对messages内容进行分析,生成会话摘要和语义记忆。

  • 请求地址POST /v1/memories

  • 请求体:

    messages array(必选)

    对话消息列表,遵循OpenAI格式。

    属性

    role String(必选)

    消息发送者角色,如userassistant

    content String(必选)

    消息内容。

    curl

    curl -X POST http://my-endpoint:8080/v1/memories \
      -H "Content-Type: application/json" \
      -H "Authorization: Token <your-api-key>" \
      -d '{
            "messages": [
                {
                  "role": "user",
                  "content": "我喜欢吃辣,特别是川菜。"
                },
                {
                  "role": "assistant",
                  "content": "好的,已经记下您的口味偏好。"
                }
            ],
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id",
            "metadata": {
                "additionalProp1": {}
            }
        }'

    Python

    import requests
    import json
    
    payload = {
        "messages": [
            {"role": "user", "content": "我喜欢吃辣,特别是川菜。"},
            {"role": "assistant", "content": "好的,已经记下您的口味偏好。"}
        ],
        "user_id": "user-002",
        "agent_id": "food-assistant",
        "run_id": "user_002_run_id"
    }
    
    response = requests.post(
        "http://<your-endpoint>:8080/v1/memories",
        headers={"Authorization": "Token <your-api-key>", "Content-Type": "application/json"},
        data=json.dumps(payload)
    )
    
    print(response.json())
    

    user_id String(必选)

    用户的唯一标识符。

    agent_id String(可选)

    智能体的唯一标识符,用于在同一用户下隔离不同应用的记忆。

    run_id String(可选)

    单次执行或会话的唯一标识符。

    metadata Object(可选)

    附加的元数据,会与记忆一同存储。

搜索记忆(Search Memories)

根据查询字符串,搜索最相关的记忆。

  • 请求地址POST /v2/memories/search

  • 请求体:

    query String(必选)

    用于搜索的查询文本,例如用户的新问题。

    curl

    curl -X POST http://my-endpoint:8080/v2/memories/search \
      -H "Content-Type: application/json" \
      -H "Authorization: Token <your-api-key>" \
      -d '{
            "query": "我喜欢什么菜",
            "agent_id": "food-assistant",
            "filters": {
                "user_id": "user_002",
                "run_id": "user_002_run_id",
                "additionalProp1": {}
            }
        }'
    

    Python

    import requests
    import json
    
    payload = {
        "query": "我喜欢什么菜",
        "agent_id": "food-assistant",
        "filters": {
              "user_id": "user_002",                                                                                                                                                                            
              "run_id": "user_002_run_id"                       
          }
    }
    
    response = requests.post(
        "http://<your-endpoint>:8080/v2/memories/search",
        headers={"Authorization": "Token <your-api-key>", "Content-Type": "application/json"},
        data=json.dumps(payload)
    )
    
    print(json.dumps(response.json(), indent=2, ensure_ascii=False))
    

    agent_id String(可选)

    限定在指定智能体下搜索。

    filters String(必选)

    基于元数据的过滤条件。

    属性

    user_id String(必选)

    用户的唯一标识符。

    run_id String(可选)

    限定在指定会话下搜索。

获取记忆(Get Memories)

获取指定范围内的所有原始记忆。

  • 请求地址POST /v2/memories

  • 请求体:

    filters String(必选)

    基于元数据的过滤条件。

    属性

    user_id String(必选)

    用户的唯一标识符。

    agent_id String(可选)

    限定获取指定智能体的记忆。

    run_id String(可选)

    限定在指定会话下搜索。

    curl

      curl -X POST http://my-endpoint:8080/v2/memories \
      -H "Content-Type: application/json" \
      -H "Authorization: Token <your-api-key>" \
      -d '{
            "filters": {
                "user_id": "user_002",
                "run_id": "user_002_run_id",
                "agent_id": "food-assistant"
            }
        }'

    Python

    import requests
    import json
    
    payload = {
        "filters": {
              "user_id": "user_002",                                                                                                                                                   
              "run_id": "user_002_run_id",
              "agent_id": "food-assistant",                     
          }
    }
    
    response = requests.post(
        "http://<your-endpoint>:8080/v2/memories",
        headers={"Authorization": "Token <your-api-key>", "Content-Type": "application/json"},
        data=json.dumps(payload)
    )
    
    print(json.dumps(response.json(), indent=2, ensure_ascii=False))
    

删除记忆(Delete Memories)

删除指定范围内的所有记忆。

  • 请求地址DELETE /v1/memories

  • 请求体:

    user_id String(必选)

    用户的唯一标识符。

    curl

    curl -X DELETE 'http://<your-endpoint>:8080/v1/memories?user_id=user_002&agent_id=food-assistant' \
      -H 'accept: application/json' \
      -H 'Authorization: Token <your-api-key>'

    Python

    import requests
    import json
    
    # 限制搜索范围
    current_user_id = "user_002"
    current_agent_id = "food-assistant"
    
    # 准备API请求的URL和数据
    api_url = f"http://<your-endpoint>:8080/v1/memories?user_id={current_user_id}&agent_id={current_agent_id}"
    
    response = requests.delete(
        api_url,
        headers={"Authorization": "Token <your-api-key>"},
    )
    
    print(json.dumps(response.json(), indent=2, ensure_ascii=False))
    

    agent_id String(可选)

    如果提供,则仅删除该智能体的记忆。

    run_id String(可选)

    如果提供,则仅删除该会话的记忆。