GraphReader: 将长文本结构化为图,并让 agent 自主探索,结合的大模型长文本处理增强方法

GraphReader: 将长文本结构化为图,并让 agent 自主探索,结合的大模型长文本处理增强方法

    • 论文大纲
    • 理解
      • 为什么大模型和知识图谱不够?还要多智能体
    • 设计思路
    • 数据分析
    • 解法拆解
    • 全流程
    • 核心模式
    • 提问
      • 为什么传统的长文本处理方法会随着文本长度增加而性能下降?
      • 图结构相比线性结构在表示长文本时有哪些本质优势?
      • 如何判断一个原子事实的重要性?值得被提取为节点吗?
      • 智能体的探索策略是如何避免陷入局部最优的?
      • 笔记本机制在整个系统中扮演什么角色?为什么需要它?
      • 如何确保提取的图结构不会丢失原文的关键信息?
      • 智能体的理性规划和人类解决问题的思维过程有什么异同?
      • 为什么4k窗口就能达到128k窗口的效果?背后的原理是什么?
      • 这种方法对于不同类型的长文本都同样有效吗?
      • 如何评估这种方法的可解释性?
      • GraphReader每个搜索路径限制了10次函数调用,如果遇到特别复杂的文本结构,需要超过10跳才能找到答案,这种情况GraphReader如何处理?
      • 论文中提到"normalize the key elements as described by Lu et al. (2023)",但没有详细说明具体的规范化方法。如果遇到模糊词、一词多义等情况,GraphReader如何确保规范化的准确性?
      • 在构建图时,原子事实的抽取严重依赖于LLM的性能。如果LLM在抽取阶段漏掉了关键信息或产生了错误的原子事实,有什么机制来检测和纠正这些错误吗?
      • 图6中的论文实例看起来相对简单。如果遇到包含隐式逻辑、需要常识推理、或者需要跨段落整合信息的复杂问题,GraphReader如何保证答案的准确性?
      • 论文提到最大chunk size设为2k tokens。当处理长度为256k的文本时,会生成大量chunk。在这种情况下,如何确保相关信息没有被错误地分散到不同chunk中而影响理解?
      • 实验结果显示GraphReader在256k长度文本上仍然保持较好性能。但这个结论是基于HotpotWikiQA-mixup数据集得出的,这个数据集是否足够具有代表性?
      • 表8显示了不同数据集上的函数调用统计,但没有分析失败案例。在那些GraphReader没能正确回答的问题中,是哪个阶段(图构建、路径探索、还是答案推理)出现问题?
      • 论文提到使用GPT-4来评估recall,但GPT-4本身的判断也可能出错。有没有更客观的方法来评估GraphReader的recall性能?
      • 在InitialNode选择阶段,如果预选的5个节点都不是最优起点,会导致后续探索效率低下。有什么机制来动态调整初始节点的选择吗?
    • 提示词
      • 关键元素和原子事实提取提示词
      • 制定合理计划提示词
      • 初始节点选择提示词
      • 探索原子事实提示词
      • 探索文本块提示词
      • 探索相邻节点提示词
      • 答案推理提示词
      • 评分和阅读提示词

论文:GraphReader: Building Graph-based Agent to Enhance Long-Context Abilities of Large Language Models

论文大纲

├── 1 长文本处理能力【研究背景】
│      ├── LLMs的进展与局限【现状分析】
│      │      ├── 处理长文本能力受限【技术限制】
│      │      └── 上下文窗口和内存限制【具体约束】
│      └── 现有解决方案【技术方案】
│             ├── 模型层面优化【方法类型】
│             │      ├── 位置嵌入修改【具体技术】
│             │      └── 注意力机制变体【具体技术】
│             └── 智能体层面优化【方法类型】
│                    ├── 检索增强生成【具体技术】
│                    └── 智能体系统【具体技术】
│
├── 2 GraphReader方案【技术创新】
│      ├── 图结构化处理【核心方法】
│      │      ├── 文本分段【处理步骤】
│      │      ├── 信息提取【处理步骤】
│      │      └── 图结构构建【处理步骤】
│      └── 智能体探索【关键技术】
│             ├── 节点探索【功能模块】
│             ├── 理性规划【功能模块】
│             └── 记录反思【功能模块】
│
├── 3 实验评估【研究验证】
│      ├── 基准测试【评估方法】
│      │      ├── 单跳问答【测试类型】
│      │      └── 多跳问答【测试类型】
│      └── 性能表现【评估结果】
│             ├── 优于GPT-4-128k【比较结果】
│             └── 可扩展性强【性能特点】
│
└── 4 局限性【研究反思】
├── API依赖【技术局限】
└── 智能体效率【性能局限】

理解

  1. 背景与问题
    主要类别:长文本理解问题
    具体问题:
  • 现有LLMs处理长文本存在固有的上下文窗口限制
  • 现有方法要么成本高(模型层面),要么容易忽视细节(智能体层面)
  • 多跳问题中难以建立长距离依赖关系
  1. GraphReader的核心性质
    性质:图结构化的长文本处理方案
    原因:
  • 通过图结构捕获文本间的关联
  • 使用智能体进行有规划的探索
  • 结合粗粒度到细粒度的阅读策略
  1. 对比示例
    正例:查询"演唱Never Too Loud的乐队来自哪个城市的哪个城堡附近?"
  • GraphReader能通过图结构连接:歌曲→乐队→城市→城堡
  • 形成清晰的推理路径

