当前位置: 首页 > news >正文

Memory is Reconstructed, Not Retrieved: Graph Memory for LLM Agents

论文阅读:Memory is Reconstructed, Not Retrieved: Graph Memory for LLM Agents

论文标题:Memory is Reconstructed, Not Retrieved: Graph Memory for LLM Agents
中文理解:记忆不是被检索出来的,而是被重构出来的:面向 LLM Agent 的图记忆
作者:Shuo Ji, Yibo Li, Bryan Hooi
发表位置:Proceedings of the 43rd International Conference on Machine Learning, ICML 2026, PMLR 306
arXiv 编号:2606.06036
原文链接:https://arxiv.org/pdf/2606.06036
代码链接:https://github.com/Ji-shuo/MRAgent
主题:LLM Agent、长期记忆、图记忆、主动检索、记忆重构
核心问题:现有记忆增强 Agent 多采用“先检索、再推理”的静态流程,难以根据中间证据动态调整记忆访问路径;论文提出 MRAgent,将记忆访问建模为在关联图上的主动、多步重构过程。


1. 引言:为什么“检索记忆”还不够?

LLM 在数学、代码、语言推理等任务上表现很强,但在长期交互任务中仍然容易暴露短板:模型无法把很长的历史对话、事件和偏好全部放进上下文窗口。因此,很多 Agent 系统会引入外部记忆,把历史交互存储起来,并在需要时取回相关内容。

传统做法通常可以概括为:

  1. 用户提出一个问题;
  2. 系统用相似度检索或图邻居扩展找出若干条记忆;
  3. 把这些记忆放入 prompt;
  4. LLM 基于这些上下文回答问题。

论文认为,这种范式的问题在于:检索本身是被动的。它通常只根据原始查询一次性决定应该取哪些记忆,而不是在推理过程中不断根据新发现的线索调整检索方向。

例如,一个问题可能表面上问的是某个人的比赛经历,但真正需要找到的关键线索是某个时间点、某段关系或另一个人的活动。如果检索器只按照原始问题做 top-k 相似度匹配,它可能会取回很多表面相关但无助于回答的内容;如果图检索只做固定 N-hop 邻居扩展,也可能因为路径不直接相连或扩展噪声太大而失败。

论文由此提出一个核心观点:

对长期记忆任务来说,记忆不应该只是被静态检索出来,而应该在推理过程中被逐步重构出来。

image

【Figure 1,展示 passive retrieval、flat memory、active reconstruction、associative memory 的对比。】


2. 问题设定:被动检索与主动重构

论文首先把记忆访问形式化为一个顺序决策过程。设外部记忆为:

[
M = {v_1, v_2, ..., v_N}
]

给定查询 (x),系统会在 (T) 个步骤中选择若干记忆单元。第 (t) 步后,系统已经积累的证据为:

[
S^{(t)} = {v^{(1)}, ..., v^{(t)}}
]

在这个设定下,论文区分了两类记忆访问策略。

2.1 被动检索

被动检索策略只依赖原始查询:

[
{v^{(1)}, ..., v^{(T)}} = \pi_p(x)
]

也就是说,系统在看到问题时就一次性决定要取哪些记忆。典型例子包括:

  • 基于向量相似度的 top-k 检索;
  • 从初始相关节点出发做固定 N-hop 图扩展;
  • 预定义的图遍历或层级检索流程。

这种方式的问题是,检索策略不会随着中间证据变化。例如,系统在第一步发现了一个新的时间线索,但被动检索器并不会基于这个新线索重新规划后续访问。

2.2 主动重构

主动重构策略则把第 (t) 步的选择建立在当前已经积累的证据之上:

[
v^{(t)} = \pi_a^{(t)}(x, S^{(t-1)})
]

也就是说,每一步检索都可以根据已有证据改变方向。论文认为,这更接近人类记忆的工作方式:人不是把某段记忆原封不动地读取出来,而是由上下文线索触发联想,再通过多个中间表征逐步重构出相关经历。

image

【Figure 2,展示 passive retrieval 与 active reconstruction 在示例问题上的差异。】


3. 从认知记忆到 Cue–Tag–Content 图

为了支持主动重构,论文提出了 MRAgent 的核心记忆结构:Cue–Tag–Content associative memory graph,即“线索—标签—内容”的关联记忆图。

