Loading...
Loading...
Loading...

介绍 mRAG:EverOS 如何检索真正重要的信息

介绍 mRAG:EverOS 如何检索真正重要的信息

这篇文章解释了什么是 mRAG、它为何存在,以及它对你和你的代理意味着什么。

EverMind研究人员

大约需要 3 分钟阅读

mRAG,多模态,多模态检索,RAG
mRAG

记忆系统存在检索问题。它们中的大多数只能找到那些听起来与查询相关的内容。EverOS mRAG 能找到真正相关的内容——通过深入一层,达到任何标准搜索都无法触及的地方。

这篇文章解释了什么是 mRAG、它为何存在,以及它对你和你的智能体意味着什么。

大多数记忆检索工作的方式有什么问题

当你向记忆系统提问时,标准做法是把你的查询转换成向量,并找出与之最接近的已存摘要。快、简单,但对于复杂问题来说,往往是错的。

原因如下。你真正需要的内容,往往埋在记忆的内部,而不是摘要层面可见。一段事件摘要可能会写着“讨论了项目时间表和团队分配”。你需要的细节——“团队一致认为第二季度的截止日期不现实”——则位于再往下两层的地方,也就是从那段对话中提取出的原子事实。

标准检索永远到不了那里。它能找到正确的街区,却在你需要公寓门牌号时只给你街道地址。

mRAG 的设计就是为了解决这个问题。

mRAG 的不同之处

mRAG 代表多模态 RAG。其核心思想是分层搜索:先对事件摘要进行粗略扫描,找到正确的大致范围,然后在这些事件中展开到精确的原子事实——并用这些事实在最终结果中替换更粗粒度的摘要。

换句话说,mRAG 把检索视为一个两层问题。摘要是一张地图。原子事实是领土。你用地图导航,但返回的是领土本身。

结果是一组具体、可验证、细粒度的事实,能够精确回答你的查询——而不是一堆仅仅大致相关的模糊摘要。

它如何工作:五阶段流水线

阶段 1:跨事件摘要的粗检索

mRAG 首先会针对你的事件记忆并行运行两种搜索:

  • 嵌入搜索——使用余弦相似度,将你的查询的语义含义与事件摘要进行比较

  • BM25 关键词搜索——将查询中的实际词语与事件和摘要文本进行匹配

随后将这两组结果融合成一个统一的排序列表。默认情况下,EverOS 使用 RRF(倒数排名融合),它会结合两种搜索的排名位置,而不会过度偏向任一信号。在可训练模型能够学习最佳信号组合的环境中,也可使用 LR(逻辑回归)融合模式。

这一阶段会返回一个粗略的候选清单:那些大概率与你的查询相关的事件。

阶段 2:建立搜索结构

在展开到原子事实之前,mRAG 会初始化两个数据结构:

  • 一个最小堆,用于保存当前前 N 个结果。最小堆使得可以高效地在 O(1) 时间内判断一个新候选是否足以挤掉现有结果。

  • 一个覆盖所有粗检索结果的最大堆,按相关性得分排序,用于决定接下来展开哪些事件。

可以把它理解为:最小堆是你现在会给出的答案,而最大堆是仍在等待调查的事件队列。

阶段 3:展开——mRAG 的核心

这就是 mRAG 做出任何扁平检索系统都不会做的事情的地方。

流水线会批量处理事件队列。每次弹出一个事件时,它会检索与该事件相关的原子事实——也就是从那段对话或文档中提取出的具体、离散的陈述——并根据你的原始查询对它们进行打分。

评分公式为:

final_score = α × fact_score + (1 - α) × episode_score

其中:

  • fact_score 表示该原子事实与你的查询匹配得有多紧密(由余弦相似度和 BM25 的逻辑回归组合得出)

  • episode_score 表示父事件传播下来的相关性(由第 1 阶段中的余弦相似度和 BM25 的逻辑回归组合得出)

  • α 用来平衡应当给事实本身多少权重,以及给其来源事件多少权重(默认值:0.5)