反例:直接用GPT-4处理相同问题

  • 可能因为信息分散在长文本中而遗漏关键细节
  • 难以建立远距离的信息关联
  1. 类比理解
    就像图书馆的分类系统:
  • 图书(原始文本)按主题分类(节点)
  • 主题之间有关联(边)
  • 图书管理员(智能体)按需查找相关书籍
  1. 概念总结
    GraphReader是一个结合图结构和智能体的长文本处理系统,它将长文本组织成图的形式,通过智能规划和探索来回答复杂问题。

  2. 概念重组
    “图读者”(GraphReader):通过图的方式阅读文本,让阅读和理解变得有规律可循。

  3. 与上下文关联
    这种方法解决了文章开头提出的长文本处理问题,同时避免了现有方法的局限性。

  4. 关键规律分析
    主要矛盾:如何在有限的上下文窗口下处理无限的长文本
    次要矛盾:

  • 计算效率与准确性的平衡
  • 探索范围与深度的权衡
  • API依赖带来的限制
  1. 功能分析
    根本需求:准确理解和回答基于长文本的问题
    核心功能:
  • 信息的结构化表示(定性:图结构完整性)
  • 智能化信息检索(定性:路径合理性)
  • 多步推理能力(定量:准确率提升10-20%)
  1. 来龙去脉梳理
    起因:现有LLMs难以高效处理长文本
    过程:
  • 提出图结构化表示方案
  • 设计智能体探索机制
  • 实现从粗到细的阅读策略
    结果:
  • 使用4k窗口超越GPT-4的128k表现
  • 在多个基准测试中展现优势
  • 证明了方法的可扩展性

为什么大模型和知识图谱不够?还要多智能体

复杂度/长度  短文本   中等文本   长文本
简单问题    直接处理  检索增强   图结构
多跳问题    直接处理  图结构    图结构+智能体
复杂推理    图结构    图结构    图结构+多智能体

医疗诊断的复杂性

一个看似简单的症状可能涉及多个系统:
“患者最近经常感到头晕、心慌,半夜会突然惊醒,是什么原因导致的?”

单一大模型的局限:

  • 可能过于关注某个症状而忽视整体
  • 难以权衡多个可能的诊断路径
  • 容易漏掉潜在的关联症状

静态图结构的不足:

  • 仅能展示症状和疾病的已知关联
  • 无法反映症状的动态变化
  • 难以处理患者个体差异

一个患者有3个病 知识图谱和大模型只能找到一个。

增加智能体后:

  • 记忆性:通过 notebook 机制保存多个发现
  • 迭代性:可以多次探索直到解释所有症状
  • 全面性:不会因为找到一个答案就停止 & 会综合各个部门

多智能体协作的优势

分工示例:

初诊智能体:收集基础症状信息
→ 记录:头晕、心慌、睡眠问题

专科智能体:
├── 心内科智能体:评估心血管系统
├── 神经科智能体:评估神经系统
└── 心理科智能体:评估心理状态

整合智能体:综合多个专科意见
验证智能体:交叉检查诊断合理性

诊断推理过程:

  1. 信息收集阶段
心内科智能体关注:
- 心率变化
- 血压情况
- 胸闷程度

神经科智能体关注:
- 头晕性质
- 平衡功能
- 神经系统症状

心理科智能体关注:
- 睡眠质量
- 焦虑程度
- 生活压力
  1. 交叉验证阶段
可能的诊断路径:
路径A:心血管问题 → 睡眠障碍 → 焦虑加重
路径B:焦虑症状 → 自主神经失调 → 心血管表现
路径C:神经系统问题 → 影响睡眠 → 诱发焦虑
  1. 综合诊断
  • 多个智能体共同评估各条路径的可能性
  • 考虑症状之间的相互影响
  • 权衡不同诊断的优先级

为什么这种方式更有效

  1. 提高诊断准确性
  • 多角度评估避免偏见
  • 专科知识深度互补
  • 降低漏诊风险
  1. 动态调整能力
  • 根据新发现及时调整诊断方向
  • 灵活应对症状变化
  • 考虑治疗反馈
  1. 透明可解释
  • 清晰的推理过程
  • 明确的诊断依据
  • 可追溯的决策链条

这就像一个由多位专科医生组成的会诊团队,每位成员都发挥其专业优势,通过充分讨论和验证最终达成共识,这比单一医生的判断要可靠得多。

因此,在处理复杂的医疗诊断问题时,多智能体系统不是可有可无的,而是提高诊断准确性和可靠性的必要手段。

 

设计思路

确认目标
如何让模型处理和理解超出其上下文窗口限制的长文本?

分析过程

主要问题拆解

  1. 如何有效存储长文本信息?
  • 将文本分段提取关键信息
  • 构建图结构保存信息和关系
  • 通过节点和边建立长距离连接
  1. 如何高效检索相关信息?
  • 设计智能体进行规划
  • 实现从粗到细的阅读策略
  • 动态调整探索路径
  1. 如何确保推理的准确性?
  • 记录探索过程中的关键信息
  • 通过反思优化探索方向
  • 整合多路径获取的信息

实现步骤

  1. 文本预处理阶段
  • 将长文本切分为固定大小的块
  • 从每个块中提取原子事实
  • 识别关键元素作为节点
  1. 图构建阶段
  • 对关键元素进行标准化
  • 基于共现关系建立边连接
  • 形成完整的信息图结构
  1. 智能探索阶段
  • 制定理性探索计划
  • 选择初始探索节点
  • 动态调整探索策略
  1. 答案生成阶段
  • 收集探索过程中的关键信息
  • 整合多条路径的发现
  • 生成最终答案

效果展示

目标:使用有限上下文窗口处理超长文本
过程:图结构化表示 + 智能化探索
方法:GraphReader框架
结果:4k窗口超越128k GPT-4
数据:在256k长文本上仍保持约30%正确率