论文将记忆系统建模为异构图:

[
M = (C, V, R)
]

其中:

  • (C):Cue,细粒度线索,例如实体、属性、时间、动作、上下文关键词;
  • (V):Content,具体记忆内容;
  • (R):关系集合,每条关系表示为 ((c, g, v))。

这里的 (g) 就是 Tag。Tag 不是普通的边类型名称,而是连接 cue 与 content 的中间关联属性。它的作用是把“直接取内容”改成“先判断关联方向,再取内容”。

也就是说,MRAgent 不直接从 cue 跳到 memory content,而是先通过 cue 激活可能相关的 tags,再由 LLM 判断哪些 tag 更可能通向有用内容。

论文定义了两个基本映射:

[
\phi_{c \rightarrow g}(c) = {g | (c, g, \cdot) \in R}
]

[
\phi_{(c,g) \rightarrow v}(c, g) = {v | (c, g, v) \in R}
]

这对应一个两阶段检索流程:

  1. 给定 cue,先找到候选 tag;
  2. 给定 cue 和选中的 tag,再取回对应 content。

这个设计的关键意义在于:Tag 让系统可以在访问完整记忆内容之前,先在较轻量的关联层面判断路径是否值得展开。这有助于避免在大图上盲目扩展邻居导致组合爆炸,也能减少无关记忆进入上下文。

image

【Figure 4,上半部分展示从对话中生成 cue、tag、episode、semantic memory 并构造关联图的过程。】


4. 多粒度记忆层:事件、语义与主题

MRAgent 的 Content 并不是单一类型,而是组织成多个粒度的记忆层。论文主要区分三类:

记忆层 结构 作用
Episodic Layer Cue–Tag–Episode 存储具体事件、经历和时间上下文
Semantic Layer Cue–Tag–Semantic 存储相对稳定的属性、偏好、事实知识
Abstraction Layer Topics 存储跨事件的主题抽象和模式

4.1 Episodic Layer:事件记忆

事件记忆保存具体发生过的经历,例如某次对话、某个活动、某个时间点的行为。每个 episode 都会被 LLM 抽取出:

  • 细粒度 cues,例如人物、地点、动作、时间;
  • 一个或多个 tags,用于描述 cue 与 episode 之间的关联;
  • 具体 episode 内容。

为了支持时间推理,论文还把 episodic memories 组织在统一时间线上,使 Agent 能够在重构过程中施加时间约束。

4.2 Semantic Layer:语义记忆

语义记忆保存更稳定、更抽象的知识,例如:

  • 用户长期偏好;
  • 人物属性;
  • 常识性事实;
  • 从多个 episode 中抽取出来的稳定信息。

与事件记忆相比,语义记忆不一定对应某个具体时间点。它的价值在于:当问题需要稳定背景知识时,Agent 不必反复检索大量历史事件,而可以直接访问相应语义节点。

4.3 Abstraction Layer:主题抽象

主题层存储一组相关 episode 的共同主题。它可以支持一种自上而下的检索方式:Agent 先定位到相关主题,再下降到主题关联的具体 episode。

这使得 MRAgent 可以在三个层次之间切换:

  • 需要细节时访问 episode;
  • 需要稳定事实时访问 semantic memory;
  • 需要缩小搜索范围时先访问 topic。

5. 记忆构建:用 LLM 从交互流中蒸馏图结构

MRAgent 的记忆图通过自动蒸馏流程构建。输入是一段交互流 (T),系统首先将其切分成多个 episodic units,每个单元对应一个具有上下文的具体事件。

对于每个 episode (e_i),系统使用 LLM 生成:

[
g_i = F^{tag}_{LLM}(e_i)
]

[
C_i = F^{cue}_{LLM}(e_i)
]

其中:

  • (F^{tag}_{LLM}) 生成短的关联标签;
  • (F^{cue}_{LLM}) 抽取实体、属性、描述词等细粒度线索;
  • 每个 cue 会通过 tag 与 episode 建立 Cue–Tag–Episode 关系。

语义单元的抽取方式类似,只是目标是获得跨 episode 保持稳定的抽象知识。主题节点则通过总结相关 episodes 的共同主题生成,并与对应 episodes 相连。

