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

检索增强生成 和思维链 结合: 如何创建检索增强思维链 (RAT)?

论文地址:https://arxiv.org/pdf/2403.05313

Github地址:https://github.com/CraftJarvis/RAT

想象一下,一个人工智能助手可以像莎士比亚一样写作,像专家一样推理。这听起来很了不起,对吧?但是,如果这个助手有时难以确保事实准确性,依赖过时的信息或只是编造事实,该怎么办?

检索增强思维 (RAT) 是一种创新性的方法,它结合了两种关键技术:检索增强生成 (RAG) 和思维链 (CoT) 提示。大型语言模型 (LLM) 因其模仿人类写作和流畅回答问题的能力而变得流行。但有时,他们的回答需要以现实世界的知识为基础。RAT 通过提供一种革命性的人工智能推理方法来解决这个问题。让我们深入研究并了解 RAT 的代码!

在我们深入讨论之前,让我们先把整个提示分解一下。想象一下,你有这个超酷的人工智能助手,提示语是你用来告诉它你想要什么的目的。你可以让它为你写一个故事,翻译一种语言,或者以一种非常有信息量的方式回答一个问题,这一切都是为了给大模型一个清晰明确的提示。

最酷的部分是:提示工程让你能够激发大模型的全部潜力。你可以用它做各种各样的事情,从写出绝妙的诗歌到解决超级复杂的问题。此外,甚至还有一些高级技术,如一次性、零次、少量、思维链、指导性和迭代性提示,每种技术都适用于简单的任务和复杂的多步骤流程。

现在,我们来谈谈 RAT,这是一种结合了两种强大技术的新方法:检索增强生成 (RAG) 和思维链 (CoT)。让我们探索这两种技术如何将 大模型推理推理提升到新的高度。

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

想象一下,一个 LLM 正在研究一道数学题。RAG 就像一个乐于助人的导师。它允许 LLM 在推理过程中从外部来源(如公式或定理)获取相关信息。这确保了 LLM 的步骤以事实知识为基础,从而减少了出现奇思妙想解决方案的可能性。

思维链 (CoT):让思考变得可见

思路链提示:帮助大型语言模型展示其工作成果

大型语言模型 (LLM) 擅长生成文本,但它们在解决需要逐步推理的复杂问题(如解决文字问题)时会遇到困难。

CoT 提示通过鼓励 LLM 解释他们的想法来解决这个问题。LLM不只是给出最终答案,而是通过将问题分解为更小的步骤来展示其“工作”。这就像在数学课上展示你的计算一样。

有两种方法可以让 LLM 使用 CoT 提示:

  • 零次提示:我们在提示本身中使用特殊的单词或短语,例如“让我们一步一步思考”,以促使 LLM 解释其推理。
  • 少量提示:我们向 LLM 展示一些如何解决类似问题的例子,其中清楚地解释了解决步骤。

然而,CoT 提示也存在一些挑战。

  • LLM 可能会犯错误:如果他们对主题没有足够的了解,他们的推理步骤可能会错误。
  • LLM 可能会陷入错误的想法:有时,他们可能会提出不基于现实的解释。

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

少量提示会给出一些示例来帮助语言模型理解它应该做什么,而思维链提示则会从头到尾展示逐步推理。这有助于完成需要符号推理和中间步骤的复杂任务。它最适合较大的模型,而较小的模型可能会产生奇怪的思维链并且不太精确。在某些情况下,您可以使用零次思维链提示而不显示中间步骤。

RAT:知识与思维链的结合

检索增强思维 (RAT) 是一种简单但有效的提示方法,它将思路链 (CoT) 提示与检索增强生成 (RAG) 相结合,以处理长窗口推理和生成问题。

因此,LLM 生成零样本思维链 (CoT),并与 RAG 合并。使用这些想法作为询问,对其进行因果修正并逐步发展出答案。

使用信息检索迭代修改思维链可显著增强大型语言模型在处理长视域生成任务时的推理和生成能力。这种方法还大大减少了幻觉的发生。我们提出的方法称为检索增强思维 (RAT),它涉及使用从相关来源检索到的信息逐一修改每个思维步骤。这包括任务查询,以及生成初始零样本 CoT 后的当前和过去思维步骤。

