首页 > 其他分享 >增强检索问答RAG研究成果综述 Retrieval-Augmented Generation for AI-Generated Content: A Survey

增强检索问答RAG研究成果综述 Retrieval-Augmented Generation for AI-Generated Content: A Survey

时间:2024-04-07 11:59:16浏览次数:26  
标签:检索 RAG Generation 模型 生成器 生成 Generated 文本

文章目录

论文地址:https://arxiv.org/abs/2402.19473

项目存储库:https://github.com/hymie122/RAG-Survey

Penghao Zhao, Hailin Zhang, Qinhan Yu, Zhengren Wang, Yunteng Geng, Fangcheng Fu, Ling Yang, Wentao Zhang, Bin Cui, Fellow, IEEE

摘要—人工智能生成内容(AIGC)的发展得益于模型算法的进步、基础模型规模的增加以及大量高质量数据集的可用性。虽然AIGC取得了显著的性能,但仍面临一些挑战,如难以保持最新和长尾知识、数据泄露的风险以及与训练和推理相关的高成本。检索增强生成(RAG)最近出现作为一种范式来解决这些挑战。具体而言,RAG引入信息检索过程,通过从可用数据存储中检索相关对象来增强生成过程,从而提高准确性和鲁棒性。本文全面审查了将RAG技术整合到AIGC场景中的现有努力。我们首先根据检索器如何增强生成器对RAG基础进行分类,梳理各种检索器和生成器的增强方法的基本抽象。这种统一的视角涵盖了所有RAG场景,阐明了有助于潜在未来进展的进步和关键技术。我们还总结了RAG的其他增强方法,促进了RAG系统的有效工程和实施。然后,从另一个角度,我们调查了RAG在不同模态和任务中的实际应用,为研究人员和从业者提供了有价值的参考。此外,我们介绍了RAG的基准,讨论了当前RAG系统的局限性,并提出了未来研究的潜在方向。

arXiv:2402.19473v2 [cs.CV] 2024年3月27日

关键词—检索增强生成,人工智能生成内容,生成模型,信息检索。

引言

背景

近年来,人工智能生成内容(AIGC)引起了广泛关注。各种内容生成工具被精心设计,以在各种模态下产生多样化的输出,例如大型语言模型(LLM),包括GPT系列[1]–[3]和LLAMA系列[4]–[6]用于文本和代码,DALL-E[7]–[9]和Stable Diffusion[10]用于图像,以及Sora[11]用于视频。术语“AIGC”强调这些内容是由先进的生成模型而不是人类或基于规则的方法产生的。这些生成模型由于采用了新颖的模型算法、庞大的基础模型规模和大量高质量数据集而取得了显著的性能。具体而言,序列到序列任务已经从使用长短期记忆(LSTM)网络[12]转变为基于Transformer模型[13],图像生成任务也已从生成对抗网络(GANs)[14]转变为潜在扩散模型(LDMs)[10]。值得注意的是,基础模型的架构,最初由数百万参数构成,现在已经增长到数十亿甚至数万亿的参数。这些进展进一步得到了丰富高质量数据集的支持,这些数据集提供了丰富的训练样本,以充分优化模型参数。

信息检索是计算机科学领域的另一个关键应用。与生成不同,检索旨在从大量资源中定位相关的现有对象。检索最常见的应用在于网络搜索引擎,主要关注文档检索任务。在当前时代,高效的信息检索系统可以处理数十亿级别的文档集合。除了文档,检索还被应用于许多其他模态。

尽管先进的生成模型取得了显著进展,AIGC仍然面临一些众所周知的挑战,包括难以保持最新知识、无法整合长尾知识和泄露私人训练数据的风险。检索增强生成(RAG)被提出来缓解,如果不是完全解决,上述挑战,通过其可适应的数据存储库。存储的知识可以被构想为非参数化记忆。这种形式的记忆易于修改,能够容纳广泛的长尾知识,并且还能够编码机密数据。此外,检索还可以用于降低生成成本。例如,RAG可以减小大型生成模型的大小,为长上下文提供支持,并消除某些生成步骤。