关键设计是:当某个原子事实的得分足够高、进入前 N 结果时,它的父事件会从该集合中移除。精确的事实取代粗粒度的摘要。你得到的是具体细节,而不是它被存放的容器。

这个循环会一直持续,直到所有事件都处理完,或者连续若干轮都没有改进为止。后者是一个收敛检查,用于防止在结果已经稳定时继续浪费计算。

阶段 4:构建输出

一旦循环收敛,前 N 集合中就会包含多种项目:

  • 仍然相关、但其事实没有取得更高分的事件

  • 替代了其父事件的原子事实

二者都会在响应中展示。返回前会先按最终得分排序。

阶段 5:[可选] 重排序

对于精度至关重要的用例,mRAG 支持可选的最终重排序步骤。专门的重排序模型会重新为阶段 4 的输出打分,应用更深层的语义理解,从而生成最终排序列表。

这一步默认关闭,因为仅靠这五阶段流水线就已经能提供很强的精度。但对于高价值检索场景,如果额外延迟值得付出,它也可以启用。

返回什么内容

一次 mRAG 检索响应包含两部分:

事件——与查询提供上下文的相关记忆记录,其中没有原子事实能清晰地替代它们。

事实——从记忆中提取出的、能够直接回答你查询的精确原子陈述。每个事实都带有其主题标签、父记忆 ID 和最终相关性得分。

例如,像“我们就第二季度截止日期做了什么决定?”这样的查询,可能会返回:

{
  "episodes": [
    {
      "id": "ep_002",
      "summary": "Team discussed project timeline and resource constraints",
      "score": 0.72,
      "atomic_facts": [
        {
          "id": "fact_001",
          "atomic_fact": "The team agreed the Q2 deadline is unrealistic given current headcount",
          "topic_name": "Project timeline",
          "score": 0.91,
          "parent_episode_id": "ep_002"
        }
      ]
    }
  ],
  "profiles": [...],
  "raw_messages": [...],
  "agent_memory": {...},
  "query": {
    "text": "...",
    "method": "hybrid",
    "filters_applied": {...}
  }
}

mRAG 同时返回了事件和事实。 事件提供更广泛的知识,而事实提供更精确的信息。

适用于你的所有内容类型

mRAG 与数据类型无关。相同的流水线可跨对话、文档、电子邮件、会议记录、PDF、表格、演示文稿和图像进行检索——因为这些内容在摄取时都会被处理成相同的 Episodic Memory 和 AtomicFact 结构。

支持多模态解析的格式:

  • PDF(基于文本和扫描件)

  • 图像(.png、.jpg、.jpeg、.webp、.tiff、.bmp、.svg)

  • Word 文档(.docx、.doc)

  • 电子表格(.xlsx、.xls)

  • 演示文稿(.pptx、.ppt)

  • 电子邮件(.eml)

  • HTML(.html、.htm)

无需解析即可直接提取的格式:

  • 纯文本和 Markdown(.txt、.md)

  • 字幕和转录稿(.vtt)

  • 表格型纯文本(.csv、.tsv)

无论你的相关上下文是上周二的一段对话,还是六个月前上传的 PDF,mRAG 都会通过同一个端点,用同一个查询跨两者进行检索。

EverOS multimodel

如何使用

mRAG 可作为 EverOS 搜索端点上的一种检索方法。请在你的搜索请求中将 "method" 设为 "hybrid":

POST /api/v1/memories/search

{
  "query": "what did we decide about the Q2 deadline?",
  "method": "hybrid",
  "filters": { "user_id": "user_123" },
  "top_k": 10
}

响应将同时包含 episodes 数组和 facts 数组。对于已有集成,这一变化向后兼容:所有非 mRAG 方法都会返回一个空的 facts 字段,因此如果你不使用它,也不会有任何破坏。