通过将 RAT 应用于各种基础模型,我们发现它们在各种长视界生成任务上的表现都有显著提升。平均而言,代码生成评分相对提高 13.63%,数学推理评分提高 16.96%,创意写作评分提高 19.2%,具体任务规划评分提高 42.78%。

在这里插入图片描述

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

该图概述了检索增强思维 (RAT) 流程,这是一种促使大型语言模型 (LLM) 提高其在长窗口任务中的推理能力的方法。以下是关键模块的原理:

步骤 0:初稿

  • 向 LLM 提出任务提示。
  • 该示例展示了有关在 Minecraft 中获取钻石的提示。

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

  • LLM 根据对提示的理解生成初始响应(Zero CoT)。由于缺乏具体信息,这可能会存在缺陷。
  • RAT 结合了 CoT 提示,其中 LLM 通过解释每个步骤的理由 (Ti) 来反复修改其响应。

关键组件

  • 任务提示:这是起点,为 LLM 提供要解决的问题。
  • LLM:这代表大型语言模型本身。
  • 初始 CoT(Ti-1、Ti):这些是 LLM 在迭代过程中的初始和修订的思维链。
  • 知识库:这象征着 LLM 可以通过检索增强生成 (RAG) 访问的外部知识库。
  • 增强修订:这指的是 LLM 如何根据检索到的信息和先前的解释来完善其思维链 (Ti)。

RAT 流程

  1. 初始响应: LLM 根据提示 (T0) 生成初始响应。
  2. 解释: LLM 解释了初步回应 (T1-1) 背后的原因。
  3. 检索: RAT 根据解释从外部知识库(Library)检索相关信息。
  4. 修订: LLM 通过整合检索到的信息来修订其思维链 (T1)。
  5. 重复:重复步骤 2-4,直到 LLM 得到满意的解决方案 (Tn)。

下图强调了 RAT 如何通过结合外部知识检索和逐步解释来解决 LLM 在复杂推理任务中的局限性。

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

RAT核心代码

https://github.com/CraftJarvis/RAT/blob/main/app/gradio_app.py
RAT实现如下:

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 + '\n\n' + 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...")continueelse:query = resprint(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 ...")continueelse:content = resLIMIT = 2for j, c in enumerate(content):if  j >= LIMIT: # limit rge number of network pagesbreakprint(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 ...")continueelse:diff_html = generate_diff_html(answer, res)display(HTML(diff_html))answer = resprint(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 = resreturn draft, answer
  1. 生成初始草稿

    • 使用 GPT-3.5-turbo 生成一个初始的草稿答案(draft)。
    • 草稿答案是基于用户输入的问题生成的,可能包含一些错误或不完整的信息。
  2. 分割草稿

    • 将草稿答案分割成多个段落(draft_paragraphs),每个段落包含一个完整的思路。
    • 分割的目的是为了逐段修正和优化答案。
  3. 逐段修正答案

    • 对每个段落,生成一个检索查询(query),用于从网络中检索相关信息。
    • 根据检索到的内容,修正当前段落的答案。
    • 重复这一过程,直到所有段落都修正完毕。
  4. 结构化输出

    • 最后,为修正后的答案添加标题和副标题,使其更具结构性。
  5. 返回结果

    • 返回初始草稿和修正后的最终答案。

示例流程
假设用户输入的问题是:“介绍爱因斯坦的生平和成就。”

  1. 生成初始草稿

    • GPT-3.5-turbo 生成一个初始答案,可能包含一些不准确的信息。
  2. 分割草稿

    • 将初始答案分割成多个段落,例如:
      • 段落1:爱因斯坦的早期生活。
      • 段落2:爱因斯坦的科学成就。
      • 段落3:爱因斯坦的晚年生活。
  3. 逐段修正

    • 对每个段落生成检索查询,例如:
      • 查询1:“爱因斯坦的早期生活”。
      • 查询2:“爱因斯坦的科学成就”。
      • 查询3:“爱因斯坦的晚年生活”。
    • 根据检索结果修正每个段落的内容。
  4. 结构化输出

    • 为修正后的答案添加标题和副标题,例如:
      • 标题:爱因斯坦的生平和成就
      • 副标题1:早期生活
      • 副标题2:科学成就
      • 副标题3:晚年生活
  5. 返回结果

    • 返回初始草稿和修正后的最终答案。

