从指定记忆库中检索相关的记忆事件或画像信息,可依据用户提问进行语义相似度检索,并根据查询条件划定查询范围。
URL | /api/memory/search | 统一资源标识符 |
|---|---|---|
请求方法 | POST | 客户端对记忆库服务器请求的操作类型 |
请求头 | Content-Type: application/json | 请求消息类型 |
Authorization: HMAC-SHA256 *** | 基于AK/SK生成的签名信息 |
参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
collection_name | String | 否 | 要检索的记忆库名称。 |
project_name | String | 否 | 记忆库所属项目。 |
resource_id | String | 否 | 记忆库唯一的资源 id。可选择直接传 resource_id,或同时传 collection_name 和 project_name 作为记忆库的唯一标识。 |
query | String | 否 | 用户的检索查询语句(最大长度 4000 字符)
|
filter | Object | 是 | 检索过滤条件和返回设置。 |
| String or Array of String | 否 | 用户 ID,支持单个 ID 或 ID 列表。 |
| String or Array of String | 否 | 助手 ID,支持单个 ID 或 ID 列表。 |
| String or Array of String | 否 | 用于过滤的画像主键表达式。可以是单个或列表,比如画像主键名为kb_id,想查询kb_id为1的数据,则 |
| Integer | 否 | 检索记忆的起始时间,毫秒级时间戳。 |
| Integer | 否 | 检索记忆的终止时间,毫秒级时间戳。 |
| String or Array of String | 是 | 要检索的记忆类型。可以是具体的事件类型 (EventType) 或画像类型 (ProfileType) 名称,或它们的列表。 |
| String or Array of String | 否 | 用于过滤的群组ID。可以是单个ID或ID列表。 |
| String or Array of String | 否 | 用于过滤的session ID。可以是单个ID或ID列表 |
limit | Integer | 否 | 返回的检索结果条数,默认为10,取值范围[1, 5000]。 |
说明:
字段 | 类型 | 描述 |
|---|---|---|
code | Integer | 状态码,0 表示成功,其他表示错误。 |
message | String | 返回信息。 |
data | Object | 返回的详细检索结果。 |
| String | 被检索的记忆库名称。 |
| Integer | 返回的检索结果数量。 |
| Array of Object | 检索结果列表。 |
| String | 记忆条目(事件或画像实例)的唯一ID。 |
| Float | 与查询的相关性得分。 |
| String | 记忆条目的类型(EventType 或 ProfileType)名称。 |
| Array of String | 关联的用户ID列表。 |
| Array of String | 关联的助手ID列表。 |
| String | 关联的会话ID。 |
| String | 关联的群组ID。 |
| Integer | 记忆发生或最后更新的时间戳(毫秒)。 |
| String | 记忆条目的状态(预留字段)。 |
| String | 记忆条目的标签(预留字段)。 |
| Object | 额外的详细信息。其结构取决于memory_type。
对于画像,则只包含画像的属性。 例如:
|
| Integer | 本次检索消耗的token数量。 |
request_id | String | 标识每个请求的唯一ID。 |
import os import time from vikingdb.memory import VikingMem from vikingdb import APIKey API_KEY = os.getenv("MEMORY_API_KEY", "your_key") client = VikingMem( host = "api-knowledgebase.mlp.cn-beijing.volces.com", region = "cn-beijing", auth= APIKey(api_key=API_KEY), scheme="http", ) # 获取记忆库集合 collection = client.get_collection( collection_name="my_first_memory_collection", # 用您的记忆库名称替代 project_name="default" ) query = "你猜猜那个比赛最后谁赢了" filter = { "user_id": "user1", "memory_type": ["sys_event_v1", "sys_profile_v1"] } # 获取会话信息 result = collection.search_memory( query=query, filter=filter, limit=10 ) print("\n=== 格式化结果 ===") print(json.dumps(result, indent=2, ensure_ascii=False))