典型的RAG过程如图1所示。给定一个输入查询,检索器定位并查找相关数据源,然后检索结果与生成器互动以增强整个生成过程。检索结果可以以不同方式与生成过程互动:它们可以作为生成器的增强输入;它们可以在生成的中间阶段作为潜在表示加入;它们可以以logits的形式对最终生成结果做出贡献;它们甚至可以影响或省略某些生成步骤。此外,在典型的基础RAG过程基础上,还提出了许多增强方法来提高整体质量。这些增强方法涵盖了特定组件的方法以及针对整个流程的优化。

图1. 通用的RAG架构。用户的查询,可能是不同的模态,作为检索器和生成器的输入。检索器在存储中搜索相关数据源,而生成器与检索结果互动,最终产生各种模态的结果。

此外,尽管RAG的概念最初出现在文本到文本生成中,但它也已经适应到各个领域,包括代码、音频、图像、视频、3D、知识和科学人工智能。特别是,RAG的基本思想和过程在各种模态下基本一致。然而,它需要在增强技术上进行特定的微调,并且检索器和生成器的选择因特定模态和/或应用而异。

尽管最近对RAG的研究迅速增长,但缺乏涵盖所有基础、增强和应用的系统性审查。对RAG基础缺乏讨论显著削弱了该领域研究的实际价值,使RAG的潜力没有得到充分探索。尽管大多数研究兴趣,特别是在LLM研究人员中,集中在基于查询的文本生成任务上,但必须承认,其他RAG基础范式也是有效的技术,具有重要的用途和进一步发展的潜力。对RAG应用缺乏概述导致研究人员和从业者忽视了RAG在多个模态中的进展,并且不了解如何有效应用RAG。尽管文本生成通常被认为是RAG的主要应用,但我们强调RAG在其他模态中的发展也在早期阶段开始,并取得了令人期待的进展。某些模态与检索技术有着丰富的历史联系,为RAG注入了独特的特征。尽管已经提出了一些关于RAG的调查,但它们主要集中在部分方面,如特定方法和任务。在本文中,我们的目标是提供一项全面的调查,以系统概述RAG。

贡献

本调查全面概述了RAG,涵盖了基础、增强、应用、基准、局限性和潜在未来方向。虽然检索器和生成器在不同模态和任务中存在差异,但我们从这些基础中提炼了RAG基础的基本抽象,考虑到应用是从这些抽象中衍生出来的。我们旨在为研究人员和从业者提供参考和指导,为推进RAG方法和相关应用提供有价值的见解。总之,我们列出我们的贡献如下:

  • 我们对 RAG 进行了全面的回顾,并提炼了适用于各种检索器和生成器的 RAG 基础抽象。
  • 我们总结了对现有 RAG 流程的增强,详细阐述了用于实现更有效 RAG 系统的技术。
  • 对于各种模态和任务,我们调查了融合了 RAG 技术的现有 AIGC 方法,展示了 RAG 如何对当前的生成模型做出贡献。
  • 我们讨论了 RAG 的局限性和有前途的研究方向,揭示了其潜在的未来发展。

相关工作

随着对 RAG 的研究不断深入,提出了几篇关注 RAG 的综述论文。Li 等人 [56] 对文本生成的 RAG 进行了调查。由于该综述覆盖了截至 2022 年的论文,许多新的 AIGC 中 RAG 的进展并未包含在内。Asai 等人 [57] 提供了关于基于检索的语言模型的教程,介绍了架构和训练范式。Gao 等人 [58] 对 LLMs 中的 RAG 进行了调查,特别是研究了基于查询的 RAG 的增强。上述调查主要考虑了由 LLMs 支持的文本相关任务中的 RAG,将其他模态作为潜在扩展。然而,RAG 的概念在早期阶段就涉及到所有模态,使其更适合在整个 AIGC 的更广泛背景下讨论。Zhao 等人 [59] 提出了一项关于多种模态的 RAG 应用的调查,但忽略了对 RAG 基础的讨论。这些调查要么专注于单一的 RAG 基础范式,要么仅对有限情景下的 RAG 增强方法论进行简要概述。因此,虽然现有研究已经探讨了 RAG 的各个方面,但仍然需要全面概述系统地涵盖 RAG 的基础、增强以及其在不同领域中的适用性。在本文中,我们旨在提供一份系统性的 RAG 概述,以填补这些空白。

