面包屑图标 当前位置: 首页
AI资讯
热点详情

检索增强生成与思维链结合的RAT创建方法

AI热点日报
AI热点日报时间:2026-05-30
热点解读

检索增强思维(RAT)融合检索增强生成与思维链提示,通过迭代检索外部知识修正思维链,提升大语言模型推理准确性。实验显示,代码生成、数学推理、创意写作及任务规划性能分别提升13 63%、16 96%、19 2%和42 78%。

```html

检索增强思维(RAT):当推理链条遇上知识检索

论文地址:https://arxiv.org/pdf/2403.05313
Github地址:https://github.com/CraftJarvis/RAT

先抛个问题:一个能写出莎士比亚风格文字、还能像专家一样推理的AI助手,听起来是不是很酷?但问题在于——如果它动不动就编造事实、依赖过时信息,甚至一本正经地胡说八道,那该怎么办?这正是大型语言模型(LLM)当前面临的核心矛盾:流畅有余,可靠不足。

检索增强思维 (RAT) 正是为化解这一矛盾而生。它巧妙地将两种关键技术——检索增强生成(RAG)和思维链(CoT)提示——融为一体,旨在让AI的推理过程既透明又扎实。RAT不仅仅是一个新技术名词,它代表了一种全新的AI推理范式。下面,我们就来把它的来龙去脉彻底拆解一番。

在进入正题之前,先回顾一下提示工程的基础。想象你有一个超智能助手,你给它一个“提示”,相当于给它下达指令——写故事、翻译语言、回答问题,全看你怎么说。提示工程就是教会你如何把这套指令用好,把LLM的潜力榨干。从零样本、少样本,到思维链、指导性提示,每一种技术都有其适用场景。

而RAT,正是站在这些技术肩膀上的新产物。它融合了两股力量:RAG负责注入知识,CoT负责展示推理过程。

检索增强生成(RAG):知识注入器

做数学题时,如果有一个随时可以翻看的公式手册,正确率会不会高很多?RAG扮演的就是这个角色。它允许LLM在推理过程中,从外部知识库(比如百科、论文、代码库)里实时拉取相关信息。这样一来,每一步推理都有事实依据支撑,凭空编造的可能性大幅降低。

思维链(CoT):让思考过程显形

大型语言模型擅长生成文本,但在解决需要逐步推理的复杂问题(比如应用题)时,很容易掉链子。

CoT提示就是针对这个软肋而来的——它鼓励LLM把思考过程“说出来”。不再只给最终答案,而是像数学课上演算那样,把每一步推导都写出来。具体有两种实现方式:

  • 零样本提示:在提示中加上“让我们一步一步思考”这类关键词,引导模型自动拆解步骤。
  • 少样本提示:先给模型看几个正确示范,告诉它“按这个套路走”。

但CoT也有自己的坑。最突出的两个:

  • 模型可能犯错:如果它对主题了解不足,推理链条本身就是错的。
  • 模型可能钻牛角尖:一旦进入错误方向,就很难拉回来。

思维链提示使大型语言模型能够解决复杂的算术、常识和符号推理任务。图中突出展示了思维链推理过程。

少样本提示是给示例,让模型模仿;思维链提示则从头到尾展示推理过程,特别适合需要符号推理和中间步骤的复杂任务。对大模型效果好,对小型模型则可能出现奇怪的推理链条。在某些情况下,也可以用零样本思维链直接上手。

RAT:知识与思维链的结合

检索增强思维(RAT) 的思路其实很直观:先让LLM生成一个零样本的思维链(CoT),然后把这个链条作为“提问”,逐一进行检索增强——从外部资料里找回相关信息,修正当前步骤,再继续下一步。如此迭代,最终答案自然越来越扎实。

实验数据很有说服力:把RAT用在各种基础模型上,长视域生成任务的表现全面飙升。平均来看,代码生成评分提升13.63%,数学推理提升16.96%,创意写作提升19.2%,具体任务规划更是猛增42.78%。

检索增强思维 (RAT) 的管道。给定一个任务提示(在图中表示为 I),RAT 从 LLM 在零样本(“让我们一步一步思考”)中产生的初始分步思维(?1、?2、· · ·、??)开始。由于幻觉,某些思维步骤(例如图中的 ?1)可能存在缺陷。RAT 使用来自外部知识库(表示为 Library)的 RAG 迭代地修改每个思维步骤。

上图把RAT的流水线讲得很清楚。关键的模块和流程如下:

步骤0:初稿

  • 向LLM提交任务提示。图中示例是“如何在Minecraft中获取钻石”。

步骤1-步骤n:迭代细化

  • LLM根据提示生成初始回答(零样本CoT),但这个回答往往有缺陷。
  • RAT引入CoT提示,让LLM通过解释每一步的理由(Ti),反复修正自己的答案。

关键组件

  • 任务提示:起点,告诉LLM要解决什么问题。
  • LLM:就是大语言模型本身。
  • 初始CoT与修订CoT(Ti-1、Ti):迭代过程中初始和修正后的思维链。
  • 知识库:LLM通过RAG访问的外部知识来源。
  • 增强修订:模型根据检索到的信息和之前的解释,逐步完善思维链(Ti)。

RAT具体流程

  1. 初始响应:LLM根据提示生成初始回答(T0)。
  2. 解释:LLM解释初始回答背后的原因(T1-1)。
  3. 检索:RAT根据这个解释,从知识库中拉取相关信息。
  4. 修订:LLM把检索到的信息整合进去,修正思维链(T1)。
  5. 重复:重复步骤2-4,直到获得满意答案(Tn)。

下面这张图展示了RAT如何通过结合外部知识检索和逐步解释,解决LLM在复杂推理任务上的瓶颈。

图 | 上:不同 LLM 推理方法在创意生成任务上的示例。红色文本表示 LLM 生成的文本中的错误或错觉,而绿色文本表示正确生成。没有 RAG 的方法通常会产生带有幻觉的不正确信息,经典 RAG 与结构松散的检索内容高度相关,而 RAT 生成的文本在准确性和完整性方面表现最佳。下:不同 LLM 推理方法在复杂的具身规划、数学推理、代码生成和创意生成任务上的定量性能比较。我们的 RAT 在所有任务上的表现都优于所有基线。

RAT核心代码

https://github.com/CraftJarvis/RAT/blob/main/app/gradio_app.py

代码实现如下(关键函数 rat(question)):

def rat(question):
    print(f"{datetime.now()} [INFO] Generating draft...")
    draft = get_draft(question)
    print(f"{datetime.now()} [INFO] Return draft.")
    # print(f"##################### DRAFT #######################")
    # print(draft)
    # print(f"#####################  END  #######################")

    print(f"{datetime.now()} [INFO] Processing draft ...")
    # draft_paragraphs = split_draft(draft)
    draft_paragraphs = split_draft_openai(question, draft)
    print(f"{datetime.now()} [INFO] Draft is splitted into {len(draft_paragraphs)} sections.")
    answer = ""
    for i, p in enumerate(draft_paragraphs):
        # print(str(i)*80)
        print(f"{datetime.now()} [INFO] Revising {i+1}/{len(draft_paragraphs)} sections ...")
        answer = answer + 'nn' + p
        # print(f"[{i}/{len(draft_paragraphs)}] Original Answer:n{answer.replace(newline_char, ' ')}")

        # query = get_query(question, answer)
        print(f"{datetime.now()} [INFO] Generating query ...")
        res = run_with_timeout(get_query_wrapper, 30, question, answer)
        if not res:
            print(f"{datetime.now()} [INFO] Generating query timeout, skipping...")
            continue
        else:
            query = res
        print(f">>> {i}/{len(draft_paragraphs)} Query: {query.replace(newline_char, ' ')}")

        print(f"{datetime.now()} [INFO] Crawling network pages ...")
        # content = get_content(query)
        res = run_with_timeout(get_content_wrapper, 30, query)
        if not res:
            print(f"{datetime.now()} [INFO] Parsing network pages timeout, skipping ...")
            continue
        else:
            content = res

        LIMIT = 2
        for j, c in enumerate(content):
            if  j >= LIMIT: # limit rge number of network pages
                break
            print(f"{datetime.now()} [INFO] Revising answers with retrieved network pages...[{j}/{min(len(content),LIMIT)}]")
            # answer = get_revise_answer(question, answer, c)
            res = run_with_timeout(get_revise_answer_wrapper, 30, question, answer, c)
            if not res:
                print(f"{datetime.now()} [INFO] Revising answers timeout, skipping ...")
                continue
            else:
                diff_html = generate_diff_html(answer, res)
                display(HTML(diff_html))
                answer = res
            print(f"{datetime.now()} [INFO] Answer revised [{j}/{min(len(content),3)}]")
        # print(f"[{i}/{len(draft_paragraphs)}] REVISED ANSWER:n {answer.replace(newline_char, ' ')}")
        # print()
    res = run_with_timeout(get_reflect_answer_wrapper, 30, question, answer)
    if not res:
        print(f"{datetime.now()} [INFO] Reflecting answers timeout, skipping next steps...")
    else:
        answer = res
    return draft, answer

代码逻辑可以拆成几个核心步骤:

  1. 生成初始草稿:用GPT-3.5-turbo生成一个初始答案(draft),基于用户问题,但可能包含错误或不完整信息。
  2. 分割草稿:把草稿切成多个段落(draft_paragraphs),每个段落对应一个完整思路,方便逐段修正。
  3. 逐段修正:对每个段落,生成一个检索查询(query),从网络拉取相关信息,然后根据检索内容修正当前段落。一个段落允许拉取最多2个网页内容。
  4. 结构化输出:修正完成后,为最终答案添加标题和副标题。
  5. 返回结果:返回初始草稿和修正后的最终答案。

举个例子,假设用户问“介绍爱因斯坦的生平和成就”:

  • 初始草稿生成后,分割成“早期生活”“科学成就”“晚年生活”三段。
  • 对每一段分别生成检索查询(比如“爱因斯坦的早期生活”),拉取信息,依次修正。
  • 最后输出带标题和副标题的完整答案。

代码中用到的一组提示语如下:

prompt1 = """
尝试用逐步的思考来回答这个问题指令,并使答案更具结构化。
使用 `nn` 来将答案分成几个段落。
直接响应指令。除非被要求,否则不要在答案中添加额外的解释或介绍。
"""

prompt2 = """
我想验证给定问题的内容准确性,特别是最后几句话。
请用相应的问题总结内容。
这个总结将被用作必应搜索引擎的查询。
查询应该简短,但需要足够具体,以确保必应能够找到相关知识或页面。
您还可以使用搜索语法,使查询足够简短和清晰,以便搜索引擎能够找到相关的语言数据。
尽量使查询与内容中的最后几句话尽可能相关。
**重要**
直接输出查询。除非被要求,否则不要在答案中添加额外的解释或介绍。
"""

prompt3 = """
我想根据在维基百科页面上学到的相关文本来修订答案。
你需要检查答案是否正确。
如果你在答案中发现了错误,请修订答案使其更好。
如果你发现有些必要的细节被忽略了,请根据相关文本添加这些细节,以使答案更加可信。
如果你发现答案是正确的且不需要添加更多细节,请直接输出原始答案。
**重要**
尽量保持修订后答案的结构(多个段落及其子标题),使其更具结构性以便理解。
用 `nn` 字符分隔段落。
直接输出修订后的答案。除非被要求,否则在修订后的答案中不要添加额外的解释或声明。
"""

RAT 的优势

  • 提高准确性:让LLM能实时访问外部知识并迭代修正推理,有效减少错误,生成更靠谱的解决方案。
  • 增强可解释性:每一步推理都带解释,整个过程像白盒一样透明,便于定位问题、改进模型。
  • 更强的长窗口推理能力:对于需要多步骤、高复杂度的任务,这种透明迭代的方式尤其管用,推理链条越清晰,最终结果越可靠。
```
热点追踪提示词
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:检索增强生成与思维链结合的RAT创建方法要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
来源:https://www.53ai.com/news/RAG/2025010487529.html
ai 人工智能

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关热点
AI热点2026-07-19 22:31
帝奥微电子发布1pA超低偏置电流运算放大器新品

