agentic_huge_data_base / wiki
页面 Mem0 · 9.3 语音与多模态·DeepWiki 中文全文译文

9.3 · 语音与多模态(Voice and Multimodal)

长期记忆与上下文管理 · 聚焦本章的模块关系、源码依据与实现要点。

项目Mem0 章节9.3 状态全文译文 模块检索、召回与索引、记忆与上下文、模型调用与提供方适配、文档对象与元数据
源码线索
  • docs/cookbooks/companions/travel-assistant.mdx
  • docs/cookbooks/integrations/aws-bedrock.mdx
  • docs/integrations/agentops.mdx
  • docs/integrations/agno.mdx
  • docs/integrations/autogen.mdx
  • docs/integrations/aws-bedrock.mdx
  • docs/integrations/elevenlabs.mdx
  • docs/integrations/google-ai-adk.mdx
  • docs/integrations/keywords.mdx
  • docs/integrations/langchain.mdx
模块标签
  • 检索、召回与索引
  • 记忆与上下文
  • 模型调用与提供方适配
  • 文档对象与元数据
  • 智能体运行时

章节正文

语音与多模态

语音与多模态

相关源文件

本章引用的主要源码文件:

  • docs/cookbooks/companions/travel-assistant.mdx
  • docs/cookbooks/integrations/aws-bedrock.mdx
  • docs/integrations/agentops.mdx
  • docs/integrations/agno.mdx
  • docs/integrations/autogen.mdx
  • docs/integrations/aws-bedrock.mdx
  • docs/integrations/elevenlabs.mdx
  • docs/integrations/google-ai-adk.mdx
  • docs/integrations/keywords.mdx
  • docs/integrations/langchain.mdx
  • docs/integrations/langgraph.mdx
  • docs/integrations/livekit.mdx
  • docs/integrations/llama-index.mdx
  • docs/integrations/openai-agents-sdk.mdx
  • docs/integrations/pipecat.mdx
  • docs/open-source/features/custom-instructions.mdx
  • docs/open-source/features/metadata-filtering.mdx
  • docs/open-source/features/reranker-search.mdx
  • docs/open-source/node-quickstart.mdx

本文档记录了 Mem0 对语音代理集成和多模态记忆能力的支持。内容涵盖如何将 Mem0 与 LiveKit 和 PipeCat 等实时语音平台集成,以及如何存储和检索包含文本与图像的多模态记忆。

多模态记忆支持

Mem0 支持在记忆中存储多模态内容,允许你保存和检索包含文本和图像的对话。这对于处理视觉信息与自然语言相结合的 AI 应用尤为有用。

多模态消息格式

消息可以包含纯文本或结构化的多模态内容。与 Agno 等框架的集成使代理能够处理和存储这些丰富的交互。

标题:多模态实体关系

Mem0 · 多模态消息格式 · 图 1
Mem0 · 多模态消息格式 · 图 1

来源:docs/integrations/agno.mdx:104-121, docs/integrations/agno.mdx:173-180

使用 Agno 实现

Agno 集成演示了如何将本地图像转换为 base64 格式,并将其作为 image_url 数据存储在 Mem0 中。

import base64
from mem0 import MemoryClient

client = MemoryClient()

def store_multimodal_interaction(image_path, user_input, user_id):
    with open(image_path, "rb") as image_file:
        base64_image = base64.b64encode(image_file.read()).decode("utf-8")

    messages = [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": user_input},
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}
                }
            ]
        }
    ]
    client.add(messages, user_id=user_id)

来源:docs/integrations/agno.mdx:99-125

语音代理集成

Mem0 与实时语音平台集成,为语音代理提供对话记忆能力。这些集成使代理能够在语音交互中记住上下文。

标题:语音集成组件图

Mem0 · 语音代理集成 · 图 2
Mem0 · 语音代理集成 · 图 2

来源:docs/integrations/livekit.mdx:51-62, docs/integrations/pipecat.mdx:31-46, docs/integrations/elevenlabs.mdx:106-109

LiveKit 集成

LiveKit 使用异步代理模型。MemoryEnabledAgent 类扩展了标准的 LiveKit Agent,用于拦截用户轮次并将 Mem0 的检索增强生成(RAG)上下文注入其中。