领域金手指

图结构化表示是这个领域的金手指,能够解决:

  1. 文档问答系统
  • 将大型文档转换为图结构
  • 智能定位相关段落
  1. 多文档摘要
  • 构建文档间的关系图
  • 提取关键信息链路
  1. 知识推理
  • 建立知识图谱
  • 进行多跳推理
  1. 事实核验
  • 追踪信息来源
  • 验证信息一致性
  1. 长文本理解
  • 保存上下文关联
  • 实现远距离依赖

这个"金手指"的核心优势在于它能够将离散的文本信息组织成结构化的关系网络,让模型能够"看到"信息之间的连接,从而突破上下文窗口的限制。

数据分析

  1. 收集数据
  • 使用了多类长文本问答数据集:
    • HotpotQA(多跳问答数据)
    • 2WikiMultihopQA(复杂问答数据)
    • MuSiQue(需要多步推理的数据)
    • NarrativeQA(长文本理解数据)
    • HotpotWikiQA-mixup(不同长度的文本数据)
  1. 基于图的方法能更好地保持长距离信息
图方法的优势:
-256k长度文本上的表现:
  GraphReader (4k窗口): 30-38%准确率
  GPT-4 (128k窗口): 14-16%准确率
  
- 性能随距离的衰减:
  传统方法:性能随距离快速下降
  图方法:性能保持相对稳定

原因分析:
- 图结构将相关信息通过边直接连接
- 不受文本线性距离的限制
- 可以直接跳转到相关节点
  1. 智能体的探索策略对性能影响
策略效果对比:
- 使用理性规划 vs 随机探索:
  性能差距:15-22%
  
- 关键策略组件:
  * 预先规划
  * 有方向的探索
  * 信息积累机制
  1. 文本结构化程度与模型性能的关系
结构化影响:
- 原子事实提取的质量:
  好的结构化:76.4%召回率
  最终笔记本:90.5%召回率

- 节点连接的质量:
  平均每个节点~10个邻居
  较均匀的信息分布
  1. 智能体探索策略与问答准确性的关系
关键发现:
- 探索深度:
  * 平均3-4次函数调用
  * 多阶段探索更准确

- 策略组合效果:
  * 邻居节点探索:占26-28%
  * 原子事实探索:占40-42%
  * 文本块探索:占31-34%

这些发现说明:

  1. 图结构本身提供了处理长距离信息的基础
  2. 智能体的策略让这种优势能被充分利用
  3. 良好的结构化是性能的基础保证
  4. 多阶段的探索策略能提升准确性

总的来说,这是一个结构(图)和策略(智能体)相互配合的系统,两者缺一不可。

解法拆解

在这里插入图片描述
GraphReader的整体工作流程,包含3个主要部分:

  • 图的构建 - 从长文本中提取关键信息形成图结构
  • 图的探索 - agent根据问题对图进行探索
  • 答案推理 - 基于探索获取的信息生成答案
  1. 逻辑关系拆解:

技术:GraphReader = 图结构构建 + 智能体探索

问题:长文本处理中的信息遗失和推理能力下降

主要区别:传统方法是线性处理 vs GraphReader是结构化探索

子解法拆解:

解法 = 图构建(因为需要结构化信息) + 智能体探索(因为需要高效检索) + 笔记本机制(因为需要记忆和整合)

A. 图构建子解法
- 原因:需要高效组织长文本信息
- 包含:
  * 文本分块
  * 原子事实提取
  * 节点规范化
  * 边关系建立

B. 智能体探索子解法
- 原因:需要高效定向搜索相关信息
- 包含:
  * 理性规划
  * 多起点探索
  * 邻居节点遍历
  
C. 笔记本机制子解法
- 原因:需要累积和整合发现的信息
- 包含:
  * 信息记录
  * 探索历史追踪
  * 答案推理
  1. 逻辑链分析:
决策树结构:
GraphReader
├── 图构建阶段
│   ├── 文本分块
│   ├── 提取原子事实
│   └── 构建图结构
│       ├── 节点创建
│       └── 边连接
└── 探索阶段
    ├── 理性规划
    ├── 节点选择
    └── 迭代探索
        ├── 原子事实探索
        ├── 文本块探索
        └── 邻居探索
  1. 隐性方法:
  • 节点规范化:处理同义词和共指关系
  • 探索状态追踪:避免重复访问
  • 多路径信息融合:整合不同探索路径的发现
  1. 隐性特征:
  • 信息密度:影响节点和边的构建
  • 探索深度:影响答案质量
  • 文本相关性:影响探索效率
  1. 潜在局限性:
  • 依赖原子事实提取质量
  • 图构建开销较大
  • 可能错过非结构化的隐含信息
  • 探索策略可能陷入局部最优
  • 对某些简单问题可能过于复杂

这个分析展示了GraphReader是一个复合型解决方案,其核心创新在于将文本结构化和智能探索相结合。

全流程

在这里插入图片描述

特征1:信息局部集中
解法:直接检索

特征2:需要多跳推理
解法:图结构探索

特征3:信息分散
解法:智能体迭代搜索

本质上,诊断就是动态信息的输入和输出,不断校正的

大模型如果只做静态的模式识别  只能保证一个基础结果

优化方向:

1. 图构建优化
   - 更精确的原子事实提取
   - 更智能的节点规范化
   - 更有效的边连接策略

2. 探索策略优化
   - 更精准的初始节点选择
   - 更高效的路径规划
   - 更智能的终止判断

3. 信息整合优化
   - 更好的冗余消除
   - 更强的推理能力

 

  1. 具体应用示例:

A. 复杂病例问诊:

输入:
- 病历:包含多次就医记录、各类检查结果、用药历史等
- 问题:"患者目前的主要症状可能与哪些基础疾病相关?"

处理流程:
1. 图构建
   - 节点类型:症状、检查、诊断、用药、时间点
   - 边关系:时序关系、因果关系、关联关系

2. 智能体探索
   Step 1: 识别当前主要症状群
   Step 2: 追溯症状发展历史
   Step 3: 关联历史诊断记录
   Step 4: 分析用药效果
   Step 5: 整合检查结果

3. 输出诊断报告:
   "患者当前头痛、眩晕症状,根据病历分析:
    - 可能与高血压病史相关(2年病史,用药控制欠佳)
    - 颈椎病变可能加重症状(近期MRI显示)
    - 建议进一步心脑血管评估"

B. 治疗方案制定:

输入:
- 诊断记录
- 问题:"为该患者制定糖尿病和高血压的联合治疗方案"

处理流程:
1. 医疗知识图构建
   - 提取当前状况:血糖、血压值
   - 整理用药历史:降糖药、降压药
   - 收集相关检查:肾功能、心功能等
   - 建立并发症关联

2. 智能体分析
   Step 1: 评估疾病严重程度
   Step 2: 检查药物相互作用
   Step 3: 分析治疗依从性
   Step 4: 评估并发症风险
   Step 5: 制定监测计划

3. 输出治疗方案:
   "建议治疗方案:
    1. 药物调整:
       - 降压药:缬沙坦 80mg bid
       - 降糖药:二甲双胍 0.5g tid
    2. 生活方式:
       - 低盐饮食 (<6g/)
       - 规律运动 (快走30min/)
    3. 监测计划:
       - 血压:每天早晚各一次
       - 血糖:空腹及餐后2h
    4. 随访安排:
       - 两周后复查血压、血糖
       - 一个月后评估药物调整效果"

这个应用展示了GraphReader在医疗场景的优势:
4. 可处理复杂的病历信息
5. 能建立症状间的关联
6. 支持多角度分析
7. 可追踪时序发展
8. 能整合多源信息

主要优化点:
9. 医疗实体识别准确性
10. 因果关系推理能力
11. 治疗方案个性化程度
12. 医学指南合规性
13. 药物相互作用分析

核心模式

GraphReader = 图结构 + 智能探索 + 记忆机制

1. 图结构压缩文本:
原始文本 -> {节点 + 关系}
- 删除冗余:相似实体合并
- 提取模式:关系类型复用

2. 智能探索压缩搜索空间:
盲目搜索 -> 定向探索
- 删除无效路径
- 复用探索策略

3. 记忆机制压缩历史信息:
完整历史 -> 关键发现
- 保留决策相关
- 抽取共性模式

提问

为什么传统的长文本处理方法会随着文本长度增加而性能下降?

随着文本变长出现"丢失在中间"效应,信息被稀释

有限的上下文窗口难以维持全局连贯性

线性处理方式难以捕捉长距离依赖关系

缺乏有效的信息组织和检索机制

图结构相比线性结构在表示长文本时有哪些本质优势?

可以显式表达概念之间的关系

支持灵活的探索路径而不是固定的线性遍历

在保持全局结构的同时允许局部聚焦

通过节点连接支持多跳推理

能更好地反映文本的语义网络特性

如何判断一个原子事实的重要性?值得被提取为节点吗?

与潜在问题/任务的相关性

信息的独特性与不可替代性

与其他事实的连接密度

在整体文档结构中的重要程度

是否包含关键实体或关系

智能体的探索策略是如何避免陷入局部最优的?

探索前进行战略规划

根据发现动态调整路径

维护多条探索路径

使用笔记本追踪进度

定期反思和评估当前策略

笔记本机制在整个系统中扮演什么角色?为什么需要它?

为智能体提供工作记忆

帮助追踪推理链条

支持对收集信息的反思

辅助生成连贯的答案

作为临时知识库

如何确保提取的图结构不会丢失原文的关键信息?

全面提取原子事实

维护与原文块的链接

分层组织信息

与原始内容进行验证

保持冗余信息以防遗漏

智能体的理性规划和人类解决问题的思维过程有什么异同?

相似点:都会分解复杂问题、制定步骤计划、动态调整策略

不同点:智能体更系统和完整,人类可能会跳过某些步骤

为什么4k窗口就能达到128k窗口的效果?背后的原理是什么?

图结构有效保存了全局上下文

原子事实高效捕捉关键信息

战略性探索减少了对大窗口的需求

笔记本维持了信息的连贯性

这种方法对于不同类型的长文本都同样有效吗?

适用于结构化程度高的文档

对信息密度较大的文本效果更好

在多跳问题上表现突出

领域特异性会影响效果

如何评估这种方法的可解释性?

探索路径的可追踪性

理性规划的合理性

笔记本内容的完整性

与人类推理过程的对比

决策过程的透明度

GraphReader每个搜索路径限制了10次函数调用,如果遇到特别复杂的文本结构,需要超过10跳才能找到答案,这种情况GraphReader如何处理?

关于10次函数调用的限制:

这确实是我们系统的一个限制。根据表8的统计,大多数问题只需要3-4次调用就能完成。

但对于超复杂结构,我们采用了多路径并行探索策略(从5个初始节点同时开始),这在一定程度上缓解了单路径调用次数的限制。

不过这确实是个需要改进的方向,比如可以根据问题复杂度动态调整调用次数限制。

