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

计费说明

  • 计费方式:按量付费(后付费),先使用再付费。使用服务后费用计入账单内,您可以在账单出账后结算费用。

  • 计费周期:以小时为周期统计所有计费项的使用量,并结算生成账单。

  • 计费项

    • 计算与存储资源:记忆抽取完成后会将记忆进行向量化并流式写入索引,需要持续占用计算资源,每个小时均会按照当时实际用量计算该小时费用。计算与存储资源版本如下:

      说明
      • 计算资源包括创建记忆、修改记忆、构建记忆索引、检索记忆、删除记忆相关的计算资源。

      • 存储资源包含抽取的记忆向量化,存储向量和向量相关数据所需的存储资源。

      • 计算和存储资源大小与记忆量成正比,系统会按照实际用量自动扩缩容。

      • 创建PolarDB Mem0后,每小时均会产生费用,如不需要使用,请及时清理记忆库。

      • 标准版:按记忆条数和时间收费。支持30 QPS,最多支持2000万条记忆/向量。

        地域

        单价

        中国内地

        0.015元/万条/小时

        中国(香港)与海外

        0.0255元/万条/小时

      • 企业版:目前处于灰度阶段。若您有相关需求,请提交工单联系我们为您处理。

    • 模型费用:记忆抽取、记忆向量化与ReRank模型的推理,按照实际调用模型所消耗的Token统计并计费。当前PolarDB Mem0支持的模型如下:

      说明

      PolarDB Mem0中所使用的模型(例如qwen3-max、text-embedding-v4qwen3-rerank等)均为阿里云大模型服务平台百炼中的模型。

      • 文本生成:qwen-plus。

      • 文本向量:text-embedding-v4。

      • 文本排序模型:qwen3-rerank。

      单击展开查看模型详细计费规则

      文本生成

      使用记忆库,调用大语言模型服务进行记忆抽取时,按输入Token和输出Token计费。

      千问Plus

      模型名称

      地域

      单次请求的输入Token范围

      输入单价(每百万Token)

      输出单价(每百万Token)

      非思考模式

      思考模式(思维链+回答)

      qwen-plus

      中国内地

      0<Token≤128K

      0.96

      2.4

      9.6

      128K<Token≤256K

      2.88

      24

      28.8

      256K<Token≤1M

      5.76

      57.6

      76.8

      中国(香港)与海外

      0<Token≤256K

      3.5232

      10.5684

      35.2284

      256K<Token≤1M

      10.5684

      31.7052

      105.6852

      文本向量

      使用文本向量化模型,将文本数据快速转换为向量数据,以进行记忆的检索。按输入Token计费,输出不计费。

      模型名称

      地域

      输入单价(每百万Token)

      text-embedding-v4

      中国内地

      0.6

      中国(香港)与海外

      0.6168

      文本排序模型

      使用Rerank模型,进行相关性排序。按输入Token计费,输出不计费。

      模型名称

      地域

      输入单价(每百万Token)

      qwen3-rerank

      中国内地

      0.6

      中国(香港)与海外

      0.6

附录: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(可选)

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