标题:LiveKit 记忆逻辑流程

Mem0 · LiveKit 集成 · 图 3
Mem0 · LiveKit 集成 · 图 3

来源:docs/integrations/livekit.mdx:78-140

关键组件:

  • AsyncMemoryClient:用于实时语音流中的非阻塞 I/O 操作 docs/integrations/livekit.mdx:51-51
  • on_user_turn_completed:用于持久化用户消息和检索上下文的钩子 docs/integrations/livekit.mdx:101-139
Pipecat 集成

Pipecat 提供了一个专门的 Mem0MemoryService,作为语音管线中的中间件。它通常位于 UserContextAggregatorLLMService 之间。

管线配置

Mem0MemoryService 管理基于 user_idagent_idrun_id 的自动记忆检索。

from pipecat.services.mem0 import Mem0MemoryService

memory = Mem0MemoryService(
    api_key=os.getenv("MEM0_API_KEY"),
    user_id="unique_user_id",
    params={
        "search_limit": 10,
        "add_as_system_message": True,
        "position": 1
    }
)

来源:docs/integrations/pipecat.mdx:30-46

ElevenLabs 集成

ElevenLabs Conversational AI 允许将 Mem0 函数注册为 ClientTools。这使得语音代理能够通过函数调用自主决定何时存储或检索记忆。

记忆工具注册:

  • add_memories:注册为 addMemories 工具 docs/integrations/elevenlabs.mdx:122-129
  • retrieve_memories:注册为 retrieveMemories 工具 docs/integrations/elevenlabs.mdx:131-151
client_tools = ClientTools()
client_tools.register("addMemories", add_memories, is_async=True)
client_tools.register("retrieveMemories", retrieve_memories, is_async=True)

来源:docs/integrations/elevenlabs.mdx:174-177

技术数据流

记忆检索与注入

在多模态和语音场景中,记忆会被检索并格式化到系统提示或对话历史中,以提供上下文。

平台注入方法关键函数/类
Agno手动构建提示MemoryClient.search(...) docs/integrations/agno.mdx:129-130
LiveKitturn_ctx.add_messageAsyncMemoryClient.search(...) docs/integrations/livekit.mdx:116-134
Pipecat管线中间件Mem0MemoryService docs/integrations/pipecat.mdx:53-63
ElevenLabs函数工具输出retrieve_memories docs/integrations/elevenlabs.mdx:131-151
记忆持久化模式

对于语音代理,持久化通常在用户说完话或助手响应后执行,以确保捕获完整的上下文。

  1. 用户轮次持久化:LiveKit 在用户轮次完成时立即通过 mem0_client.add 捕获用户消息 docs/integrations/livekit.mdx:101-112
  2. 交互持久化:Agno 和 Pipecat 存储 userassistant 消息对,以保留提示与响应之间的关系 docs/integrations/agno.mdx:153-155, docs/integrations/pipecat.mdx:165-171

语音与多模态最佳实践

1. 延迟管理

在语音环境(LiveKit、ElevenLabs)中使用 AsyncMemoryClient,以防止记忆操作阻塞音频流处理 docs/integrations/livekit.mdx:51-51, docs/integrations/elevenlabs.mdx:47-47

2. 上下文过滤

在搜索时始终应用 filters={"user_id": user_id},以确保语音代理不会在不同用户之间泄漏记忆 docs/integrations/livekit.mdx:118-118, docs/integrations/agno.mdx:129-129

3. 元数据利用

在元数据中存储模态信息(例如 {"category": "movie_recommendations"}{"type": "preference"}),以支持过滤检索或分析 docs/open-source/node-quickstart.mdx:40-40, docs/integrations/agentops.mdx:97-97

4. 语义阈值

在语音交互中,由于转录可能不完美(语音转文字错误),应调整搜索配置,以确保即使存在轻微的口语变化也能找到相关记忆 docs/integrations/pipecat.mdx:40-40

来源:docs/integrations/agno.mdx:1-207, docs/integrations/livekit.mdx:1-184, docs/integrations/pipecat.mdx:1-213, docs/integrations/elevenlabs.mdx:1-215, docs/integrations/agentops.mdx:82-128, docs/open-source/node-quickstart.mdx:31-66