这套流程的特点是:记忆构建阶段相对轻量,复杂的关系推断更多被推迟到查询时的重构阶段完成。论文后面的实验也把这一点与效率结果联系起来:MRAgent 不依赖在写入阶段做大量复杂总结,而是在读取时按需探索相关路径。


6. MRAgent:主动记忆重构过程

论文第 4 节提出 MRAgent 的核心运行机制。与固定检索管线不同,MRAgent 在结构化记忆图中维护一个显式的 reconstruction state,并通过多轮 LLM 决策逐步扩展、筛选和终止搜索。

6.1 Reconstruction State

在第 (t) 步,MRAgent 的重构状态定义为:

[
S^{(t)} = (Z^{(t)}, H^{(t)})
]

其中:

  • (Z^{(t)}):当前活跃的记忆元素集合,包括 cues、tags、contents;
  • (H^{(t)}):已经重构出来的上下文,也就是到目前为止积累的证据。

这个状态决定了下一步应该沿哪些方向继续探索。

6.2 遍历动作

MRAgent 定义了一组有限的图遍历动作。主要包括:

动作 含义 作用
Cue → Tag 从 cue 激活相关 tag 找出可能的关联方向
Cue + Tag → Content 根据 cue 和 tag 取回内容 获取具体 episode 或 semantic memory
Content → Cue/Tag 从已取回内容反向激活新的 cue/tag 根据中间证据改写后续搜索方向

前两类是正向遍历,第三类是反向遍历。反向遍历很关键:它使 Agent 能够从已经找到的内容中发现新的线索,再用这些线索开启下一轮搜索。

6.3 一轮重构如何发生?

给定用户查询,MRAgent 的过程大致如下:

  1. 初始化 cue:从问题中抽取细粒度 cues,并在记忆图中匹配对应节点;
  2. LLM reasoning and action selection:LLM 根据查询、当前活跃节点和已经积累的证据,选择下一步遍历动作;
  3. Controlled memory traversal:系统执行选中的图遍历操作,得到候选节点;
  4. LLM routing and state update:LLM 判断哪些候选节点真正相关,剪枝无关路径,并更新状态;
  5. 终止判断:LLM 判断当前证据是否足够回答问题;如果不足,继续下一轮重构。

可以把这个过程理解为:LLM 不只是最后的回答器,也参与了记忆访问策略本身。它在每一轮中决定“下一步应该沿哪条关联路径找”。


7. 理论分析:主动检索比被动检索表达能力更强

论文还给出了一个理论分析,用近似理论的视角说明主动检索的优势。

设检索预算为 (T)。被动检索必须在一开始就把 (T) 次检索全部确定下来,而主动检索可以根据已经检索到的节点动态决定下一次检索。

论文定义了两个假设类:

  • (H^{LM}_{passive}(T)):使用 (T) 次非自适应检索的模型可以实现的输入输出映射集合;
  • (H^{LM}_{active}(T)):使用 (T) 次自适应检索的模型可以实现的输入输出映射集合。

论文的主定理为:

[
H^{LM}{passive}(T) \subset H^{LM}(T), \quad T \geq 2
]

也就是说,在检索预算至少为 2 时,主动检索的表达能力严格强于被动检索。直观理解是:当后续检索可以依赖前面检索到的证据时,系统能够实现某些被动策略无法实现的条件化访问路径。

这部分理论分析与前面的系统设计是一致的:MRAgent 的优势不只是图结构本身,而是“图结构 + 自适应访问策略”的组合。


8. 实验设置

论文在两个长期记忆评测基准上评估 MRAgent:

Benchmark 任务特点
LoCoMo 关注长对话记忆理解,包括 multi-hop、temporal、open-domain、single-hop 等问题类型
LongMemEval 关注跨多个 session 的长期记忆评估,交互历史更长

比较方法包括:

  • RAG;
  • LangMem;
  • A-Mem;
  • MemoryOS;
  • Mem0;
  • MRAgent。

论文使用两个 LLM backbone:

  • Gemini-2.5-Flash;
  • Claude-Sonnet-4.5。

评价指标包括:

  • F1;
  • LLM-Judge score;
  • Evidence Recall。

LLM-Judge 使用 GPT-4o-mini 进行评估。


9. 主实验结果:MRAgent 在两个基准上优于强基线

9.1 LoCoMo 结果

