liurenchaxin/docs/memory_bank_design.md

4.5 KiB
Raw Permalink Blame History

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投资分析")

最佳实践

  1. 合理分类记忆类型:

    • conversation: 记录对话历史,用于上下文理解和连贯性。
    • preference: 存储智能体的偏好和倾向,指导决策过程。
    • knowledge: 积累专业知识和数据,提升分析深度。
    • strategy: 总结辩论策略和战术,优化表现。
  2. 定期维护记忆:

    • 实施记忆的定期清理和归档策略,避免信息过载。
    • 通过 save_debate_session 方法系统性地保存重要辩论会话。
  3. 优化搜索查询:

    • 使用具体、明确的查询词以提高搜索相关性。
    • 结合 memory_type 过滤器缩小搜索范围。
  4. 错误处理:

    • 在生产环境中,务必对所有异步操作进行适当的错误处理和重试机制。

未来扩展

  1. 混合后端支持: 允许同时使用多个后端,根据数据类型或访问模式进行路由。
  2. 记忆压缩与摘要: 自动对长篇记忆进行摘要,提高检索效率。
  3. 情感分析: 为记忆添加情感标签,丰富检索维度。

此文档旨在为开发者提供 Memory Bank 模块的全面技术参考