何时使用 mRAG 而不是其他检索方法

EverOS 提供多种检索方法,每种都适用于不同场景:

keyword——快速、精确匹配的检索。适合你已经知道自己要找的具体术语时使用。

vector——基于向量相似度的纯语义嵌入检索。适合开放式、以意图驱动的查询,此时含义比字面词语更重要;也适合在术语不同但上下文相似时查找记忆。

agentic——使用 Memory Interleave 的迭代式多跳检索。适合复杂的、多步骤推理场景,即答案需要跨多个记忆串联证据。

hybrid——默认选项。层级式的事件到事实检索,在效率与效果之间取得平衡。最适合你需要精确性、答案是具体事实而非一般摘要,以及你的记忆包含多种内容类型的查询。尤其适合涉及具体决定、数字、承诺,或容易在更大范围摘要中丢失的细节的查询。

性能表现

内部基准测试显示,mRAG 的层级方法在事实层面而非事件层面进行检索,在需要具体细节的查询上始终优于扁平检索。性能最高的配置会使用源级上下文进行检索并返回事实,将事件扫描的广覆盖与原子事实匹配的高精度结合起来。

相比之下,基于块的扁平检索在具体细节查询上的准确率更低,而且每个结果返回的有用上下文要少得多。

所有控制 mRAG 行为的参数——包括每个阶段检索的候选数量、得分传播权重、收敛阈值、重排序器开关——都可以通过环境变量进行配置。它们在系统级进行调优,不向单个 API 请求暴露,这意味着你无需额外配置即可获得强劲的默认性能。

这对你的智能体意味着什么

对于需要推理具体过去事件的智能体,例如会议中的承诺、文档中记录的决定、研究中提取出的事实,mRAG 就是让这种推理变得可靠的检索层。

使用标准检索的智能体也许只能找到“曾经有一段关于项目截止日期的对话”。而使用 mRAG 的智能体会找到第二季度的截止日期被延后了六周,这一点在 3 月 12 日的同步会议中得到确认,因为两名工程师被重新分配了工作

当你的智能体要评估项目状态、起草跟进信息,或检查之前的承诺是否兑现时,这种差异就非常重要。

记忆只有在检索足够精确时才有用。这正是 mRAG 的目标。

mRAG 现已在 EverOS 上可用。开始使用:everos.evermind.ai
开源仓库:github.com/EverMind-AI/EverOS

记忆系统存在检索问题。它们中的大多数只能找到那些听起来与查询相关的内容。EverOS mRAG 能找到真正相关的内容——通过深入一层,达到任何标准搜索都无法触及的地方。

这篇文章解释了什么是 mRAG、它为何存在,以及它对你和你的智能体意味着什么。

大多数记忆检索工作的方式有什么问题

当你向记忆系统提问时,标准做法是把你的查询转换成向量,并找出与之最接近的已存摘要。快、简单,但对于复杂问题来说,往往是错的。

原因如下。你真正需要的内容,往往埋在记忆的内部,而不是摘要层面可见。一段事件摘要可能会写着“讨论了项目时间表和团队分配”。你需要的细节——“团队一致认为第二季度的截止日期不现实”——则位于再往下两层的地方,也就是从那段对话中提取出的原子事实。

标准检索永远到不了那里。它能找到正确的街区,却在你需要公寓门牌号时只给你街道地址。

mRAG 的设计就是为了解决这个问题。

mRAG 的不同之处

mRAG 代表多模态 RAG。其核心思想是分层搜索:先对事件摘要进行粗略扫描,找到正确的大致范围,然后在这些事件中展开到精确的原子事实——并用这些事实在最终结果中替换更粗粒度的摘要。

换句话说,mRAG 把检索视为一个两层问题。摘要是一张地图。原子事实是领土。你用地图导航,但返回的是领土本身。

结果是一组具体、可验证、细粒度的事实,能够精确回答你的查询——而不是一堆仅仅大致相关的模糊摘要。