其中用到的一些提示语如下:

prompt1 = """
尝试用逐步的思考来回答这个问题\指令,并使答案更具结构化。
使用 `\n\n` 来将答案分成几个段落。
直接响应指令。除非被要求,否则不要在答案中添加额外的解释或介绍。
"""prompt2 = """
我想验证给定问题的内容准确性,特别是最后几句话。
请用相应的问题总结内容。
这个总结将被用作必应搜索引擎的查询。
查询应该简短,但需要足够具体,以确保必应能够找到相关知识或页面。
您还可以使用搜索语法,使查询足够简短和清晰,以便搜索引擎能够找到相关的语言数据。
尽量使查询与内容中的最后几句话尽可能相关。
**重要**
直接输出查询。除非被要求,否则不要在答案中添加额外的解释或介绍。
"""prompt3 = """
我想根据在维基百科页面上学到的相关文本来修订答案。
你需要检查答案是否正确。
如果你在答案中发现了错误,请修订答案使其更好。
如果你发现有些必要的细节被忽略了,请根据相关文本添加这些细节,以使答案更加可信。
如果你发现答案是正确的且不需要添加更多细节,请直接输出原始答案。
**重要**
尽量保持修订后答案的结构(多个段落及其子标题),使其更具结构性以便理解。
用 `\n\n` 字符分隔段落。
直接输出修订后的答案。除非被要求,否则在修订后的答案中不要添加额外的解释或声明。
"""

RAT 的优势

  • 提高准确性:通过允许 LLM 访问外部知识并改进其推理,RAT 有助于减少错误并生成更准确的解决方案。
  • 增强的可解释性:带有解释的迭代过程可以深入了解 LLM 的思维过程,从而更容易识别和解决任何问题。
  • 更强的长窗口推理能力: RAT 对于需要多步骤的复杂任务特别有益,因为推理透明度至关重要。

参考资料

  • How Retrieval-Augmented Generation (RAG) and Chain-of-Thought (CoT) Create Retrieval-Augmented-Thought(RAT)?
  • 检索增强思考 RAT(RAG+COT):提升 AI 推理能力的强大组合 原创
  • 【LLM-RAG】RAT:检索增强思维提示实现上下文感知推理
  • 将RAG与CoT结合起来的技术,RAT减轻长文本生成出现的幻觉问题
  • 【AI大模型应用开发】RAT原理与实现:又是一个提高大模型生成能力的方法(附完整代码)

相关文章:

检索增强生成 和思维链 结合: 如何创建检索增强思维链 (RAT)?

论文地址:https://arxiv.org/pdf/2403.05313 Github地址:https://github.com/CraftJarvis/RAT 想象一下,一个人工智能助手可以像莎士比亚一样写作,像专家一样推理。这听起来很了不起,对吧?但是&#xff0…...

第四届电子信息与通信工程国际学术会议(EICE 2025)

第四届电子信息与通信工程国际学术会议(EICE 2025)定于2025年1月10日至12日在中国广州举行。大会交流全球相关领域科技学术最新发展趋势,链接重点领域国内外顶尖、活跃、最新学术资源,通过经验分享和智慧碰撞,推动科研…...

Hbuilder ios 离线打包sdk版本4.36,HbuilderX 4.36生成打包资源 问题记录

1、打包文档地址https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios.html#%E9%85%8D%E7%BD%AE%E5%BA%94%E7%94%A8%E7%89%88%E6%9C%AC%E5%8F%B7 2、配置应用图标 如果没有appicon文件,此时找到 Assets.xcassets 或者 Images.xcassets(看你sdk引入的启动文件中…...

HarmonyOS开发:传参方式

一、父子组件传参 1、父传子(Prop方式) 父组件代码 Entry Component struct ParentComponent {State parentMessage: string Hello from Parent;build() {Column() {ChildComponent({ message: this.parentMessage });}} } 子组件代码 Component s…...