路线图

本文的其余部分组织如下。第 II 节详细介绍了 RAG 的基础知识,介绍了检索器和生成器。第 III 节介绍了 RAG 的基础知识以及对 RAG 的进一步增强。第 IV 节回顾了在各种应用中对 RAG 的现有研究。第 V 节调查了 RAG 的基准框架。第 VI 节讨论了 RAG 目前的局限性和未来的潜在方向。最后,第 VII 节总结了本文。

初步

在本节中,我们首先概述了一般 RAG 架构。随后,我们深入探讨了当今基于 RAG 的 AIGC 中所使用的生成器和检索器的细节。

概述

如图 1 所示,整个 RAG 系统由两个核心模块组成:检索器和生成器。检索器负责从构建的数据存储中搜索相关信息,生成器负责生成内容。RAG 过程如下展开:首先,检索器接收输入查询并搜索相关信息;然后,原始查询和检索结果通过特定的增强方法论传递给生成器;最后,生成器产生所需的结果。在第 III-A 节中,我们将介绍 RAG 的基础知识。在第 III-B 节中,我们将介绍基于构建的 RAG 系统的进一步增强方法。

生成器

生成 AI 在各种任务中表现出色,开启了 AIGC 时代。由其强大的生成模块驱动,生成 AI 在效率方面甚至超越了原始专家系统。在整个 RAG 系统中,生成模块具有重要意义。不同的生成模型根据不同的场景进行选择。例如:文本到文本任务选择 transformer 模型,图像到文本任务选择 VisualGPT [60],文本到图像任务选择 Stable Diffusion [10],文本到代码任务选择 Codex [2]。

根据模型结构,我们将生成器分为 4 大类:transformer 模型、LSTM、diffusion 模型和 GAN。我们将在接下来的章节中对每个类别进行详细介绍。

图 2. 传统 transformer 模型的架构。

Transformer 模型

最初的 transformer 设计用于解决神经语言处理领域的问题,包括自注意力机制、前馈网络、层归一化模块和残差网络 [61]。

如图 2 所示,transformer 的输入经过标记化处理和嵌入模型后,被映射为形状为 (b, s, h) 的张量 x_(in),其中 b 代表批处理大小,s 代表序列长度,h 代表隐藏维度。接下来,位置编码将与此张量一起发送到自注意力层。输入 x_(in) 和自注意力模块的输出 x_(out) 将通过残差网络和层归一化模块连接。最后,“Add & Norm” 模块的输出 x_(out) 将发送到前馈网络。整个过程可以定义如下:

Q = x i n ∗ W q + b q K = x i n ∗ W k + b k V = x i n ∗ W v + b v x out  = Layer ⁡ N o r m 1 ( Softmax ⁡ ( Q ∗ K T h ) ∗ V ∗ W o + b o ) + x i n y = Layer ⁡ N o r m 2 ( ( x out  ∗ W 1 + b 1 ) ∗ W 2 + b 2 ) + x out  \begin{array}{c} Q=x_{i n} * W_{q}+b_{q} \\ K=x_{i n} * W_{k}+b_{k} \\ V=x_{i n} * W_{v}+b_{v} \\ x_{\text {out }}=\operatorname{Layer} N o r m 1\left(\operatorname{Softmax}\left(\frac{Q * K^{T}}{\sqrt{h}}\right) * V * W_{o}+b_{o}\right)+x_{i n} \\ y=\operatorname{Layer} N o r m 2\left(\left(x_{\text {out }} * W_{1}+b_{1}\right) * W_{2}+b_{2}\right)+x_{\text {out }} \end{array} Q=xin​∗Wq​+bq​K=xin​∗Wk​+bk​V=xin​∗Wv​+bv​xout ​=LayerNorm1(Softmax(h ​Q∗KT​)∗V∗Wo​+bo​)+xin​y=LayerNorm2((xout ​∗W1​+b1​)∗W2​+b2​)+xout ​​

