使用记忆管理

更新时间:
复制 MD 格式

创建记忆管理应用后,AI 应用还不能直接调用记忆能力:连接地址、访问凭证和网络放行三者缺一不可。打通连接后,即可通过 API 写入、检索和管理记忆,并按业务需要调整服务参数与记忆提取策略。

适用范围

开始配置前,先确认以下前置条件与约束:

  • 已创建记忆管理应用。

  • 应用白名单与集群白名单相互独立,需单独配置。配置白名单后,只有白名单内的 IP 地址或安全组才能访问记忆管理服务。

  • 客户端所处的网络环境(同一 VPC 内的 ECS 实例、其他 VPC 的 ECS 实例、本地服务器、个人电脑或其他云服务器)决定连接地址的选择与白名单的放行方式。

  • 应用的引擎类型决定可用功能范围,具体如下表。

    功能

    mem0

    memOS

    自定义提取策略

    支持

    不支持

    在控制台查看记忆数据

    支持

    支持

获取连接地址与访问凭证

连接地址决定客户端从哪个网络访问服务,访问凭证用于客户端连接时的身份验证,两者均在应用详情页获取。

获取连接地址

连接地址分私网地址和公网地址两种,按客户端所处的网络环境选择:

客户端环境

使用的连接地址

与应用位于同一 VPC 内的 ECS 实例

私网地址(推荐)

与应用不在同一 VPC 内的 ECS 实例、本地服务器、个人电脑或其他云服务器

公网地址

  1. 登录 PolarDB 控制台,在左侧导航栏单击PolarDB Mem0

  2. 在应用列表页面,单击目标应用的应用ID/名称,进入应用详情页。

  3. 基本信息页签的连接管理区域查看私网地址

  4. 如需公网地址,单击申请按钮进行申请。

说明

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

获取访问凭证

  1. 在应用详情页,单击配置页签。

  2. 从参数列表找到 secret.access.apikey 参数,其对应的参数值即为访问凭证。

  3. 单击参数值右侧的显示图标,查看完整内容。

配置白名单

按客户端所处的网络环境放行对应的 IP 地址或安全组,客户端才能访问记忆管理服务。

  1. 在应用详情页,单击白名单页签。

  2. 根据需要选择新增IP白名单分组选择安全组或编辑已有白名单分组。

  3. 填写需要放行的 IP 地址或选择安全组:

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

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

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

说明

ECS 实例的 IP 地址可在 ECS 实例详情页面查看。

操作示例

添加记忆

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",
        "enable_thinking": false
    }'

预期返回:

{
    "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"
        }
    }'

预期返回:

{
    "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"
        }
    ]
}

附录:API参考

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

请求头

所有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",
            "enable_thinking": false
        }'
    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",
        "enable_thinking": false
    }
    
    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"
            }
        }'
    
    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(可选)

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

按需调优与日常管理

链路打通后,可按业务需要调整服务参数、定制记忆提取效果,并在控制台核对已存储的记忆数据。

参数配置

在应用详情页的配置页签,调整以下参数可优化服务性能和效果。

重要

修改部分参数会导致服务重启,建议在业务低峰期操作。

参数

说明

secret.access.apikey

访问凭证,用于客户端连接记忆管理服务时的身份验证。

memserver.POLAR_GRAPH_EMBEDDING_THRESHOLD

提取记忆时判断是否需要新建图节点的阈值。当提取的记忆需要向已有图中增加关系时,通过节点的向量相似度进行比较。相似度大于该阈值时采用现有节点,小于阈值时创建新图节点。默认值为 0.7

memserver.POLAR_GRAPH_MAXCONN

记忆服务的最大并发连接数。

自定义提取策略

说明

mem0记忆引擎支持配置

记忆管理内置 Prompt 模板(提取策略),用于指导大语言模型从对话中提取和总结记忆,可自定义这些 Prompt 以适应特定的业务场景。

策略类型

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

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

操作说明

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

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

在控制台查看记忆数据

打开应用详情页的记忆检索页签,可查看和检索已存储的记忆数据。mem0 和 memOS 两种引擎类型的应用均支持该功能。