Tomcat(116) 如何在Tomcat中解决缓存问题?

在Tomcat中解决缓存问题涉及多个方面的优化和处理,包括优化缓存配置、监控缓存状态、处理缓存失效和一致性问题等。以下是详细的步骤和代码示例,帮助你在Tomcat中解决缓存问题。 1. 优化缓存配置 Tomcat内置了一些静态资源的缓存机制,可以通…...

2.STM32F407ZGT6-外部中断

参考: 1.正点原子。 前言: MCU最重要的一个领域–中断。总结下嵌套向量和外部中断的概念。达到: 1.NVIC是什么,了解中断的整体管理理念。 2.中断里面最简单的外部中断,怎么配置处理。 3.使用STM32CubeMX配置外部中断的…...

C# 之某度协议登录,JS逆向,手机号绑定,获取CK

.NET兼职社区 .NET兼职社区 .NET兼职社区 .NET兼职社区 有需要指导,请私信我留言V或者去社区找客服。...

0基础学前端-----CSS DAY12

视频参考:B站Pink老师 今天是CSS学习的第十二天,今天开始的笔记对应Pink老师课程中的CSS第七天的内容。 本节重点:CSS高级技巧 本章目录 本节目标1. 精灵图1.1 为什么需要精灵图1.2 精灵图使用案例:拼出自己的名字 2. 字体图标2.…...

STM32——系统滴答定时器(SysTick寄存器详解)