它如何工作:五阶段流水线

阶段 1:跨事件摘要的粗检索

mRAG 首先会针对你的事件记忆并行运行两种搜索:

  • 嵌入搜索——使用余弦相似度,将你的查询的语义含义与事件摘要进行比较

  • BM25 关键词搜索——将查询中的实际词语与事件和摘要文本进行匹配

随后将这两组结果融合成一个统一的排序列表。默认情况下,EverOS 使用 RRF(倒数排名融合),它会结合两种搜索的排名位置,而不会过度偏向任一信号。在可训练模型能够学习最佳信号组合的环境中,也可使用 LR(逻辑回归)融合模式。

这一阶段会返回一个粗略的候选清单:那些大概率与你的查询相关的事件。

阶段 2:建立搜索结构

在展开到原子事实之前,mRAG 会初始化两个数据结构:

  • 一个最小堆,用于保存当前前 N 个结果。最小堆使得可以高效地在 O(1) 时间内判断一个新候选是否足以挤掉现有结果。

  • 一个覆盖所有粗检索结果的最大堆,按相关性得分排序,用于决定接下来展开哪些事件。

可以把它理解为:最小堆是你现在会给出的答案,而最大堆是仍在等待调查的事件队列。

阶段 3:展开——mRAG 的核心

这就是 mRAG 做出任何扁平检索系统都不会做的事情的地方。

流水线会批量处理事件队列。每次弹出一个事件时,它会检索与该事件相关的原子事实——也就是从那段对话或文档中提取出的具体、离散的陈述——并根据你的原始查询对它们进行打分。

评分公式为:

final_score = α × fact_score + (1 - α) × episode_score

其中:

  • fact_score 表示该原子事实与你的查询匹配得有多紧密(由余弦相似度和 BM25 的逻辑回归组合得出)

  • episode_score 表示父事件传播下来的相关性(由第 1 阶段中的余弦相似度和 BM25 的逻辑回归组合得出)

  • α 用来平衡应当给事实本身多少权重,以及给其来源事件多少权重(默认值:0.5)

关键设计是:当某个原子事实的得分足够高、进入前 N 结果时,它的父事件会从该集合中移除。精确的事实取代粗粒度的摘要。你得到的是具体细节,而不是它被存放的容器。

这个循环会一直持续,直到所有事件都处理完,或者连续若干轮都没有改进为止。后者是一个收敛检查,用于防止在结果已经稳定时继续浪费计算。

阶段 4:构建输出

一旦循环收敛,前 N 集合中就会包含多种项目:

  • 仍然相关、但其事实没有取得更高分的事件

  • 替代了其父事件的原子事实

二者都会在响应中展示。返回前会先按最终得分排序。

阶段 5:[可选] 重排序

对于精度至关重要的用例,mRAG 支持可选的最终重排序步骤。专门的重排序模型会重新为阶段 4 的输出打分,应用更深层的语义理解,从而生成最终排序列表。

这一步默认关闭,因为仅靠这五阶段流水线就已经能提供很强的精度。但对于高价值检索场景,如果额外延迟值得付出,它也可以启用。

返回什么内容

一次 mRAG 检索响应包含两部分:

事件——与查询提供上下文的相关记忆记录,其中没有原子事实能清晰地替代它们。

事实——从记忆中提取出的、能够直接回答你查询的精确原子陈述。每个事实都带有其主题标签、父记忆 ID 和最终相关性得分。

例如,像“我们就第二季度截止日期做了什么决定?”这样的查询,可能会返回:

{
  "episodes": [
    {
      "id": "ep_002",
      "summary": "Team discussed project timeline and resource constraints",
      "score": 0.72,
      "atomic_facts": [
        {
          "id": "fact_001",
          "atomic_fact": "The team agreed the Q2 deadline is unrealistic given current headcount",
          "topic_name": "Project timeline",
          "score": 0.91,
          "parent_episode_id": "ep_002"
        }
      ]
    }
  ],
  "profiles": [...],
  "raw_messages": [...],
  "agent_memory": {...},
  "query": {
    "text": "...",
    "method": "hybrid",
    "filters_applied": {...}
  }
}