在 LoCoMo 上,论文报告了不同问题类型下的 F1 与 LLM-Judge 分数。总体上,MRAgent 在 Gemini 和 Claude 两个 backbone 下都取得最高 Overall Judge 分数。

Backbone 方法 Overall Judge
Gemini RAG 61.30
Gemini A-Mem 55.97
Gemini MemoryOS 63.35
Gemini LangMem 62.86
Gemini Mem0 68.31
Gemini MRAgent 84.21
Claude RAG 61.10
Claude A-Mem 68.45
Claude MemoryOS 61.18
Claude LangMem 78.61
Claude Mem0 69.02
Claude MRAgent 88.32

论文指出,在 Gemini backbone 下,MRAgent 的 Overall Judge 从最强基线 Mem0 的 68.31 提升到 84.21,对应 23.3% 的相对提升;在 Claude backbone 下,从最强基线 LangMem 的 78.61 提升到 88.32,对应 12.4% 的提升。

从问题类型看,MRAgent 在 temporal、open-domain、single-hop 等类别上提升明显,在 Claude backbone 下 multi-hop 也取得较大提升。论文将这种提升归因于两个因素:

  1. Cue–Tag–Content 结构显式编码了语义关联,使 Agent 能够根据 tag 选择更有希望的方向;
  2. 多轮记忆访问把 LLM 推理嵌入检索过程,使检索路径可以随中间证据动态调整。

9.2 LongMemEval 结果

在 LongMemEval 上,论文使用 LLM-Judge 评估不同问题类型,包括 multi-session、single-session-user、temporal-reasoning、single-session-preference 等。

方法 Multi-session Single-session-user Temporal Preference Overall
RAG 54.89 85.71 42.86 33.33 54.65
A-Mem 42.85 90.00 45.11 46.43 52.98
MemoryOS 56.39 87.14 38.35 46.67 54.92
LangMem 52.63 78.57 45.71 36.67 53.77
Mem0 50.38 78.57 45.11 40.00 53.01
MRAgent 68.42 92.85 68.42 66.67 72.95
MRAgent* 86.46 92.85 85.71 78.57 86.76

其中 MRAgent* 表示:记忆由 Gemini 构建,但检索阶段使用 Claude。论文指出,标准 MRAgent 在 LongMemEval 上也显著优于其他 Gemini-backbone 方法,Overall 达到 72.95。


10. 成本分析:按需重构减少 token 消耗

论文不仅比较效果,也比较了 token 消耗和运行时间。LongMemEval 上每个样本的成本如下:

方法 Token Consumption Runtime(s)
A-Mem 632k 1122.23
MemoryOS 273k 3135.54
LangMem 3268k 1209.57
Mem0 245k 533.29
MRAgent 118k 586.11

MRAgent 的 token 消耗最低,为 118k,明显低于 A-Mem 的 632k、MemoryOS 的 273k 和 LangMem 的 3268k。运行时间方面,MRAgent 为 586.11 秒,略慢于 Mem0 的 533.29 秒,但明显快于 A-Mem、MemoryOS 和 LangMem。

论文对这一结果的解释是:MRAgent 不在构建阶段反复总结所有历史、也不在检索阶段大规模展开完整内容,而是通过 tag 对路径进行语义筛选,把昂贵的内容访问推迟到确实需要时发生。

换句话说,MRAgent 的效率来自一种“按需访问”机制:

  • 先在 cue/tag 层判断方向;
  • 再访问具体 content;
  • 每一步由 LLM 根据已有证据剪枝;
  • 避免把大量无关历史放进 prompt。

11. 消融实验:结构与推理都重要

论文在 LoCoMo 的 multi-hop 问题上做了消融实验,主要比较不同记忆结构和是否使用多步推理。

结构变体包括:

变体 含义
CE Cue → Episode,直接索引事件
CTE Cue–Tag–Episode,通过 tag 中介访问事件
CTC Cue–Tag–Content,完整结构,包括事件、语义和抽象内容
w/o Semantic 去掉 semantic memory 的版本
MRAgent 完整模型

论文观察到三点:

第一,主动多步推理是主要提升来源之一。在相同结构下,带 reasoning 的版本普遍优于不带 reasoning 的版本,说明 multi-hop 问题不能只靠一次性检索完成。