论文中提到"normalize the key elements as described by Lu et al. (2023)",但没有详细说明具体的规范化方法。如果遇到模糊词、一词多义等情况,GraphReader如何确保规范化的准确性?

关于规范化方法:

确实,这是论文中描述不足的地方。

Lu等人的方法主要处理实体对齐,而对于模糊词和一词多义,我们实际上是依赖LLM在构建原子事实时的上下文理解。

但坦白说,这个过程并不完美。我们在未来工作中计划集成更强大的实体链接和消歧方法。

在构建图时,原子事实的抽取严重依赖于LLM的性能。如果LLM在抽取阶段漏掉了关键信息或产生了错误的原子事实,有什么机制来检测和纠正这些错误吗?

关于原子事实抽取的准确性:

这是个关键问题。

目前我们主要依靠多头验证 - 即一个事实往往会在多个chunk中以不同形式出现。

我们通过分析原子事实的重叠度和一致性来提高可靠性。

但确实缺乏明确的错误检测机制,这是需要改进的地方。

图6中的论文实例看起来相对简单。如果遇到包含隐式逻辑、需要常识推理、或者需要跨段落整合信息的复杂问题,GraphReader如何保证答案的准确性?

关于复杂推理能力:

GraphReader通过图结构和理性规划来处理复杂推理。

根据第3.3节所述,系统会记录探索过程中的发现,并不断反思和更新策略。

但确实,对于需要深度常识推理的问题,现有方法可能不够完善。

论文提到最大chunk size设为2k tokens。当处理长度为256k的文本时,会生成大量chunk。在这种情况下,如何确保相关信息没有被错误地分散到不同chunk中而影响理解?

关于chunk分割问题:

这是我们特别关注的问题。

根据3.2节,我们在分chunk时会考虑段落结构,并通过图结构中节点间的连接来保持信息的连贯性。

原子事实的提取也跨chunk进行,帮助保持语义完整性。

实验结果显示GraphReader在256k长度文本上仍然保持较好性能。但这个结论是基于HotpotWikiQA-mixup数据集得出的,这个数据集是否足够具有代表性?

关于数据集代表性:

坦白说,这是个局限。

虽然HotpotWikiQA-mixup涵盖了不同长度的文本,但确实主要集中在百科类内容。

我们正在其他类型的长文本(如科技文献、法律文档)上进行测试。

表8显示了不同数据集上的函数调用统计,但没有分析失败案例。在那些GraphReader没能正确回答的问题中,是哪个阶段(图构建、路径探索、还是答案推理)出现问题?

关于失败案例分析:

这是论文的疏漏。

实际上,失败主要出现在三种情况:原子事实提取不完整、初始节点选择不当、以及推理链过长超出调用限制。

我们应该在论文中加入这部分分析。

论文提到使用GPT-4来评估recall,但GPT-4本身的判断也可能出错。有没有更客观的方法来评估GraphReader的recall性能?

关于recall评估方法:

这是个合理的质疑。

除了GPT-4评估,我们也用到了F1和EM分数作为客观指标。

但确实需要发展更可靠的评估方法,比如建立人工标注的测试集。

在InitialNode选择阶段,如果预选的5个节点都不是最优起点,会导致后续探索效率低下。有什么机制来动态调整初始节点的选择吗?

关于初始节点选择:

根据3.3.1节,我们确实没有动态调整机制。

这个限制可以通过引入反馈机制来改进,即根据初始探索的结果来调整后续节点的选择。

提示词

关键元素和原子事实提取提示词

您现在是一个智能助手,任务是从长文本中精确提取关键元素和原子事实。

1. 关键元素:对文本叙述至关重要的基本名词(如人物、时间、事件、地点、数字)、动词(如动作)和形容词(如状态、感受)2. 原子事实:最小且不可分割的事实,以简洁的句子呈现。这包括命题、理论、存在、概念,以及隐含要素如逻辑、因果、事件顺序、人际关系、时间线等。

要求:
#####
1. 确保所有识别的关键元素都反映在相应的原子事实中。

2. 应全面提取关键元素和原子事实,尤其是重要且可能被查询的内容,不要遗漏细节。

3. 在可能的情况下,用具体的名词替换代词(例如,将"我""他""她"替换为实际名字)4. 确保提取的关键元素和原子事实与原文使用相同的语言(如英文或中文)5. 输出的关键元素和原子事实总量不应超过1024个标记。

6. 每行答案格式应为:[序号], [原子事实], [关键元素列表,用'|'分隔]
#####

示例:
#####
用户:
一天,一位父亲和他的小儿子......

助手:
1. 一天,一位父亲和他的小儿子正在回家。| 父亲 | 小儿子 | 回家
2. ......
#####

请严格按照上述格式执行。让我们开始。

制定合理计划提示词

作为智能助手,您的主要目标是通过收集文章中的支持事实来回答问题。为了实现这个目标,第一步是基于问题制定合理计划。该计划应概述解决问题的步骤流程,并明确指出制定完整答案所需的关键信息。

示例:
#####
用户:谁的网球生涯更长,丹尼还是爱丽丝?

助手:为了回答这个问题,我们首先需要找到丹尼和爱丽丝的网球生涯长度,如他们的职业生涯起始和退役时间,然后进行比较。
#####

请严格按照上述格式执行。让我们开始。

初始节点选择提示词

作为智能助手,您的主要目标是基于文本中的信息回答问题。为此,已从文本中创建了一个图,包含以下元素:

1. 文本块:原始文本的分段。
2. 原子事实:从文本块中提取的最小不可分割真实信息。
3. 节点:文本中的关键元素(名词、动词或形容词),与来自不同文本块的多个原子事实相关联。