文章目录 1.SysTick简介2.工作原理3.SysTick寄存器4.代码延时逻辑5.附上整体代码6.一些重要解释 1.SysTick简介 Cortex-M处理器内集成了一个小型的名为SysTick(系统节拍)的定时器,它属于NVIC的一部分,且可以产生 SysTick异常(异常类型#15)。SysTick为简单的向下计数的24位计数…...

HTML5 弹跳动画(Bounce Animation)详解

HTML5 弹跳动画(Bounce Animation)详解 弹跳动画是一种动态效果,使元素在出现或消失时看起来像是在跳动。这种效果可以通过 CSS 动画或 JavaScript 来实现,增强用户体验。 1. 使用 CSS 实现弹跳动画 可以使用 CSS 的 keyframes…...

Python 模拟登录网页,或者编写爬虫时模拟登录的详细总结

参考 Python模拟登陆网页的三种方法_python模拟登录-CSDN博客 python-模拟登陆多种方法总结_python模拟登录-CSDN博客 Python模拟登录的几种方法_实现模拟登录的方式有哪些?-CSDN博客 Python爬虫——模拟登录_python 模拟登录-CSDN博客 Python3 爬虫 模拟登录_python模拟登录网…...

若依框架简介

若依(RuoYi)框架是一个基于Java语言的后台管理系统快速开发框架,它结合了多种前端和后端技术,提供了高效的开发工具。以下是对若依框架的详细解析: 一、技术架构 后端:若依框架后端采用了Spring Boot、My…...

Linux中rsync命令使用

一、rsync简介 rsync 是一种高效的文件复制和同步工具,常用于在本地或远程计算机之间同步文件和目录 主要特性增量同步:rsync 会检测源和目标文件之间的差异,只传输发生变化的部分,而不是重新传输整个文件。这样就能有效减少数据…...

opencv 学习(1)

文章目录 opencv导学部分opencv的作用ffmpeg和 opencv的关系opencv的未来 计算机视觉是什么? opencv导学部分 opencv的作用 1 : 目标识别 人脸识别 车辆识别 2 : 自动驾驶技术 – 计算机视觉 进行车道的检测 3 : 医学图像分析 通过分析光片 来分析人到底得了什么病…...

中高级运维工程师运维面试题(十一)之 Docker

目录 往期回顾前言基础知识1. 什么是 Docker?2. Docker 的核心组件有哪些?3. Docker 镜像和容器有什么区别?4. 什么是 Dockerfile? 高级知识5. 什么是多阶段构建?如何使用?6. Docker 网络有哪些模式&#x…...

Kafka如何实现顺序消费?

Kafka的消息是存储在指定的topic中的某个partition中的。并且一个topic是可以有多个partition的。同一个partition中的消息是有序的,但是跨partition,或者跨topic的消息就是无序的了。 为什么同一个partition的消息是有序的? 因为当生产者向某个parti…...

通过 ulimit 和 sysctl 调整Linux系统性能

目录 一:资源限制管理工具:ulimit1、ulimit 作用介绍2、ulimit 常用选项3、ulimit 配置文件 二:内核参数调整工具:sysctl1、sysctl 作用介绍2、sysctl 常用选项3、sysctl 配置文件 一:资源限制管理工具:uli…...

pandas基础使用

pandas基础使用 基本介绍 类似于字典形式的numpy,可以给它的不同行和不同列进行重命名。 import numpy as np import pandas as pd # 创建一个序列 s pd.Series([1,4,True,np.nan,55.0])创建date format日期矩阵 import numpy as np import pandas as pd dates…...

2024.1.5总结

今日不开心:这周本来想花点时间学习的,没想到全都花在刷视频,外出消费去了。 今日思考: 1.找对象这件事确实不能强求,顺其自然吧,单身和不单身,其实,各有各的利弊。在一次坐地铁的过程中,我一…...

解释一下:运放的输入偏置电流

输入偏置电流 首先看基础部分:这就是同相比例放大器 按照理论计算,输入VIN=0时,输出VOUT应为0,对吧 仿真与理论差距较大,有200多毫伏的偏差,这就是输入偏置电流IBIAS引起的,接着看它的定义 同向和反向输入电流的平均值,也就是Ib1、Ib2求平均,即(Ib1+Ib2)/2 按照下面…...

Federation机制的实现

1.关闭Hadoop的HDFS和YARN,依次执行“stop-yarn.sh”和“stop-dfs.sh”命令关闭Hadoop的YARN和HDFS。 2.删除3台虚拟机上的临时文件: 3.修改hdfs-site.xml配置文件,进入虚拟机liumengting1的/export/servers/hadoop-3.3.4/etc/hadoop目录&…...

120.Jenkins里的Pipeline Script

目录 1. **Declarative Pipeline** 主要部分 示例 2. **Scripted Pipeline** 主要部分 示例 3. **常用指令和功能** 环境变量 工具管理 文件操作 构建触发器 并行执行 异常处理 用户交互 4.**两种类型的特点** 1. **声明式 Pipeline (Declarative Pipeline)** 中…...

SpringBoot3-整合WebSocket指南

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ SpringBoot3-整合WebSocket指南 1. 什么是WebSocket?2. 环境准备2.1 项目依赖 3. WebSocket配置3.1 WebSocket配置类3.2 自定义WebSocket处理器 4. 控制器5. 前端实现5.…...

【npm依赖包介绍】借助rimraf依赖包,在用npm run build构建项目时,清空dist目录,避免新旧混合

文章目录 背景如何使用附上rimraf的介绍和说明主要作用使用场景安装使用示例异步删除同步删除 参考资料 背景 在npm run build时,一般都会清空项目中已有的dist目录再构建,避免新旧混合。 如何使用 可以简单使用rimraf这个npm依赖包。 目前rimraf的最…...

python学opencv|读取图像(二十四)使用cv2.putText()绘制文字进阶-倾斜文字

【1】引言 前述学习进程中,我们已经掌握了pythonopencv绘制文字的基本技能,相关链接为: python学opencv|读取图像(二十三)使用cv2.putText()绘制文字-CSDN博客 在这里,我们使用不同的字体、线条颜色和线…...

【简博士统计学习方法】第1章:3. 统计学习方法的三要素

3. 统计学习方法的三要素 3.1 监督学习的三要素 3.1.1 模型 假设空间(Hypothesis Space):所有可能的条件概率分布或决策函数,用 F \mathcal{F} F表示。 若定义为决策函数的集合: F { f ∣ Y f ( X ) } \mathcal{F…...

“AI智慧语言训练系统:让语言学习变得更简单有趣

大家好,我是你们的老朋友,一个热衷于探讨科技与教育结合的产品经理。今天,我想和大家聊聊一个让语言学习变得不再头疼的话题——AI智慧语言训练系统。这个系统可是我们语言学习者的福音,让我们一起来揭开它的神秘面纱吧&#xff0…...

机器学习笔记 - 单幅图像深度估计的最新技术

1、深度估计简述 单眼深度估计是一项计算机视觉任务,AI 模型从单个图像中预测场景的深度信息。模型估计场景中对象从一个照相机视点的距离。单目深度估计已广泛用于自动驾驶、机器人等领域。深度估计被认为是最困难的计算机视觉任务之一,因为它要求模型理解对象及其深度信息之…...

洛谷:P1540 [NOIP2010 提高组] 机器翻译

[NOIP2010 提高组] 机器翻译 题目背景 NOIP2010 提高组 T1 题目描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于…...

2025第2周 | JavaScript中的函数的参数默认值和剩余参数

目录 1. 函数的默认值1.1 ES5的时候默认值写法1.2 es6的默认值1.3 babel转换之后1.4 有默认值的参数建议放到最后1.5 有默认值的函数length属性 2. 参数为对象时默认值及解构2.1 默认值和解构一起使用2.2 默认值为一个空对象 3. 剩余参数3.1 剩余参数必须放到最后3.2 剩余参数和…...

Unity学习之UGUI(三)

十二、Slider 1、作用 Slider是滑动条组件,是UGUI中用于处理滑动条相关交互的关键组件 创建Slider默认包括4个对象 父对象:Slider组件依附的对象 子对象:背景图,进度图,滑动块三组对象 2、主要参数 3、代码控制 voi…...

分享3个国内使用正版GPT的网站【亲测有效!2025最新】

1. molica 传送入口:https://ai-to.cn/url/?umolica 2. 多帮AI 传送入口:https://aigc.openaicloud.cn?inVitecodeMYAAGGKXVK 3. 厉害猫 传送入口:https://ai-to.cn/url/?ulihaimao...

ffmpeg-avio实战:打开本地文件或者网络直播流dome

使用ffmpeg打开打开本地文件或者网络直播流的一个小dome。流程产靠ffmpeg4.x系列的解码流程-CSDN博客 #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libavformat/avio.h> #include <libavutil/file.h> #include &l…...

三维管线管网自动化建模工具MagicPipe3D V3.6.0

经纬管网建模系统MagicPipe3D&#xff0c;本地离线参数化构建地下管网三维模型&#xff08;包括管道、接头、附属设施等&#xff09;&#xff0c;输出标准3DTiles、Obj模型等格式&#xff0c;支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析。欢迎…...

设计基于检索增强生成的个性化语言模型(RAG-based LLM)

设计基于检索增强生成的个性化语言模型&#xff08;RAG-based LLM&#xff09; 引言 在当今快速发展的自然语言处理技术中&#xff0c;生成式预训练模型&#xff08;LLM&#xff09;对个性化和可靠结果的需求不断增加。为了满足这种需求&#xff0c;基于检索增强生成&#xf…...

Oracle Dataguard(主库为单节点)配置详解(5):使用 rman 复制技术(DUPLICATE)同步主库到备库

Oracle Dataguard&#xff08;主库为单节点&#xff09;配置详解&#xff08;5&#xff09;&#xff1a;使用 rman 复制技术&#xff08;DUPLICATE&#xff09;同步主库到备库 目录 Oracle Dataguard&#xff08;主库为单节点&#xff09;配置详解&#xff08;5&#xff09;&am…...

119.使用AI Agent解决问题:Jenkins build Pipeline时,提示npm ERR! errno FETCH_ERROR

目录 1.Jenkins Build时的错误 2.百度文心快码AI智能体帮我解决 提问1&#xff1a;jenkins中如何配置npm的源 提问2&#xff1a;jenkins pipeline 类型为pipeline script from SCM时&#xff0c;如何配置npm源 3.最终解决方法-Jenkinsfile的修改 4.感触 1.Jenkins Build时…...

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测 目录 回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 一、极限学习机&#xff08;ELM&#xff09; 极限学习机是一种单层前馈神经网络&#xff0c;具有训练速…...

服务器漏洞修复解决方案

漏洞1、远程桌面授权服务启用检测【原理扫描】 Windows Remote Desktop Licensing Service is running: Get Server version: 0x60000604 1、解决方案&#xff1a;建议禁用相关服务避免目标被利用 方法一&#xff1a;使用服务管理器 打开“运行”对话框&#xff08;WinR&am…...

Couldn‘t resolve host name for http://mirrorlist.centos.org

【问题】 在CentOS8执行sudo yum update -y 软件包更新的时候报错 Errors during downloading metadata for repository appstream:- Curl error (6): Couldnt resolve host name for http://mirrorlist.centos.org/?release8-stream&archx86_64&repoAppStream&…...

Vue2:el-table中的文字根据内容改变颜色

想要实现的效果如图,【级别】和【P】列的颜色根据文字内容变化 1、正常创建表格 <template><el-table:data="tableData"style="width: 100%"><el-table-column prop="id" label="ID"/> <el-table-column …...

C++静态变量的使用方法?C++静态变量占用内存情况?拷贝构造函数会拷贝哪些内容?const使用注意

1.静态变量的使用 函数中使用&#xff1a;静态变量初次声明并定义作为初始值&#xff0c;后续再次运行函数&#xff0c;基于上次的结果累加类中&#xff1a;类内声明&#xff0c;类外实现&#xff08;如声明为const&#xff0c;特殊情况&#xff0c;可以类内直接声明时定义&am…...

Linux初识——基本指令

我们在linux下输入各种指令&#xff0c;其实就相当于在windows中的相关操作&#xff0c;比如双击&#xff0c;新建文件夹等。 以下是相关基本指令基本用法 一.ls&#xff08;显示当前目录下的所有文件和目录&#xff09; 那如何显示当前目录&#xff08;我们所在的位置&…...

python 实现贪心算法(Greedy Algorithm)

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取当前最优的选择&#xff0c;希望通过局部最优解达到全局最优解的算法设计方法。以下是使用Python实现贪心算法解决几个经典问题的示例&#xff1a; 1. 活动选择问题&#xff08;Activity Selection…...

设计形成从业务特点到设计模式的关联

规范和指引在应用架构、数据架构等各架构方向上形成规范性约束指导。同一个决策要点、架构单元在统一的架构原则指导下&#xff0c;会因业务特点差异有不同的实现&#xff0c;经过总结形成了最佳实践。在开展新应用的设计时&#xff0c;根据决策要点以及相关的业务特点&#xf…...

Pytorch初学

创建虚拟环境 python控制台&#xff0c;jupyter notebook,python文件运行的差异&#xff0c;后续结合使用三者。 jupter主要可以对代码进行分割单独运行&#xff0c;主要做一些探索性工作。 数据集的常见存储模式 1、以标签命名图像。 2、单独存储图像的地址。 加载数据集…...

【动态重建】时间高斯分层的长体积视频

标题&#xff1a;Representing Long Volumetric Video with Temporal Gaussian Hierarchy 来源&#xff1a;浙江大学 链接&#xff1a;https://zju3dv.github.io/longvolcap/ 文章目录 摘要一、前言二、主要方法2.1 时间高斯分层2.2 高效渲染2.3 层次结构更新2.4 紧凑的外观模型…...

Java设计模式 —— 【行为型模式】命令模式(Command Pattern) 详解

文章目录 模式介绍优缺点适用场景结构案例实现注意事项 模式介绍 有时候需要向某些对象发送请求&#xff0c;但是并不知道请求的接收者是谁&#xff0c;也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序&#xff0c;使得请求发送者和请求接收者能够消除彼此…...

IOS开发如何从入门进阶到高级

针对iOS开发的学习&#xff0c;不同阶段应采取不同的学习方式&#xff0c;以实现高效提升.本文将iOS开发的学习分为入门、实战、进阶三个阶段&#xff0c;下面分别详细介绍. 一、学习社区 iOS开源中国社区 这个社区专注于iOS开发的开源项目分享与协作&#xff0c;汇集了大量开…...

数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)

将有序数组转换为二叉搜索树 https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ 描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列请你将其转换为一棵 平衡 二叉搜索树 示例 1 输入&#xff1a;nums [-10,-3,0,5,9…...