- 文档首页
实时音视频
AI 音视频互动方案
开发指南
接入记忆库(长期记忆)
接入记忆库(长期记忆)
将历史对话、用户画像、行为事件等关键信息存储在火山 Viking 记忆库,让 AI 具备跨会话的长期记忆能力。当用户提问时,系统会从记忆库中检索相关信息,并将 用户问题 + 过渡语(若配置) + 被采纳的记忆 拼接后送给 LLM 生成,从而生成更个性化、更精准的回复。 若需 AI 回溯并参考最近 N 轮历史对话记录来回复(即短期记忆),可配置上下文。具体操作,请参见上下文管理。
Replay
Play
00:00
/
00:00
Live
Fullscreen
Cssfullscreen
1x
记忆库为付费资源,会根据您的实际使用量进行独立计费。详细计费规则和价格,请参见记忆库计费。 工作原理
接入并启用记忆库后,每一轮对话的处理流程如下:
- 记忆检索:系统根据 StartVoiceChat 接口中 MemoryConfig.ProviderParams.filter 中的规则,从记忆库中检索与当前问题相关的历史片段。
- 记忆筛选:计算召回片段的置信度,仅采纳 ≥ Score 阈值的内容。
- 上下文构建:系统将 用户问题 + 过渡语(若配置) + 被采纳的记忆 拼接后送往 LLM 生成回复。
如果你的场景需要多人共享同一个 AI 设备或服务,可结合声纹识别使用长期记忆。字幕回调中的 voiceprintId 和 voiceprintName 可用于业务侧写入记忆时区分说话人;开启声纹关联长期记忆召回后,系统会在每轮检索前读取当前声纹识别结果,并优先按识别出的说话人身份召回对应长期记忆,减少业务侧手动维护用户过滤条件的成本。 记忆库需要在 default 项目下,暂不支持在个人项目下。
实现步骤
-
- 授予 RTC 访问记忆库的权限:在访问控制(IAM)控制台-角色管理,搜索并找到 VoiceChatRoleForRTC,为其添加 MLPlatformVikingDBFullAccess 和 VikingdbFullAccess 权限。
不同数据类型,对应的 messages 列表中的数据结构如下:
对话记录
结构化数据(如用户行为日志)
非结构化文档或图文信息
- 建议通过服务端获取,并只存储完整句子(paragraph: true)。
- 将解析出的 text 按照角色(userId 对应是真人还是 AI )组织成 messages 格式。
{"role": "user", "content": "我想学习如何制作正宗的意大利面。"},
{"role": "assistant", "content": "没问题!制作意面首先要煮沸一锅水并加入适量的盐。"}
按 schema 说明+字段数据 格式写入用户行为、操作日志等结构化数据。
// 存入 messages 字段的内容示例,其中 <YOUR_USER_ID> 需替换为实际的用户 ID
"content": "[schema说明。bhv_time:行为时间/bhv_type:行为类型/stay_time:停留时长]bhv_time:2025-09-21 10:00:00/bhv_type:open/user_id:<YOUR_USER_ID>/stay_time:100s"
将文本和图片组织成内容列表。
{ "type": "image_url", "image_url": { "url": "https://example.com/sandwich.jpeg" } },
{ "type": "text", "text": "我刚刚吃了一个这样的三明治,味道不错。" }
调用 StartVoiceChat 接口时,在 Config.MemoryConfig 中开启记忆能力。
"Enable": true, // 必填:设置为 true
"EnableVoicePrintMemoryRecall": true, // 可选:开启声纹关联长期记忆召回,需同时启用 VoicePrint.Mode=2
"Provider": "volc", // 必填:固定值
"collection_name": "customer_service_memory", // 必填:步骤 1 创建的记忆库名称
"user_id": ["<YOUR_USER_ID>"], // user_id 和 assistant_id 至少填一个
// "assistant_id": ["assistant_123"],
"memory_type": ["order_event"] // 步骤 1 在 Viking 的事件规则定义
"transition_words": "根据您的历史记录:" // 可选:拼接在记忆前的引导语
"Score": 0.7 // 置信度阈值:低于该分数的记忆将被丢弃
多人共享设备场景下,不同说话人的长期记忆需要彼此隔离。你需要先在记忆写入阶段完成说话人归因,再在召回阶段开启 MemoryConfig.EnableVoicePrintMemoryRecall,让系统根据当前声纹识别结果召回对应说话人的长期记忆。
实现流程:
- 注册声纹并约定身份标识:调用 RegisterVoicePrint 预注册声纹,并为每个声纹设置 AudioName,例如 user_father、user_child。后续写入记忆库时,建议使用与 AudioName 一致的用户身份标识。
- 调用 StartVoiceChat 时开启声纹识别并配置长期记忆:
- 将 AgentConfig.VoicePrint.Mode 设置为 2(声纹识别),并通过 IdList 传入待识别的声纹 ID。
- 在 Config.MemoryConfig 中将 Enable 设置为 true,并配置记忆库名称、召回条数、置信度阈值等参数。
- 将 Config.MemoryConfig.EnableVoicePrintMemoryRecall 设置为 true。开启后,系统会在每轮长期记忆检索前读取当前声纹识别结果,并优先召回当前说话人的长期记忆。
"IdList": ["vp_user_father", "vp_user_child"],
"EnableVoicePrintMemoryRecall": true,
"collection_name": "family_memory",
"memory_type": ["user_profile"]
"transition_words": "根据用户的长期记忆:"
- 按声纹身份写入记忆:通过字幕回调获取 voiceprintId 和 voiceprintName,将当前用户的对话内容、偏好或画像写入记忆库,并使用稳定一致的用户身份标识完成归因。字幕获取方式,请参见实时字幕(对话记录)。
- 引导 LLM 使用记忆:在 SystemMessages 中说明 AI 应结合当前说话人的长期记忆生成回复,避免将不同用户的偏好混用。
最近更新时间:2026.09.08 19:56:01