您当前的任务是检查节点列表,目的是从图中选择最相关的初始节点以高效回答问题。您将获得问题、合理计划和节点关键元素列表。这些初始节点很重要,因为它们是搜索相关信息的起点。

要求:
#####
1. 选择起始节点后,通过分配0100的分数评估其与潜在答案的相关性。100分表示与答案高度相关,0分表示相关性最小。

2. 每个选定的起始节点单独成行,并附带其相关性分数。每行格式如下:节点:[节点的关键元素],分数:[相关性分数]3. 请选择至少10个起始节点,确保它们不重复且多样化。

4. 在用户输入中,每行构成一个节点。选择起始节点时,请从提供的节点中进行选择,不要自行创建。您输出的节点必须与用户给出的节点完全对应,措辞一致。
#####

示例:
#####
用户:
问题:{问题}
计划:{合理计划}
节点:{关键元素列表}

助手:{选定节点列表}
#####

最后再次强调,您需要从给定的节点中选择起始节点,且必须与您选择的节点措辞一致。请严格按照上述格式执行。让我们开始。

探索原子事实提示词

作为智能助手,您的主要目标是基于文本中的信息回答问题。为此,已从文本中创建了一个图,包含以下元素:

1. 文本块:原始文本的分段。
2. 原子事实:从文本块中提取的最小不可分割真实信息。
3. 节点:文本中的关键元素(名词、动词或形容词),与来自不同文本块的多个原子事实相关联。

您当前的任务是检查一个节点及其相关的原子事实,目的是确定是否继续查看与这些原子事实对应的文本块。根据问题、合理计划、之前的行动、笔记本内容以及当前节点的原子事实及其对应的块ID,您有以下行动选项:
#####
1. read_chunk(List[ID]):如果您认为与原子事实相关的文本块可能包含回答问题所需的必要信息,请选择此操作。这将使您能够访问更完整和详细的信息。

2. stop_and_read_neighbor():如果您确定所有文本块都缺乏有价值的信息,请选择此操作。
#####

策略:
#####
1. 反思先前的行动,避免重复访问节点或块。
2. 您可以选择同时阅读多个文本块。
3. 原子事实仅覆盖文本块中部分信息,因此即使您认为原子事实与问题的相关性很小,也请尝试阅读文本块以获取更完整的信息。
#####

响应格式:
#####
*更新笔记本*:首先,将当前笔记本与从当前原子事实中获得的关于问题的新见解和发现相结合,创建一个包含更多有效信息的更完整版本的笔记本。

*下一步行动理由*:根据给定的问题、合理计划、之前的行动和笔记本内容,分析如何选择下一步行动。

*选择的行动*read_chunk(List[ID])stop_and_read_neighbor()(这是您从行动选项中选择的操作,采用前面提到的函数调用形式。括号中的形式参数应替换为实际参数。)
#####

最后,再次强调,即使原子事实与问题的相关性很小,您也应该查看文本块以避免遗漏信息。只有当您非常确定给定的文本块与问题无关时,才应选择stop_and_read_neighbor()。请严格按照上述格式执行。让我们开始。

探索文本块提示词

作为智能助手,您的主要目标是基于文本中的信息回答问题。为此,已从文本中创建了一个图,包含以下元素:

1. 文本块:原始文本的分段。
2. 原子事实:从文本块中提取的最小不可分割真实信息。
3. 节点:文本中的关键元素(名词、动词或形容词),与来自不同文本块的多个原子事实相关联。

您当前的任务是评估特定文本块,并确定现有信息是否足以回答问题。根据问题、合理计划、之前的行动、笔记本内容和当前文本块,您有以下行动选项:
#####
1. search_more():如果您认为回答问题所需的基本信息仍然缺失,请选择此操作。

2. read_previous_chunk():如果您认为前一个文本块包含对回答问题有价值的信息,请选择此操作。

3. read_subsequent_chunk():如果您认为后续文本块包含对回答问题有价值的信息,请选择此操作。

4. termination():如果您认为当前获得的信息足以回答问题,请选择此操作。这将允许您总结收集到的信息并提供最终答案。
#####

策略:
#####
1. 反思先前的行动,避免重复访问节点或块。
2. 您只能选择一个操作。
#####

响应格式:
#####
*更新笔记本*:首先,将之前的笔记与从当前文本块中获得的关于问题的新见解和发现相结合,创建一个包含更多有效信息的更完整版本的笔记本。

*下一步行动理由*:根据给定的问题、合理计划、之前的行动和笔记本内容,分析如何选择下一步行动。

*选择的行动*search_more()read_previous_chunk()read_subsequent_chunk()termination()(这是您从行动选项中选择的操作,采用前面提到的函数调用形式。括号中的形式参数应替换为实际参数。)
#####

请严格按照上述格式执行。让我们开始。

探索相邻节点提示词

作为智能助手,您的主要目标是基于文本中的信息回答问题。为此,已从文本中创建了一个图,包含以下元素:

1. 文本块:原始文本的分段。
2. 原子事实:从文本块中提取的最小不可分割真实信息。
3. 节点:文本中的关键元素(名词、动词或形容词),与来自不同文本块的多个原子事实相关联。

您当前的任务是评估当前节点的所有相邻节点,目的是确定是否继续前往下一个相邻节点。根据问题、合理计划、之前的行动、笔记本内容以及当前节点的相邻节点,您有以下行动选项:
#####
1. read_neighbor_node(节点的关键元素):如果您认为任何相邻节点可能包含与问题相关的信息,请选择此操作。注意,您应该一次只关注一个相邻节点。

2. termination():如果您认为没有相邻节点拥有可以回答问题的信息,请选择此操作。
#####