需要注意的是 w q , w k , w v , w o w_{q}, w_{k}, w_{v}, w_{o} wq​,wk​,wv​,wo​ 是形状为 ( h , h ) (h, h) (h,h) 的可学习张量; b q , b k , b v , b o b_{q}, b_{k}, b_{v}, b_{o} bq​,bk​,bv​,bo​ 是形状为 ( h , ) (h,) (h,) 的可学习张量。

图 3. 具有遗忘门的典型 LSTM 模块的架构。

LSTM

长短期记忆(LSTM)[62] 是一种特殊的循环神经网络(RNN)模型,通过引入细胞状态和门机制,克服了 RNN 处理长期依赖信息时的梯度消失/爆炸问题。LSTM 模型由三个门组成:输入门、遗忘门和输出门。这些门通过控制信息流来更新细胞状态,使模型能够记住长期依赖信息。细胞状态是 LSTM 模型的核心模块,可以记忆和保持信息。输入门决定应该将哪些输入数据保留在细胞状态中。遗忘门确定应该丢弃哪些细胞状态信息,以避免过度记忆。输出门确定细胞状态中的信息如何影响当前输出。数据流和各组件之间的协作工作流程如图 3 所示。整个过程可以定义如下:

f = sigmoid ⁡ ( W f ∗ x t + U f ∗ y t − 1 + b f ) z = tanh ⁡ ( W z ∗ x t + U z ∗ y t − 1 + b z ) i = sigmoid ⁡ ( W i ∗ x t + U i ∗ y t − 1 + b i ) o = sigmoid ⁡ ( W o ∗ x t + U o ∗ y t − 1 + b o ) \begin{array}{c}f=\operatorname{sigmoid}\left(W^{f} * x^{t}+U^{f} * y^{t-1}+b^{f}\right) \\ z=\tanh \left(W^{z} * x^{t}+U^{z} * y^{t-1}+b^{z}\right) \\ i=\operatorname{sigmoid}\left(W^{i} * x^{t}+U^{i} * y^{t-1}+b^{i}\right) \\ o=\operatorname{sigmoid}\left(W^{o} * x^{t}+U^{o} * y^{t-1}+b^{o}\right)\end{array} f=sigmoid(Wf∗xt+Uf∗yt−1+bf)z=tanh(Wz∗xt+Uz∗yt−1+bz)i=sigmoid(Wi∗xt+Ui∗yt−1+bi)o=sigmoid(Wo∗xt+Uo∗yt−1+bo)​

c t = z ⊙ i + f ⊙ c t − 1 y t = o ⊙ tanh ⁡ ( c t ) \begin{array}{c}c^{t}=z \odot i+f \odot c^{t-1} \\ y^{t}=o \odot \tanh \left(c^{t}\right)\end{array} ct=z⊙i+f⊙ct−1yt=o⊙tanh(ct)​

Diffusion 模型

扩散模型 [63] 是一类能够生成真实且多样化数据样本的深度生成模型,例如图像、文本、视频和分子等。如图 4 所示,扩散模型通过逐渐向数据添加噪声,直到变得随机,然后通过反向过程从噪声生成新数据。这一过程基于概率建模和神经网络。扩散模型主要有三种等效形式:去噪扩散概率模型、基于分数的生成模型和随机微分方程,其中包括 DDIM、Rectified Flow、Consistency Model 和 RPG-DiffusionMaster 等改进。

图 4. 扩散模型通过向数据添加噪声平滑扰动数据,然后通过反向过程从噪声生成新数据。反向过程中的每个去噪步骤通常需要估计得分函数(见右侧说明性图),该函数是指向具有更高可能性和更少噪声的数据方向的梯度,参见 [63]。