帝奥微电子推出DIO20182双通道运算放大器,输入偏置电流低至1pA,静态电流每通道仅300nA,支持1 4V至5 5V宽电压范围,适用于智能手表等便携设备中微弱光电流信号放大,实现血氧饱和度精准检测。

AI热点2026-07-19 22:31
焦虑的企服人抱团治疗内耗实用经验

在企服行业对SaaS的争议中,79%从业者依然看好市场前景。成本压力主要来自拓客、履约和回款,这导致了“二分苦八分甜”的格局。为了缓解焦虑,需要采取具体行动,通过云化与协同生态来重塑商业模式,从而减少内耗,实现更健康的增长。

AI热点2026-07-19 22:30
Coze开源后我用LLM与OCR打造文档智能问答Agent

基于Coze平台,结合TextIn专有模型的OCR解析能力与DeepSeek大语言模型的语义理解,构建了零代码文档智能问答Agent。该方案可高效处理合同审核、技术支持等场景,通过工作流实现文档上传、结构解析与精准问答,提升信息检索效率。

AI热点2026-07-19 22:30
字节开源扣子助力企业数字化转型新机遇

字节开源AI开发平台扣子,具备低门槛、多模态交互和字节生态融合优势,支持私有化部署与深度定制,助力企业降本增效、保障数据安全,成为数字化转型新引擎。

延伸阅读