策略:
#####
1. 反思先前的行动,避免重复访问节点或块。
2. 您只能选择一个操作。这意味着您只能选择读取一个相邻节点或选择终止。
#####

响应格式:
#####
*下一步行动理由*:根据给定的问题、合理计划、之前的行动和笔记本内容,分析如何选择下一步行动。

*选择的行动*read_neighbor_node(相邻节点)termination()(这是您从行动选项中选择的操作,采用前面提到的函数调用形式。括号中的形式参数应替换为实际参数。)
#####

请严格按照上述格式执行。让我们开始。

答案推理提示词

作为智能助手,您的主要目标是基于文本中的信息回答问题。为此,已从文本中创建了一个图,包含以下元素:

1. 文本块:原始文本的分段。
2. 原子事实:从文本块中提取的最小不可分割真实信息。
3. 节点:文本中的关键元素(名词、动词或形容词),与来自不同文本块的多个原子事实相关联。

您现在已经从该图的各个起始节点探索了多条路径,在笔记本中记录了每条路径的关键信息。
您的任务现在是分析这些记忆并推理出问题的答案。

策略:
#####
1. 您应该首先分析每个笔记本内容,然后再提供最终答案。
2. 在分析过程中,考虑其他笔记中的补充信息,并采用多数表决策略来解决任何不一致。
3. 在生成最终答案时,确保您考虑了所有可用信息。
#####

示例:
#####
用户:
问题:谁的网球生涯更长,丹尼还是爱丽丝?
不同探索路径的笔记本:
1. 我们只知道丹尼的网球生涯从1972年开始到1990年结束,但我们不知道爱丽丝职业生涯的长度。
2. ......

助手:
分析:
搜索路径1的总结指出丹尼的网球生涯是1990-1972=18年。虽然它没有显示爱丽丝职业生涯的长度,但搜索路径2发现了这个信息,即爱丽丝的网球生涯是15年。因此我们可以得出最终答案,即丹尼的网球生涯比爱丽丝的长。
最终答案:
丹尼的网球生涯比爱丽丝的长。
#####

请严格按照上述格式执行。让我们开始。

评分和阅读提示词

13 - LLM-Rating-1提示词:
约翰阅读了一些文本后,收到了以下关于文本的问题:
{问题文本}
约翰对问题的回答是:
{模型响应文本}
标准答案是:
{参考响应文本}

约翰的回答是否与标准答案一致?
请回答"是""否"。

图14 - LLM-Rating-2提示词:
约翰阅读了一些文本后,收到了以下关于文本的问题:
{问题文本}
约翰对问题的回答是:
{模型响应文本}
标准答案是:
{参考响应文本}

约翰的回答是否与标准答案一致?
请回答"是""是,部分一致""否"。如果约翰的回答与标准答案有任何重叠,回答"是,部分一致"。如果约翰的回答包含了标准答案,回答"是"。如果约翰的回答比标准答案更具体,回答"是"。

图15 - 完整文本阅读提示词:
请阅读以下文段并基于文段回答问题。
文段:
{文段文本}
问题:
{问题文本}

现在请根据文段内容回答这个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/939413.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何一站式计算抗体和蛋白信息

在生物医药研究领域&#xff0c;蛋白质&#xff08;抗体、多肽等&#xff09;的性质计算是理解生命机制、分离/纯化/鉴定/生产蛋白、以及开发蛋白新药的重要研究手段。然而&#xff0c;很多相关功能分散在不同的软件中&#xff0c;十分不方便。鹰谷电子实验记录本InELN一站式内…

物理信息神经网络(PINN)八课时教案

物理信息神经网络&#xff08;PINN&#xff09;八课时教案 第一课&#xff1a;物理信息神经网络概述 1.1 PINN的定义与背景 物理信息神经网络&#xff08;Physics-Informed Neural Networks&#xff0c;简称PINN&#xff09;是一种将物理定律融入神经网络训练过程中的先进方…

gitlab初始化+API批量操作

几年没接触gitlab了&#xff0c;新版本装完以后代码提交到默认的main分支&#xff0c;master不再是主分支 项目有几十个仓库&#xff0c;研发提交代码后仓库地址和之前的发生了变化 有几个点 需要注意 1、修改全局默认分支 2、关闭分支保护 上面修改了全局配置不会影响已经创…

【记录50】uniapp安装uview插件,样式引入失败分析及解决

SassError: Undefined variable: "$u-border-color". 表示样式变量$u-border-color没定义&#xff0c;实际是定义的 首先确保安装了scss/sass 其次&#xff0c;根目录下 app.vue中是否全局引入 <style lang"scss">import /uni_modules/uview-ui/in…

STM32CUBEMX+STM32H743ZIT6+MPU+DMA+UART下发指令对MPU配置管理

实现stm32H7的IAP过程&#xff0c;没有想象中的顺利。 需要解决串口DMA和MPU配置管理。 查看正点原子的MPU管理例程&#xff0c;想自己用串口下发指令&#xff0c;实现MPU打开&#xff0c;读取和写入指令。 中间遇到很多坑&#xff0c;比如串口DMA方式下发指令&#xff0c;没反…

8. 数组拼接

题目描述 现在有多组整数数组&#xff0c;需要将它们合并成一个新的数组。合并规则&#xff0c;从每个数组里按顺序取出固定长度的内容合并到新的数组中&#xff0c;取完的内容会删除掉&#xff0c;如果该行不足固定长度或者已经为空&#xff0c;则直接取出剩余部分的内容放到新…

Chrome 浏览器原生功能截长屏