mRAG 同时返回了事件和事实。 事件提供更广泛的知识,而事实提供更精确的信息。

适用于你的所有内容类型

mRAG 与数据类型无关。相同的流水线可跨对话、文档、电子邮件、会议记录、PDF、表格、演示文稿和图像进行检索——因为这些内容在摄取时都会被处理成相同的 Episodic Memory 和 AtomicFact 结构。

支持多模态解析的格式:

  • PDF(基于文本和扫描件)

  • 图像(.png、.jpg、.jpeg、.webp、.tiff、.bmp、.svg)

  • Word 文档(.docx、.doc)

  • 电子表格(.xlsx、.xls)

  • 演示文稿(.pptx、.ppt)

  • 电子邮件(.eml)

  • HTML(.html、.htm)

无需解析即可直接提取的格式:

  • 纯文本和 Markdown(.txt、.md)

  • 字幕和转录稿(.vtt)

  • 表格型纯文本(.csv、.tsv)

无论你的相关上下文是上周二的一段对话,还是六个月前上传的 PDF,mRAG 都会通过同一个端点,用同一个查询跨两者进行检索。

EverOS multimodel

如何使用

mRAG 可作为 EverOS 搜索端点上的一种检索方法。请在你的搜索请求中将 "method" 设为 "hybrid":

POST /api/v1/memories/search

{
  "query": "what did we decide about the Q2 deadline?",
  "method": "hybrid",
  "filters": { "user_id": "user_123" },
  "top_k": 10
}

响应将同时包含 episodes 数组和 facts 数组。对于已有集成,这一变化向后兼容:所有非 mRAG 方法都会返回一个空的 facts 字段,因此如果你不使用它,也不会有任何破坏。

何时使用 mRAG 而不是其他检索方法

EverOS 提供多种检索方法,每种都适用于不同场景:

keyword——快速、精确匹配的检索。适合你已经知道自己要找的具体术语时使用。

vector——基于向量相似度的纯语义嵌入检索。适合开放式、以意图驱动的查询,此时含义比字面词语更重要;也适合在术语不同但上下文相似时查找记忆。

agentic——使用 Memory Interleave 的迭代式多跳检索。适合复杂的、多步骤推理场景,即答案需要跨多个记忆串联证据。

hybrid——默认选项。层级式的事件到事实检索,在效率与效果之间取得平衡。最适合你需要精确性、答案是具体事实而非一般摘要,以及你的记忆包含多种内容类型的查询。尤其适合涉及具体决定、数字、承诺,或容易在更大范围摘要中丢失的细节的查询。

性能表现

内部基准测试显示,mRAG 的层级方法在事实层面而非事件层面进行检索,在需要具体细节的查询上始终优于扁平检索。性能最高的配置会使用源级上下文进行检索并返回事实,将事件扫描的广覆盖与原子事实匹配的高精度结合起来。

相比之下,基于块的扁平检索在具体细节查询上的准确率更低,而且每个结果返回的有用上下文要少得多。

所有控制 mRAG 行为的参数——包括每个阶段检索的候选数量、得分传播权重、收敛阈值、重排序器开关——都可以通过环境变量进行配置。它们在系统级进行调优,不向单个 API 请求暴露,这意味着你无需额外配置即可获得强劲的默认性能。

这对你的智能体意味着什么

对于需要推理具体过去事件的智能体,例如会议中的承诺、文档中记录的决定、研究中提取出的事实,mRAG 就是让这种推理变得可靠的检索层。

使用标准检索的智能体也许只能找到“曾经有一段关于项目截止日期的对话”。而使用 mRAG 的智能体会找到第二季度的截止日期被延后了六周,这一点在 3 月 12 日的同步会议中得到确认,因为两名工程师被重新分配了工作