第二,Tag 提供了有效的语义导航。在不使用推理的情况下,CE 到 CTE 再到 CTC 的性能逐步提升,说明 tag 中介结构能帮助系统减少碎片化和无关记忆。

第三,episodic memory 与 semantic memory 互补。去掉 semantic memory 后性能下降,说明事件细节和稳定语义知识在多跳问题中承担不同作用:前者保存具体证据,后者提供抽象背景。

image

【Figure 5,展示 CE、CTE、CTC、w/o Semantic、MRAgent 的消融结果。】


12. 多轮推理分析:更深的重构不能简单用更宽的检索替代

论文进一步分析了不同问题类型在推理轮次中的 evidence recall 变化。结果显示:

  • single-hop 和 temporal 问题通常在约 3 轮内接近较高 recall;
  • multi-hop 问题更依赖持续探索,随着推理轮次增加,recall 有明显提升;
  • Agent 的 Average Turns 与 Max Valid Turns 比较接近,说明模型能够较好地判断何时继续搜索、何时停止。

论文给出的平均轮次如下:

问题类型 Average Turns Max Valid Turns
Multi-hop 3.16 2.65
Temporal 2.42 2.40
Open Domain 2.60 1.09
Single hop 2.07 1.28

这部分结果强调:MRAgent 的优势不是简单地“多取一些记忆”,而是让检索深度可以随着中间证据逐步推进。论文还指出,增加并行检索预算不能替代更深层的重构深度。

image

【Figure 6,展示不同问题类型随推理轮次变化的 cumulative evidence recall,以及 Average Turns / Max Valid Turns 表格。】


13. Case Study:跨 session 证据的逐步重构

论文给出一个定性案例,展示 MRAgent 如何从一个初始 cue 出发,在图结构中穿过多个 associative tags,逐步取回 episodic memory 与 semantic information,并把它们组合成回答。

该案例中,Agent 并不是一次性检索所有相关内容,而是:

  1. 从问题中的人物 cue 开始;
  2. 沿着相关 tag 找到某些具体事件;
  3. 从事件中发现新的语义或时间线索;
  4. 再继续访问相关 topic 或 semantic memory;
  5. 最后把多个 session 中分散的证据对齐,形成完整回答。

这个案例对应论文的中心思想:长期记忆任务中的答案往往不在单条记忆中,而需要 Agent 在多个片段之间建立路径。

image

【Figure 7,展示 MRAgent 在多 session 查询中的推理轨迹。】


14. 相关工作位置:RAG、Graph Memory 与 Agentic Retrieval

论文把 MRAgent 放在三个方向的交汇处:

14.1 Retrieval-Augmented Generation

RAG 将外部文档或历史内容通过相似度检索放入 prompt。其基本形式是一种一次性 top-k 选择,因此在论文分类中属于被动检索。

14.2 Graph-based Memory

图记忆系统显式表示实体、关系或事件连接,比纯向量库更可解释,也更适合关系推理。但论文指出,许多图记忆方法仍然依赖固定邻居扩展或预定义遍历规则,检索过程本身仍是被动的。

14.3 Agentic RAG

Agentic RAG 把检索放入推理循环中,允许模型按需发起查询。但论文区分了 MRAgent 与这类方法:Agentic RAG 多面向开放外部知识检索,而 MRAgent 面向 Agent 自身持久交互历史中的记忆重构。

因此,MRAgent 的定位不是单纯提出一种新图结构,也不是简单把 RAG 做成多轮,而是把“关联图结构”和“主动重构策略”组合起来,用于长期记忆推理。


15. 结论与局限

论文最后总结,MRAgent 将记忆访问建模为结构化记忆图上的主动、多步重构过程。其关键设计是把复杂关系依赖的建模从写入阶段部分转移到检索阶段,使 Agent 可以在查询时根据中间证据进行有针对性的状态依赖探索。

论文指出当前实现也存在限制:

  1. 重构深度带来延迟
    由于关系推理被推迟到 retrieval 阶段,需要更多 traversal step 的复杂查询会比单次检索有更高延迟。

  2. 静态构建缺少持续更新与整合
    当前记忆图构建较简单,没有复杂的 memory updating、consolidation 或 forgetting 机制。随着长期交互累积,记忆图会单调增长,带来存储开销。

  3. 未来需要更自适应的维护机制
    论文认为,后续可以研究 adaptive construction、lightweight memory maintenance 和更鲁棒的 traversal policies,从而把主动重构扩展到更广泛的长期任务中。