我偶尔需要截取一些网页内容作为素材&#xff0c;但偶尔内容很长无法截全&#xff0c;需要多次截屏再拼接&#xff0c;过于麻烦。所以记录下这个通过浏览器原生功能截长屏的方案。 注意 这种方案并不是百分百完美&#xff0c;如果涉及到一些需要滚动加载的数据或者悬浮区块&am…

学技术学英文:代码中的锁:悲观锁和乐观锁

本文导读&#xff1a; 1. 举例说明加锁的场景&#xff1a; 多线程并发情况下有资源竞争的时候&#xff0c;如果不加锁&#xff0c;会出现数据错误&#xff0c;举例说明&#xff1a; 业务需求&#xff1a;账户余额>取款金额&#xff0c;才能取钱。 时间线 两人共有账户 …

深度学习之目标检测——RCNN

Selective Search 背景:事先不知道需要检测哪个类别,且候选目标存在层级关系与尺度关系 常规解决方法&#xff1a;穷举法&#xff0c;在原始图片上进行不同尺度不同大小的滑窗&#xff0c;获取每个可能的位置 弊端&#xff1a;计算量大&#xff0c;且尺度不能兼顾 Selective …

数字人在虚拟展厅中的应用方向有哪些?

数字人在虚拟展厅中的应用日益丰富&#xff0c;为参观者带来了前所未有的互动体验。以下是数字人在虚拟展厅中的几大主要应用方向&#xff1a; 1. 智能导览与讲解 在虚拟展厅中&#xff0c;数字人以其独特的魅力担任着导览员的角色。它们不仅为参观者提供精准的信息和指引&am…

WEB开发: 全栈工程师起步 - Python Flask +SQLite的管理系统实现

一、前言 罗马不是一天建成的。 每个全栈工程师都是从HELLO WORLD 起步的。 之前我们分别用NODE.JS 、ASP.NET Core 这两个框架实现过基于WebServer的全栈工程师入门教程。 今天我们用更简单的来实现&#xff1a; Python。 我们将用Python来实现一个学生管理应用&#xff0…

【我的 PWN 学习手札】IO_FILE 之 stdin任意地址写

我们知道&#xff0c;stdin会往“缓冲区”先读入数据&#xff0c;如果我们劫持这个所谓“缓冲区”到其他地址呢&#xff1f;是否可以读入数据到任意地址&#xff1f;答案是肯定的。 注意&#xff01;代码中的“-------”分隔&#xff0c;是为了区分一条调用链上不同代码片段&am…

从 Dify 到 Rill-Flow:大模型应用平台的进化之路

1. 基于 dify 的大模型应用平台构建 近些年&#xff0c;大语言模型领域的高速发展&#xff0c;涌现出了众多优秀的产品&#xff0c;能够解决很多实际的业务场景&#xff0c;大幅提升工作效率。各公司都纷纷搭建起了自己的大模型应用平台&#xff0c;来统一管理各种大语言模型&…

37. Three.js案例-绘制部分球体

37. Three.js案例-绘制部分球体 实现效果 知识点 WebGLRenderer WebGLRenderer 是Three.js中的一个渲染器类&#xff0c;用于将3D场景渲染到网页上。 构造器 WebGLRenderer( parameters : Object ) 参数类型描述parametersObject渲染器的配置参数&#xff0c;可选。 常用…

基于 SSM 框架 Vue 电脑测评系统:赋能电脑品质鉴定

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;作为一个一般的用户都开始注重与自己的信息展示平台&#xff0c;实现基于SSM框架的电脑测评系统在技术上已成熟。本文介绍了基于SSM框架的电脑测评系统的开发全过程。通过分析用户对于基于SSM框架的电脑测评系统的…

二七(vue2-03)、生命周期四个阶段及八个钩子、工程化开发和脚手架、组件注册、拆分组件

1. 生命周期 1.1 生命周期四个阶段 <!-- Vue生命周期&#xff1a;一个Vue实例从 创建 到 销毁 的整个过程。生命周期四个阶段&#xff1a;① 创建 ② 挂载 ③ 更新 ④ 销毁1.创建阶段&#xff1a;创建响应式数据2.挂载阶段&#xff1a;渲染模板3.更新阶段&#xff1a;修改…

Group FLUX - Beta Sprint Essay4

文章目录 I. SCRUMAchievements from yesterday’s stand-up meeting to the presentKey Features Demonstrated in Beta PM ReportBurnup mapRunning image of our current program I. SCRUM Achievements from yesterday’s stand-up meeting to the present Zhong Haoyan: …

c++-----------------类和对象(中)

1.类的默认成员函数 默认的成员函数就是用户没有显示实现&#xff0c;编译器会自动生成的成员函数称为默认的成员函数。一个类我们在不写的情况下编译器会自动生成以下6个默认的成员函数&#xff0c;这6个最重要的是前面4个&#xff0c;后面的了解一下就可以了。默认成员函数很…

Qt中的异步相关类

Qt中的异步相关类 今天在学习别人的项目时&#xff0c;看到别人包含了QFuture类&#xff0c;我没有见过&#xff0c;于是记录一下。 直接在AI助手中搜索QFuture,得到的时Qt中异步相关的类。于是直接查询一下Qt异步中相关的类。 在Qt中&#xff0c;异步编程是一个重要的概念&…

WPF DataTemplate 数据模板

DataTemplate 顾名思义&#xff0c;数据模板&#xff0c;在 wpf 中使用非常频繁。 它一般用在带有 DataTemplate 依赖属性的控件中&#xff0c;如 ContentControl、集合控件 ListBox、ItemsControl 、TabControls 等。 1. 非集合控件中使用 <UserControl.Resources>&l…