当你的智能体要评估项目状态、起草跟进信息,或检查之前的承诺是否兑现时,这种差异就非常重要。

记忆只有在检索足够精确时才有用。这正是 mRAG 的目标。

mRAG 现已在 EverOS 上可用。开始使用:everos.evermind.ai
开源仓库:github.com/EverMind-AI/EverOS

记忆系统存在检索问题。它们中的大多数只能找到那些听起来与查询相关的内容。EverOS mRAG 能找到真正相关的内容——通过深入一层,达到任何标准搜索都无法触及的地方。

这篇文章解释了什么是 mRAG、它为何存在,以及它对你和你的智能体意味着什么。

大多数记忆检索工作的方式有什么问题

当你向记忆系统提问时,标准做法是把你的查询转换成向量,并找出与之最接近的已存摘要。快、简单,但对于复杂问题来说,往往是错的。

原因如下。你真正需要的内容,往往埋在记忆的内部,而不是摘要层面可见。一段事件摘要可能会写着“讨论了项目时间表和团队分配”。你需要的细节——“团队一致认为第二季度的截止日期不现实”——则位于再往下两层的地方,也就是从那段对话中提取出的原子事实。

标准检索永远到不了那里。它能找到正确的街区,却在你需要公寓门牌号时只给你街道地址。

mRAG 的设计就是为了解决这个问题。

mRAG 的不同之处

mRAG 代表多模态 RAG。其核心思想是分层搜索:先对事件摘要进行粗略扫描,找到正确的大致范围,然后在这些事件中展开到精确的原子事实——并用这些事实在最终结果中替换更粗粒度的摘要。

换句话说,mRAG 把检索视为一个两层问题。摘要是一张地图。原子事实是领土。你用地图导航,但返回的是领土本身。

结果是一组具体、可验证、细粒度的事实,能够精确回答你的查询——而不是一堆仅仅大致相关的模糊摘要。

它如何工作:五阶段流水线

阶段 1:跨事件摘要的粗检索

mRAG 首先会针对你的事件记忆并行运行两种搜索:

  • 嵌入搜索——使用余弦相似度,将你的查询的语义含义与事件摘要进行比较

  • BM25 关键词搜索——将查询中的实际词语与事件和摘要文本进行匹配

随后将这两组结果融合成一个统一的排序列表。默认情况下,EverOS 使用 RRF(倒数排名融合),它会结合两种搜索的排名位置,而不会过度偏向任一信号。在可训练模型能够学习最佳信号组合的环境中,也可使用 LR(逻辑回归)融合模式。

这一阶段会返回一个粗略的候选清单:那些大概率与你的查询相关的事件。

阶段 2:建立搜索结构

在展开到原子事实之前,mRAG 会初始化两个数据结构:

  • 一个最小堆,用于保存当前前 N 个结果。最小堆使得可以高效地在 O(1) 时间内判断一个新候选是否足以挤掉现有结果。

  • 一个覆盖所有粗检索结果的最大堆,按相关性得分排序,用于决定接下来展开哪些事件。

可以把它理解为:最小堆是你现在会给出的答案,而最大堆是仍在等待调查的事件队列。

阶段 3:展开——mRAG 的核心

这就是 mRAG 做出任何扁平检索系统都不会做的事情的地方。

流水线会批量处理事件队列。每次弹出一个事件时,它会检索与该事件相关的原子事实——也就是从那段对话或文档中提取出的具体、离散的陈述——并根据你的原始查询对它们进行打分。

评分公式为:

final_score = α × fact_score + (1 - α) × episode_score

其中:

  • fact_score 表示该原子事实与你的查询匹配得有多紧密(由余弦相似度和 BM25 的逻辑回归组合得出)

  • episode_score 表示父事件传播下来的相关性(由第 1 阶段中的余弦相似度和 BM25 的逻辑回归组合得出)

  • α 用来平衡应当给事实本身多少权重,以及给其来源事件多少权重(默认值:0.5)