16. 总结

这篇论文围绕一个清晰的判断展开:长期记忆任务中的关键不只是“存什么”和“检索什么”,还包括“如何在推理中动态决定下一步该找什么”。

MRAgent 的方法可以概括为三层:

  1. 记忆表示层:用 Cue–Tag–Content 图表示细粒度线索、关联标签和多粒度内容;
  2. 访问控制层:通过 cue→tag、cue/tag→content、content→cue/tag 等动作进行可控图遍历;
  3. 推理决策层:让 LLM 在每一轮根据当前证据选择动作、筛选候选、判断是否终止。

实验显示,MRAgent 在 LoCoMo 和 LongMemEval 上相比 RAG、A-Mem、MemoryOS、LangMem、Mem0 等方法取得更高效果,同时显著降低 token 消耗。论文的核心贡献不只是提出一种图记忆结构,而是强调:对 LLM Agent 来说,记忆访问应该从静态 retrieval 转向动态 reconstruction。

参考

  1. Shuo Ji, Yibo Li, Bryan Hooi. Memory is Reconstructed, Not Retrieved: Graph Memory for LLM Agents. ICML 2026 / arXiv:2606.06036.
  2. 原文 PDF:https://arxiv.org/pdf/2606.06036
  3. 代码仓库:https://github.com/Ji-shuo/MRAgent
http://www.jsqmd.com/news/1057702/

相关文章:

  • 漏洞扫描、渗透测试与代码审计:核心区别、实战流程与协同策略
  • 5种方法快速掌握跨平台资源下载工具:从技术原理到实战应用
  • MC33816智能驱动器SPI配置与滤波时间优化实战指南
  • Ubuntu 20.04 安装最新版 Webmin 图文指南与安全加固
  • 2026沈阳防水补漏上门施工哪家强?正规商家资质+报价+口碑+售后四维实测对比 - 防水资讯
  • 终极B站视频下载指南:免费解锁4K大会员画质的完整教程
  • Linux /dev/null 原理与实战:标准流重定向与静默化工程
  • 武汉市洪山区水电维修|维小达|电路|水管|马桶|暖气|管道疏通一站式全屋水电维保服务 - 维小达科技
  • 2026汉中那个烟机灶具品牌推荐:汉中方太厨电(陕西天天舒适家节能环保有限公司)企业简介 - 一个呆呆
  • 开源漏洞扫描工具实战:从工具使用到漏洞原理的逆向学习指南
  • HCS12内存映射实战:优化嵌入式系统性能与内存布局
  • 深耕沈阳黄金回收市场!2026白皮书详解合扬门店服务优势 - 奢侈品交易观察员
  • 2026年智能贴标设备助力生产线升级,推动包装行业效率提升 - 温茶叙旧
  • 闲置黄金变现必看白皮书!沈阳合规回收首选合扬连锁品牌 - 奢侈品交易观察员
  • 装修亲身实测|重庆靠谱装修公司挑选心得分享 - 大渝测评
  • CF2144E1 思路分享(dp)
  • 2026年国内乡村道路太阳能路灯工程工厂,究竟有着怎样的名声?
  • 3分钟掌握Adobe-GenP:终极Adobe软件激活完整指南
  • 2026深圳大型搬家公司实力大盘点:车队规模、人员配置、服务能力三项硬指标评测对比 - 从来都是英雄出少年
  • 一篇讲清亲情账号、家庭共济与医保钱包
  • NJU OS 并发 Bugs 和应对
  • 基于LPC51U68 SCTimer与FreeMASTER的BLDC电机驱动实战指南
  • 融合GNN与LLM的平衡型游戏推荐系统:打破信息茧房
  • 一线观察:长期使用平替科思创 2655 产品的供应商实际体验
  • Ubuntu 14.04下LEMP服务自愈:Monit进程监控与故障自动恢复实战
  • ubbantu24 + sealos 5.1部署k8s + kubesphere
  • Python 操作 SQLite 本地轻量数据库:零配置、无需安装
  • HSTracker:macOS炉石传说玩家的终极智能助手指南 [特殊字符]
  • OpenClaw中文AI本地部署实战:Windows一键运行7B模型
  • V0.2.2发布:修复多行格式输出问题