feat(memory): 引入基于向量的瞬时记忆系统

引入了一个新的瞬时记忆系统,该系统将短期对话片段(消息集合)存储在专门的向量数据库中,以提供更即时、更相关的上下文。

该系统通过以下组件实现:
- **MessageCollection**: 用于封装一组相关消息的数据结构。
- **MessageCollectionStorage**: 负责将消息集合向量化并存入专用的ChromaDB集合,同时管理集合的生命周期(基于数量和时间清理)。
- **MessageCollectionProcessor**: 缓冲每个聊天的消息,当达到阈值时,将它们组合成一个`MessageCollection`并交由Storage处理。
- **集成**: `MemoryManager`和`MemorySystem`已更新,将瞬时记忆无缝融合到现有的记忆检索流程中,优先展示来自当前聊天的上下文。

此外,还进行了以下调整:
- 移除`orjson.dumps`中的`ensure_ascii=False`参数,以遵循`orjson`的默认行为,该行为始终返回UTF-8字节串,从而简化了编码处理。
- 在配置文件中增加了瞬时记忆最大集合数和保留时间的选项。
This commit is contained in:
minecraft1024a
2025-10-25 20:07:58 +08:00
parent 3877772c7c
commit 917754b4e0
8 changed files with 431 additions and 6 deletions

View File

@@ -315,6 +315,10 @@ class MemoryConfig(ValidatedConfigBase):
enable_vector_memory_storage: bool = Field(default=True, description="启用Vector DB记忆存储")
enable_llm_instant_memory: bool = Field(default=True, description="启用基于LLM的瞬时记忆")
enable_vector_instant_memory: bool = Field(default=True, description="启用基于向量的瞬时记忆")
instant_memory_max_collections: int = Field(default=100, ge=1, description="瞬时记忆最大集合数")
instant_memory_retention_hours: int = Field(
default=0, ge=0, description="瞬时记忆保留时间小时0表示不基于时间清理"
)
# Vector DB配置
vector_db_similarity_threshold: float = Field(