关键设计是:当某个原子事实的得分足够高、进入前 N 结果时,它的父事件会从该集合中移除。精确的事实取代粗粒度的摘要。你得到的是具体细节,而不是它被存放的容器。

这个循环会一直持续,直到所有事件都处理完,或者连续若干轮都没有改进为止。后者是一个收敛检查,用于防止在结果已经稳定时继续浪费计算。

阶段 4:构建输出

一旦循环收敛,前 N 集合中就会包含多种项目:

  • 仍然相关、但其事实没有取得更高分的事件

  • 替代了其父事件的原子事实

二者都会在响应中展示。返回前会先按最终得分排序。

阶段 5:[可选] 重排序

对于精度至关重要的用例,mRAG 支持可选的最终重排序步骤。专门的重排序模型会重新为阶段 4 的输出打分,应用更深层的语义理解,从而生成最终排序列表。

这一步默认关闭,因为仅靠这五阶段流水线就已经能提供很强的精度。但对于高价值检索场景,如果额外延迟值得付出,它也可以启用。

返回什么内容

一次 mRAG 检索响应包含两部分:

事件——与查询提供上下文的相关记忆记录,其中没有原子事实能清晰地替代它们。

事实——从记忆中提取出的、能够直接回答你查询的精确原子陈述。每个事实都带有其主题标签、父记忆 ID 和最终相关性得分。

例如,像“我们就第二季度截止日期做了什么决定?”这样的查询,可能会返回:

{
  "episodes": [
    {
      "id": "ep_002",
      "summary": "Team discussed project timeline and resource constraints",
      "score": 0.72,
      "atomic_facts": [
        {
          "id": "fact_001",
          "atomic_fact": "The team agreed the Q2 deadline is unrealistic given current headcount",
          "topic_name": "Project timeline",
          "score": 0.91,
          "parent_episode_id": "ep_002"
        }
      ]
    }
  ],
  "profiles": [...],
  "raw_messages": [...],
  "agent_memory": {...},
  "query": {
    "text": "...",
    "method": "hybrid",
    "filters_applied": {...}
  }
}

mRAG 同时返回了事件和事实。 事件提供更广泛的知识,而事实提供更精确的信息。

适用于你的所有内容类型

mRAG 与数据类型无关。相同的流水线可跨对话、文档、电子邮件、会议记录、PDF、表格、演示文稿和图像进行检索——因为这些内容在摄取时都会被处理成相同的 Episodic Memory 和 AtomicFact 结构。

支持多模态解析的格式:

  • PDF(基于文本和扫描件)

  • 图像(.png、.jpg、.jpeg、.webp、.tiff、.bmp、.svg)

  • Word 文档(.docx、.doc)

  • 电子表格(.xlsx、.xls)

  • 演示文稿(.pptx、.ppt)

  • 电子邮件(.eml)

  • HTML(.html、.htm)

无需解析即可直接提取的格式:

  • 纯文本和 Markdown(.txt、.md)

  • 字幕和转录稿(.vtt)

  • 表格型纯文本(.csv、.tsv)

无论你的相关上下文是上周二的一段对话,还是六个月前上传的 PDF,mRAG 都会通过同一个端点,用同一个查询跨两者进行检索。

EverOS multimodel

如何使用

mRAG 可作为 EverOS 搜索端点上的一种检索方法。请在你的搜索请求中将 "method" 设为 "hybrid":

POST /api/v1/memories/search

{
  "query": "what did we decide about the Q2 deadline?",
  "method": "hybrid",
  "filters": { "user_id": "user_123" },
  "top_k": 10
}

响应将同时包含 episodes 数组和 facts 数组。对于已有集成,这一变化向后兼容:所有非 mRAG 方法都会返回一个空的 facts 字段,因此如果你不使用它,也不会有任何破坏。