特别地,设 x 0 x_{0} x0​ 是遵循数据分布 q ( x 0 ) q\left(x_{0}\right) q(x0​) 的随机变量, x t x_{t} xt​ 是在时间步 t t t 添加噪声后遵循分布 q ( x t ∣ x 0 ) q\left(x_{t} \mid x_{0}\right) q(xt​∣x0​) 的随机变量。那么,DDPM 可以被表述如下:

  • 正向过程 正向过程通过一系列高斯噪声注入扰动数据,将数据分布 q ( x 0 ) q\left(x_{0}\right) q(x0​) 转换为简单的先验分布 q ( x T ) ≈ N ( 0 , I ) q\left(x_{T}\right) \approx N(0, I) q(xT​)≈N(0,I)。每个时间步的转移核心如下所示:
    q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) , q\left(x_{t} \mid x_{t-1}\right)=N\left(x_{t} ; \sqrt{1-\beta_{t}} x_{t-1}, \beta_{t} I\right), q(xt​∣xt−1​)=N(xt​;1−βt​ ​xt−1​,βt​I),
    q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) , q\left(x_{t} \mid x_{0}\right)=N\left(x_{t} ; \sqrt{\bar{\alpha}_{t}} x_{0},\left(1-\bar{\alpha}_{t}\right) I\right), q(xt​∣x0​)=N(xt​;αˉt​ ​x0​,(1−αˉt​)I),
    其中 α t = 1 − β t \alpha_{t}=1-\beta_{t} αt​=1−βt​, α ˉ t = ∏ s = 0 t α s \bar{\alpha}_{t}=\prod_{s=0}^{t} \alpha_{s} αˉt​=∏s=0t​αs​。

  • 逆向过程 逆向过程通过一个可学习的马尔可夫链反转前向过程生成新的数据样本。先验分布为 p ( x T ) = N ( x T ; 0 , I ) p\left(x_{T}\right)=N\left(x_{T} ; 0, I\right) p(xT​)=N(xT​;0,I),转移核为 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_{\theta}\left(x_{t-1} \mid x_{t}\right)=N\left(x_{t-1} ; \mu_{\theta}\left(x_{t}, t\right), \Sigma_{\theta}\left(x_{t}, t\right)\right) pθ​(xt−1​∣xt​)=N(xt−1​;μθ​(xt​,t),Σθ​(xt​,t)),其中 θ \theta θ 表示模型参数, μ θ ( x t , t ) \mu_{\theta}\left(x_{t}, t\right) μθ​(xt​,t) 和 Σ θ ( x t , t ) \Sigma_{\theta}\left(x_{t}, t\right) Σθ​(xt​,t) 由深度神经网络参数化。逆向过程从 x T ∼ p ( x T ) x_{T} \sim p\left(x_{T}\right) xT​∼p(xT​) 开始采样,然后迭代地从 p θ ( x t − 1 ∣ x t ) p_{\theta}\left(x_{t-1} \mid x_{t}\right) pθ​(xt−1​∣xt​) 中采样 x t − 1 x_{t-1} xt−1​,直到 t = 0 t=0 t=0。

  • 模型训练 对于每个样本 x₀ ∼ q(x₀),模型训练的目标是最大化数据 x₀ 的变分下界(VLB)。简化形式 L V L B ( x 0 ) \mathcal{L}_{\mathrm{VLB}}\left(x_{0}\right) LVLB​(x0​) 给出为
    E q ( x 1 : T ∣ x 0 ) [ − log ⁡ p ( x T ) − ∑ t = 1 T log ⁡ p θ ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) ] \mathbb{E}_{q\left(x_{1: T} \mid x_{0}\right)}\left[-\log p\left(x_{T}\right)-\sum_{t=1}^{T} \log \frac{p_{\theta}\left(x_{t-1} \mid x_{t}\right)}{q\left(x_{t} \mid x_{t-1}\right)}\right] Eq(x1:T​∣x0​)​[−logp(xT​)−t=1∑T​logq(xt​∣xt−1​)pθ​(xt−1​∣xt​)​]
    通过简化和重参数化技巧,整体目标 E q ( x 0 ) [ L V L B ( x 0 ) ] \mathbb{E}_{q\left(x_{0}\right)}\left[\mathcal{L}_{\mathrm{VLB}\left(x_{0}\right)}\right] Eq(x0​)​[LVLB(x0​)​]
    可以简化为最终形式
    E t ∼ U [ 1 , T ] , x 0 ∼ q ( x 0 ) , ϵ ∼ N ( 0 , I ) [ λ ( t ) ∥ ϵ − ϵ θ ( x t , t ) ∥ ] \mathbb{E}_{t \sim U[1, T], x_{0} \sim q\left(x_{0}\right), \epsilon \sim \mathcal{N}(0, I)}\left[\lambda(t)\left\|\epsilon-\epsilon_{\theta}\left(x_{t}, t\right)\right\|\right] Et∼U[1,T],x0​∼q(x0​),ϵ∼N(0,I)​[λ(t)∥ϵ−ϵθ​(xt​,t)∥]
    其中 λ ( t ) \lambda(t) λ(t) 是一个正权重函数, U [ 1 , T ] U[1, T] U[1,T] 是集合 { 1 , 2 , … , T } \{1,2, \ldots, T\} {1,2,…,T} 上的均匀分布, ϵ θ \epsilon_{\theta} ϵθ​ 是一个深度神经网络,参数为 θ \theta θ,用于预测给定 x t x_{t} xt​ 和 t t t 的噪声向量 ϵ \epsilon ϵ。需要注意的是,整体目标也等价于通过最小化它们之间的 KL 散度,将逆向过程 p θ ( x 0 , x 1 , … , x T ) p_{\theta}\left(x_{0}, x_{1}, \ldots, x_{T}\right) pθ​(x0​,x1​,…,xT​) 的联合分布匹配到前向过程 q ( x 0 , x 1 , … , x T ) q\left(x_{0}, x_{1}, \ldots, x_{T}\right) q(x0​,x1​,…,xT​)。

