EverMemOS 对话提取关键信息触发条件分析
EverMemOS 系统中,对话提取关键信息的触发条件主要分为三大类:强制触发条件、语义触发条件和流程触发条件。以下是详细分析:
一、强制触发条件
当对话数据达到系统设定的硬限制时,会强制触发信息提取:
1. Token 数量限制
- 默认值:8192 tokens
- 触发逻辑:当历史消息与新消息的总 token 数超过此限制时
- 代码位置:
conv_memcell_extractor.py:409-411
2. 消息数量限制
- 默认值:50 条消息
- 触发逻辑:当历史消息与新消息的总数超过此限制时
- 代码位置:
conv_memcell_extractor.py:409-411
二、语义触发条件
系统使用 LLM 进行智能边界检测,基于对话内容、主题变化和时间间隔等因素判断是否触发提取:
1. 对话主题变化
- 触发逻辑:当 LLM 检测到对话主题发生明显变化时
- 实现方式:通过
CONV_BOUNDARY_DETECTION_PROMPT提示词引导 LLM 分析 - 代码位置:
conv_memcell_extractor.py:276-346
2. 时间间隔过长
- 触发逻辑:当新消息与历史消息之间的时间间隔过长时
- 时间间隔计算:系统会计算历史消息最后一条与新消息第一条之间的时间差
- 代码位置:
conv_memcell_extractor.py:214-274
3. 对话自然结束
- 触发逻辑:当 LLM 检测到对话已经自然结束时(如双方达成共识、话题讨论完毕等)
- 实现方式:通过分析对话内容的语义完整性判断
三、流程触发条件
当边界检测成功触发后,系统会进入完整的信息提取流程:
1. MemCell 创建
- 触发条件:边界检测确定对话片段边界后
- 内容:创建包含原始对话数据、时间戳、参与者等基本信息的 MemCell
- 代码位置:
conv_memcell_extractor.py:491-500
2. Episode 提取
- 触发条件:MemCell 创建成功后
- 内容:提取对话片段的主题、摘要和完整内容
- 代码位置:
mem_memorize.py:454
3. 聚类和后续提取
- 触发条件:Episode 提取完成后
- 内容:
- 触发 MemCell 聚类
- 提取 Foresight(前瞻性信息)
- 提取 EventLog(事件日志)
- 代码位置:
mem_memorize.py:457-463
四、触发流程详解
请求预处理:读取历史消息和新消息
preprocess_conv_request函数- 代码位置:
mem_memorize.py:845-893
边界检测:判断是否触发信息提取
ConvMemCellExtractor.extract_memcell方法- 代码位置:
conv_memcell_extractor.py:348-509
MemCell 处理:创建和处理 MemCell
process_memory_extraction函数- 代码位置:
mem_memorize.py:436-464
信息提取:提取各类记忆信息
- 提取 Episode、Foresight、EventLog
- 代码位置:
mem_memorize.py:544-640
五、关键技术点
- 智能边界检测:结合硬限制和 LLM 语义分析,实现精准的对话边界识别
- 多维度判断:考虑 token 数、消息数、时间间隔、语义内容等多个维度
- 分层提取:先检测边界,再提取 Episode,最后提取更细粒度的信息
- 自适应处理:对于特殊情况(如单条长消息)有自适应处理逻辑
六、配置参数
| 参数 | 默认值 | 说明 | 代码位置 |
|---|---|---|---|
hard_token_limit | 8192 | 强制触发的 token 数限制 | conv_memcell_extractor.py:70 |
hard_message_limit | 50 | 强制触发的消息数限制 | conv_memcell_extractor.py:71 |
MEMORY_LANGUAGE | ‘en’ | 语言支持(‘zh’ 或 ‘en’) | conv_memcell_extractor.py:66 |
七、总结
EverMemOS 系统通过多层次的触发机制,确保对话中的关键信息能够被及时、准确地提取和存储。系统既考虑了数据量的硬限制,又结合了 LLM 的语义理解能力,实现了智能化的对话边界检测和信息提取。
这种设计使得系统能够:
- 在对话过长时及时处理,避免内存溢出
- 在对话主题变化时准确分割,保证信息的语义完整性
- 在适当的时机提取关键信息,提高系统的响应速度和存储效率
通过这些触发条件的协同工作,EverMemOS 能够有效地管理和提取对话中的关键信息,为后续的记忆检索和利用提供了坚实的基础。