何时使用 mRAG 而不是其他检索方法

EverOS 提供多种检索方法,每种都适用于不同场景:

keyword——快速、精确匹配的检索。适合你已经知道自己要找的具体术语时使用。

vector——基于向量相似度的纯语义嵌入检索。适合开放式、以意图驱动的查询,此时含义比字面词语更重要;也适合在术语不同但上下文相似时查找记忆。

agentic——使用 Memory Interleave 的迭代式多跳检索。适合复杂的、多步骤推理场景,即答案需要跨多个记忆串联证据。

hybrid——默认选项。层级式的事件到事实检索,在效率与效果之间取得平衡。最适合你需要精确性、答案是具体事实而非一般摘要,以及你的记忆包含多种内容类型的查询。尤其适合涉及具体决定、数字、承诺,或容易在更大范围摘要中丢失的细节的查询。

性能表现

内部基准测试显示,mRAG 的层级方法在事实层面而非事件层面进行检索,在需要具体细节的查询上始终优于扁平检索。性能最高的配置会使用源级上下文进行检索并返回事实,将事件扫描的广覆盖与原子事实匹配的高精度结合起来。

相比之下,基于块的扁平检索在具体细节查询上的准确率更低,而且每个结果返回的有用上下文要少得多。

所有控制 mRAG 行为的参数——包括每个阶段检索的候选数量、得分传播权重、收敛阈值、重排序器开关——都可以通过环境变量进行配置。它们在系统级进行调优,不向单个 API 请求暴露,这意味着你无需额外配置即可获得强劲的默认性能。

这对你的智能体意味着什么

对于需要推理具体过去事件的智能体,例如会议中的承诺、文档中记录的决定、研究中提取出的事实,mRAG 就是让这种推理变得可靠的检索层。

使用标准检索的智能体也许只能找到“曾经有一段关于项目截止日期的对话”。而使用 mRAG 的智能体会找到第二季度的截止日期被延后了六周,这一点在 3 月 12 日的同步会议中得到确认,因为两名工程师被重新分配了工作

当你的智能体要评估项目状态、起草跟进信息,或检查之前的承诺是否兑现时,这种差异就非常重要。

记忆只有在检索足够精确时才有用。这正是 mRAG 的目标。

mRAG 现已在 EverOS 上可用。开始使用:everos.evermind.ai
开源仓库:github.com/EverMind-AI/EverOS

Loading...
Loading...
Loading...

您可能还喜欢这些

相关

AI 记忆演进

介绍自我进化的智能体记忆:EverOS 如何帮助您的 AI 智能体从经验中学习

自我进化的智能体记忆、智能体记忆、自我进化、智能体技能、智能体案例

1亿个 token

突破 1 亿 Token 限制:MSA 架构为 LLM 实现高效端到端长期记忆

长期记忆、RAG、上下文、AI 智能体、OpenClaw、稀疏注意力、Transformer、LLM、KV 缓存

sota

EverOS:四项内存基准测试中的 SOTA 结果及其对 LLM 智能体的意义

EverOS、长期记忆、RAG、上下文、LoCoMo、LongMemEval、PersonaMem

人工智能记忆系统统一评估框架

人工智能记忆系统统一评估框架

AI 记忆、评估框架、EverOS、Mem0、MemU、ZEP、MemOS、LoCoMo、LongMemEval

介绍 mRAG:EverOS 如何检索真正重要的信息

这篇文章解释了什么是 mRAG、它为何存在,以及它对你和你的代理意味着什么。

EverMind研究人员

大约需要 3 分钟阅读

mRAG,多模态,多模态检索,RAG
Loading...

EverMind

长期连贯性的直接解决方案

© 2026 EverMind 团队。

EverMind

长期连贯性的直接解决方案

© 2026 EverMind 团队。

EverMind

长期连贯性的直接解决方案

© 2026 EverMind 团队。