图 5. 典型生成对抗网络(GAN)的架构。

GAN

生成对抗网络(GANs)[96] 是备受期待的深度学习模型,具有惊人的能力,可以模拟和生成逼真的图像、音频和其他数据。由于其出色的性能,GANs 在各个领域取得了重大成就[97]。GANs 的设计灵感来自博弈论中的零和博弈。

如图 5 所示,典型的 GAN 包括两个主要组件:生成器和判别器。这两部分通过对抗学习相互竞争,使生成器不断改进生成逼真样本的能力,而判别器则不断改进区分真假样本的能力。

检索器

检索是识别和获取与信息需求相关的信息系统资源。具体来说,考虑将信息资源概念化为一个键-值存储 { ( k i , v i ) } i = 1 N \left\{\left(k_{i}, v_{i}\right)\right\}_{i=1}^{N} {(ki​,vi​)}i=1N​,其中每个键 k i k_{i} ki​ 对应一个值 v i v_{i} vi​(通常情况下, k i k_{i} ki​ 和 v i v_{i} vi​ 相同)。给定一个查询 q q q,目标是使用相似性函数 s s s 搜索前 k k k 个最相似的键,并获取配对的值。根据不同的相似性函数,现有的检索方法可分为稀疏检索、密集检索和其他方法。对于广泛使用的稀疏和密集检索,整个过程可以分为两个明确的阶段:在第一阶段,将每个对象编码为特定表示;在第二阶段,构建索引以组织数据源以进行高效搜索。

稀疏检索*

标签:检索,RAG,Generation,模型,生成器,生成,Generated,文本
From: https://blog.csdn.net/wjjc1017/article/details/137334144

