feat:实现具有向量和元数据索引的统一内存存储系统
- 添加了 UnifiedMemoryStorage 类,用于管理带向量嵌入的内存块。 - 集成了 FAISS,以实现高效的向量存储和搜索。 - 实现了内存缓存、关键字、类型和用户索引。 - 增加了内存遗忘和自动保存存储数据的支持。 - 包含用于存储、搜索和遗忘记忆的方法。 - 引入了存储行为和性能的配置选项。 - 实现了从磁盘加载和保存内存及向量数据。
This commit is contained in:
@@ -41,21 +41,22 @@ async def _calculate_interest(message: MessageRecv) -> Tuple[float, bool]:
|
||||
|
||||
if global_config.memory.enable_memory:
|
||||
with Timer("记忆激活"):
|
||||
# 使用新的增强记忆系统计算兴趣度
|
||||
# 使用新的统一记忆系统计算兴趣度
|
||||
try:
|
||||
from src.chat.memory_system.enhanced_memory_integration import recall_memories
|
||||
from src.chat.memory_system import get_memory_system
|
||||
|
||||
# 检索相关记忆来估算兴趣度
|
||||
enhanced_memories = await recall_memories(
|
||||
query=message.processed_plain_text,
|
||||
memory_system = get_memory_system()
|
||||
enhanced_memories = await memory_system.retrieve_relevant_memories(
|
||||
query_text=message.processed_plain_text,
|
||||
user_id=str(message.user_info.user_id),
|
||||
chat_id=message.chat_id
|
||||
scope_id=message.chat_id,
|
||||
limit=5
|
||||
)
|
||||
|
||||
# 基于检索结果计算兴趣度
|
||||
if enhanced_memories:
|
||||
# 有相关记忆,兴趣度基于相似度计算
|
||||
max_score = max(score for _, score in enhanced_memories)
|
||||
max_score = max(getattr(memory, 'relevance_score', 0.5) for memory in enhanced_memories)
|
||||
interested_rate = min(max_score, 1.0) # 限制在0-1之间
|
||||
else:
|
||||
# 没有相关记忆,给予基础兴趣度
|
||||
|
||||
@@ -172,20 +172,22 @@ class PromptBuilder:
|
||||
|
||||
@staticmethod
|
||||
async def build_memory_block(text: str) -> str:
|
||||
# 使用新的增强记忆系统检索记忆
|
||||
# 使用新的统一记忆系统检索记忆
|
||||
try:
|
||||
from src.chat.memory_system.enhanced_memory_integration import recall_memories
|
||||
from src.chat.memory_system import get_memory_system
|
||||
|
||||
enhanced_memories = await recall_memories(
|
||||
query=text,
|
||||
memory_system = get_memory_system()
|
||||
enhanced_memories = await memory_system.retrieve_relevant_memories(
|
||||
query_text=text,
|
||||
user_id="system", # 系统查询
|
||||
chat_id="system"
|
||||
scope_id="system",
|
||||
limit=5
|
||||
)
|
||||
|
||||
related_memory_info = ""
|
||||
if enhanced_memories and enhanced_memories.get("has_memories"):
|
||||
for memory in enhanced_memories.get("memories", []):
|
||||
related_memory_info += memory.get("content", "") + " "
|
||||
if enhanced_memories:
|
||||
for memory_chunk in enhanced_memories:
|
||||
related_memory_info += memory_chunk.display or memory_chunk.text_content or ""
|
||||
return await global_prompt_manager.format_prompt("memory_prompt", memory_info=related_memory_info.strip())
|
||||
return ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user