为大型语言模型(LLM)添加持久化记忆一直是构建智能交互系统的关键挑战。虽然大模型可以通过上下文窗口实现短期记忆,但受限于长度,一旦开启新会话或刷新页面,所有历史信息便会丢失。因此,一个可靠的长效记忆系统至关重要。
近期,在客户需求的驱动下,我们成功将基于MemOS理念的记忆系统与实时人脸识别技术集成,打造了一个能够“认出用户”并“记住对话”的数字人交互系统。
核心设计:解决两大交互痛点
在构建数字人应用时,我们聚焦于解决两个核心痛点:
- 身份识别:传统系统依赖账号密码登录,无法模拟真人“看脸识人”的自然交互。
- 记忆缺失:LLM的上下文记忆是临时的,缺乏跨会话的持久化个人记忆。
我们的解决方案是:通过摄像头实时人脸识别确认用户身份,并即刻调用MemOS持久化记忆系统加载该用户的专属历史,从而实现“坐下即识别,开口即熟识”的拟真体验。
模块一:视觉感知与身份识别
前端通过HTML5的 navigator.mediaDevices.getUserMedia API调用摄像头,并使用Canvas捕获视频帧,通过WebSocket实时传输至后端。
后端采用 Python 作为主要技术栈,利用 InsightFace 这一工业级人脸分析库进行高精度处理。其流程包括:人脸检测 → 提取512维特征向量 → 与预先注册的向量库进行比对。系统基于 FastAPI 构建,确保了低延迟的双向通信。
功能逻辑如下:
- 实时检测与识别:从视频流中框出人脸并进行特征匹配,成功则返回用户ID与姓名。
- 陌生人注册:若比对失败,则触发注册流程,采集当前人脸特征并与新用户ID绑定。
- 活体检测:作为进阶安全措施,可集成活体检测算法,防止照片或视频攻击。
模块二:MemOS持久化记忆系统
记忆系统相当于数字人的“海马体”,负责将临时对话转化为长期、结构化的记忆。
核心组件与流程:
- 对话历史获取:提供Node.js API,支持按用户ID和数字人ID双重过滤,并包含分页与数量限制功能,避免加载冗余数据。
- 智能记忆提取:这是系统的核心。并非简单关键词匹配,而是通过调用 LLM(大型语言模型) 来分析对话记录,自动过滤寒暄与技术指令,并以第一人称视角提炼关键信息,最终输出结构化的JSON数据。
- 高效记忆管理:采用“数据库(持久层)+ 内存缓存(高速层)”的双层存储架构。提供记忆的格式化、查看、手动刷新与清除等管理功能。
记忆数据示例:
假设原始对话为:
用户:我喜欢喝咖啡。
AI:好的,我记住了。
用户:我们下周三见面。
AI:好的,约定下周三。
系统后台提取并结构化的记忆可能如下:
{
"user_id": "1001",
"fragments": [
"用户明确表示喜欢喝咖啡",
"双方约定在下周三见面讨论项目"
],
"last_updated": "2023-12-06T12:00:00Z"
}
在后续对话中,这些记忆片段会被注入到提示词(Prompt)中,作为LLM回复的背景知识。
关键机制:双阶段工作流与10轮刷新策略
为了平衡Token消耗、响应速度与记忆时效性,我们设计了独特的双阶段异步工作流:
独创的10轮计数器实现了全自动化管理:系统维护一个对话轮次计数器,在第1-9轮仅保存对话并使用旧记忆;在第10轮自动触发后台异步记忆刷新;之后循环此过程,实现了低成本、自动化的记忆维护。
完整集成工作流
当视觉识别与记忆系统结合后,完整的用户交互旅程如下:
- 视觉识别:系统检测到用户“老张”(UserID: 888)进入。
- 记忆唤醒:后台立即检索UserID 888的记忆库,发现其中记录着“用户老张喜欢钓鱼”、“上次提到孙子满月”等信息。
- 拟真对话:注入记忆后的Prompt使AI能够主动发起个性化对话:“老张,好久不见!上次你说要去钓鱼,收获怎么样?孙子满月酒办得还顺利吗?”
技术栈与数据存储设计
核心后端API接口:
POST /api/auth/login_face:上传人脸帧,完成无感登录,返回Token和UserID。
GET /api/history/fetch:获取分页的对话历史记录。
POST /api/memory/extract:手动触发一次记忆提取分析。
GET /api/memory/status:查看指定用户的当前记忆缓存状态。
数据库设计:
user_faces表:存储用户的人脸特征向量(512维BLOB)、用户ID。
user_memories表:存储记忆片段(JSON)、最后刷新时间、Token消耗统计。
chat_logs表:存储完整的原始对话日志,为后续的记忆提取提供数据源。
总结
本项目通过集成实时人脸识别解决了身份自然确认的问题,通过实现MemOS持久化记忆系统攻克了LLM的“失忆”难题。
- 对最终用户:提供了无缝、被牢记、高度个性化的拟人化交互体验。
- 对开发者与客户:实现了自动化(10轮自动刷新)、低成本(提取与使用分离)和易集成(标准REST API与JSON格式)三大核心价值。
这不仅仅是构建了一个聊天机器人,更是向创造一个能够识别、理解并记住用户的数字生命体迈出的坚实一步。
|