相关文章

  • android 【存储相关】preserveLegacyExternalStorage,requestLegacyExternalStorage
    这两个属性是与Android10(API级别29)及更高版本中的外部存储访问权限限制相关的属性。android:preserveLegacyExternalStorage="true"这个属性用于在Android10及更高版本上保留旧版的外部存储访问模式。在Android10及更高版本中,默认情况下,应用程序只能访问自己......
  • drag的api
    dragstart:事件主体是被拖放元素,在开始拖放被拖放元素时触发。darg:事件主体是被拖放元素,在正在拖放被拖放元素时触发。dragend:事件主体是被拖放元素,拖动结束触发。dragenter:事件主体是目标元素,被拖动元素进入到目标区域时触发dragover:事件主体是目标元素,被拖动元素在目......
  • 【爬虫】debug篇-关于fake_useragent无法使用:Error occurred during loading data. Tr
    Erroroccurredduringloadingdata.Tryingtousecacheserverhttps://fake-useragent.herokuapp.com/browsers/0.1.11Traceback(mostrecentcalllast):File"D:\python\lib\site-packages\fake_useragent\utils.py",line154,inloadfori......
  • 向量数据库+知识图谱构建高效 RAG 系统
    向量数据库+知识图谱构建高效RAG系统数据的智能化存储向量数据库__RAG中的向量数据库知识图谱__构建智能化的知识体系向量数据库+知识图谱构建高效RAG第一、数据预处理和嵌入第二、检索和信息提取第三、生成和优化第四、多模态融合数据的智能化存储向量数据库是......
  • localStorage灵魂五问。 5M?? 10M !!!
    灵魂五问localStorage存储的键值采用什么字符编码5M的单位是什么localStorage键占不占存储空间localStorage的键的数量,对写和读性能的影响写个方法统计一个localStorage已使用空间我们挨个解答,之后给各位面试官又多了一个面试题。我们常说localStorage存储空间是5M,请......
  • 浏览器中localStroage、sessionStorage、cookie的区别与使用
    特性localStoragesessionStorageCookieSession存储位置浏览器本地浏览器本地浏览器本地服务器数据传输不自动发送不自动发送自动发送ID自动发送存储类型键值对键值对文本多种类型(任意)存储大小通常约5MB通常约5MB通常≤4KB无硬性限制生命周期持久化存储关闭窗口/标签页后清除可......
  • #样题7 6.OpenVPN VPN 客户端只能与 InsideCli 客户端网段通信,允许访问 StorageSrv 主
    #样题76.OpenVPNVPN客户端只能与InsideCli客户端网段通信,允许访问StorageSrv主机上的SAMBA服务,允许访问AppSrv上的dns服务;VPN客户端可使用的地址范围是:172.16.0.100-172.16.0.120/24;在OutsideCli上创建连接服务“[email protected]”。......
  • k8s PV和PVC以及StorageClass
    本地盘和云磁盘区别本地盘不支持跨物理机迁移,云磁盘支持跨物理机迁移。本地目录生命周期emptyDir、downwardAPI、configMap、secret:kubelet创建本地目录,该目录会随着Pod的消亡而删除。hostPath:本地目录一直存在。PVC、PV和StorageClass关系PVC是持久卷定义,PV是持久卷即磁盘,St......
  • 2-28. 创建 DragItem 实现物品拖拽跟随显示
    开始实现拖拽功能添加接口添加DragCanvas另外记得把RaycastTarget取消勾选另外DragItemImage默认可以显示,但是图片需要关闭修改InventoryUI修改Slot_Bag预制体把Image、Amount、Highlight的RaycastTarget关掉这样做的目的是因为后面在拖拽结束的......
  • 多个标签页之间 Cookie、sessionStorage 共享吗
    Cookie多个标签页之间对于同一域名下的Cookie通常是共享的。当您在一个网页上设置了一个Cookie,并且没有特别指定Cookie的作用域,那么在同一域名下的其他打开的标签页都可以访问到这个Cookie。这是因为Cookie是基于域名和路径来管理的,而不区分具体的浏览器标签页。例如,如......