4.5 KiB
		
	
	
	
	
	
			
		
		
	
	
			4.5 KiB
		
	
	
	
	
	
Memory Bank 设计与实现文档
概述
Memory Bank 是 稷下学宫AI辩论系统 的核心组件之一,旨在为每个AI智能体(八仙)提供持久化的记忆能力。通过集成不同的后端实现(如 Google Vertex AI Memory Bank 和 Cloudflare AutoRAG),系统能够灵活地存储、检索和利用智能体在辩论过程中积累的知识和经验。
架构设计
核心抽象
系统通过 MemoryBankProtocol 定义了记忆银行的通用接口,确保了不同后端实现的可替换性。
@runtime_checkable
class MemoryBankProtocol(Protocol):
    async def create_memory_bank(self, agent_name: str, display_name: Optional[str] = None) -> str: ...
    async def add_memory(
        self,
        agent_name: str,
        content: str,
        memory_type: str = "conversation",
        debate_topic: str = "",
        metadata: Optional[Dict[str, Any]] = None,
    ) -> str: ...
    async def search_memories(
        self,
        agent_name: str,
        query: str,
        memory_type: Optional[str] = None,
        limit: int = 10,
    ) -> List[Dict[str, Any]]: ...
    async def get_agent_context(self, agent_name: str, debate_topic: str) -> str: ...
    async def save_debate_session(
        self,
        debate_topic: str,
        participants: List[str],
        conversation_history: List[Dict[str, str]],
        outcomes: Optional[Dict[str, Any]] = None,
    ) -> None: ...
工厂模式
通过 get_memory_backend 工厂函数,系统可以根据配置动态选择合适的记忆后端实现。
def get_memory_backend(prefer: Optional[str] = None) -> MemoryBankProtocol:
    # 根据环境变量 JIXIA_MEMORY_BACKEND 选择后端
    # 支持 "vertex" 和 "cloudflare"
    ...
后端实现
Vertex AI Memory Bank
基于 Google Vertex AI 的 Memory Bank 服务实现。
特点:
- 与 Google Cloud 生态系统深度集成
- 提供企业级的安全性和可靠性
- 支持复杂的元数据过滤和查询
配置:
- GOOGLE_API_KEY: Google API 密钥
- GOOGLE_CLOUD_PROJECT_ID: Google Cloud 项目ID
- GOOGLE_CLOUD_LOCATION: 部署区域 (默认 us-central1)
Cloudflare AutoRAG
基于 Cloudflare Vectorize 和 Workers AI 实现的向量检索增强生成方案。
特点:
- 全球分布的边缘计算网络
- 成本效益高,适合中小型项目
- 易于部署和扩展
配置:
- CLOUDFLARE_ACCOUNT_ID: Cloudflare 账户ID
- CLOUDFLARE_API_TOKEN: 具有 Vectorize 和 Workers AI 权限的 API 令牌
使用指南
初始化记忆银行
from src.jixia.memory.factory import get_memory_backend
# 根据环境变量自动选择后端
memory_bank = get_memory_backend()
# 或者显式指定后端
memory_bank = get_memory_backend(prefer="cloudflare")
为智能体创建记忆空间
# 为吕洞宾创建记忆银行/空间
await memory_bank.create_memory_bank("lvdongbin")
添加记忆
await memory_bank.add_memory(
    agent_name="lvdongbin",
    content="倾向于使用DCF模型评估科技股的内在价值",
    memory_type="preference",
    debate_topic="TSLA投资分析"
)
搜索记忆
memories = await memory_bank.search_memories(
    agent_name="lvdongbin",
    query="TSLA",
    memory_type="preference"
)
获取上下文
context = await memory_bank.get_agent_context("lvdongbin", "TSLA投资分析")
最佳实践
- 
合理分类记忆类型: - conversation: 记录对话历史,用于上下文理解和连贯性。
- preference: 存储智能体的偏好和倾向,指导决策过程。
- knowledge: 积累专业知识和数据,提升分析深度。
- strategy: 总结辩论策略和战术,优化表现。
 
- 
定期维护记忆: - 实施记忆的定期清理和归档策略,避免信息过载。
- 通过 save_debate_session方法系统性地保存重要辩论会话。
 
- 
优化搜索查询: - 使用具体、明确的查询词以提高搜索相关性。
- 结合 memory_type过滤器缩小搜索范围。
 
- 
错误处理: - 在生产环境中,务必对所有异步操作进行适当的错误处理和重试机制。
 
未来扩展
- 混合后端支持: 允许同时使用多个后端,根据数据类型或访问模式进行路由。
- 记忆压缩与摘要: 自动对长篇记忆进行摘要,提高检索效率。
- 情感分析: 为记忆添加情感标签,丰富检索维度。
此文档旨在为开发者提供 Memory Bank 模块的全面技术参考