【InternLM实战营---第三节课笔记】

一、本期课程内容概述

本节课的主讲老师是书生蒲语社区贡献者北辰。教学内容主要包括以下三个部分:

1. 介绍RAG的原理、应用、架构、优化以及评估
2. 讲解开源工具茴香豆的特点以及架构
3. 实践部署茴香豆助手

二、学习收获

  1. RAG的概述与优势
    Retrieval Augmented Generation (RAG) 是一种结合了检索与生成能力的自然语言处理技术。其核心理念在于,通过检索与用户输入相关的信息片段(通常来自外部知识库),以此来辅助模型生成更准确、详尽的回答。RAG 可以解决以下问题:

    • 知识准确性:通过引入外部知识库,RAG 能够减少大模型(LLMs)在知识密集型任务中出现的“幻觉”现象,即生成与事实不符或过时的信息。
    • 透明度与可追溯性:借助于检索过程,RAG 提供了对生成回答依据的明确参照,使得推理过程更具透明度和可追溯性。
    • 推理效率与成本:通过非参数知识更新,RAG 允许基础模型无需重新训练就能适应新领域知识,降低了对大规模数据集的依赖,从而提升了推理效率并节省了计算资源。
  2. RAG的原理
    RAG的工作原理主要包括以下步骤:

    • 信息检索阶段:
      输入一个问题或一段文本,模型首先通过一个高效的信息检索组件(如倒排索引、嵌入匹配或其他相似度计算方法)从预定义的大规模知识库中检索最相关的文档或片段。这个知识库可以包含各种形式的数据,如文本、表格或者其他结构化信息,模型根据输入问题与知识库内容之间的语义相似度进行检索。
    • 检索结果融合:
      检索出的若干个相关文档片段会被编码成模型可以理解的表示,并与原始输入问题一起作为额外的输入传给生成模型。在某些实现中,检索到的信息可能还会与原始模型的隐藏状态相结合,形成一种混合的上下文表示。
    • 文本生成阶段:
      基于强化后的上下文,即原始输入和检索得到的相关信息,大规模语言模型(如InternLM系列)将生成更加准确和基于事实的回答或文本。模型在生成过程中能充分利用检索到的事实信息,降低凭空捏造答案(模型幻觉)的可能性。
      RAG流程
  3. RAG发展进程

    • Naive RAG:

      • 传统流程:Naive RAG代表了RAG模型最初或基础的形式,遵循经典的检索-增强-生成流程。
      • 基本步骤:首先进行索引(Indexing),构建可供检索的知识库;接着执行检索(Retrieval),从知识库中找出与给定输入相关的文档或片段;最后进行生成(Generation),利用检索到的信息辅助模型生成回答或文本输出。
      • 挑战与局限:尽管Naive RAG奠定了RAG模型的基础,但在检索、生成和增强等环节面临诸多挑战,例如检索效率、语义匹配精度以及如何有效融合检索结果与生成模型的输出。
    • Advanced RAG:

      • 预处理与后处理增强:为了克服Naive RAG的局限,Advanced RAG范式引入了额外的预检索和检索后处理步骤。
      • 预检索改进:在正式检索前,可能采用query改写、routing(路由)或query扩展等技术,旨在减少问题与文档块之间的语义差距,提高检索的准确性。
      • 检索后处理:检索完成后,对检索结果进行reranking(重新排序),以减轻“中间丢失”现象(即重要信息在初始检索中未被充分考虑),同时可能进行上下文过滤或压缩,比如缩短检索结果的窗口长度,以优化输入至生成模型的素材质量。
    • Modular RAG:

      • 模块化设计:虽然您提供的信息没有直接描述Modular RAG的具体特点,但通常“模块化”意味着模型结构或流程被设计成可拆分、组合的独立单元,以提升灵活性、可定制性和可扩展性。
      • 潜在特性:在RAG的背景下,Modular RAG可能涉及将检索、编码、融合、生成等子过程设计为可独立替换或升级的模块,允许研究人员或应用开发者根据特定任务需求或新技术进展灵活调整模型架构。
  4. RAG常见优化方法

    • 嵌入优化(Embedding Optimization):结合稀疏和密集检索,以及多任务学习。

    • 索引优化(Indexing Optimization):使用细粒度分割(Chunk)、元数据等技术来提高检索效率。

    • 查询优化(Query Optimization):包括查询扩展、转换和多查询等策略。

    • 上下文管理(Context Curation):重排(rerank)和上下文选择/压缩。

    • 迭代检索(Iterative Retrieval):根据初始查询和迄今为止生成的文本进行重复搜索。

    • 递归检索(Recursive Retrieval):通过迭代细化搜索查询,使用链式推理(Chain-of-Thought)指导检索过程。

    • 自适应检索(Adaptive Retrieval):Flare和Self-RAG等方法,使用LLMs主动决定检索的最佳时机和内容。

    • LLM微调(LLM Fine-tuning):检索微调、生成微调、双重微调。

  5. 向量数据库概述以及作用
    向量数据库是一种专门处理高维向量数据的系统,适用于存储、查找与非结构化数据(如文本、图片、音频)对应的特征向量。其核心功能包括高效存储、相似性搜索(如基于余弦相似度)及并行处理,以实现快速、准确地找出与查询向量最相似的数据。
    在RAG技术中,向量数据库的作用如下:

    • 快速知识检索:将知识库文本转化为向量存储,根据输入查询进行相似度搜索,迅速找出相关文档或片段。
    • 高效性能:利用高效的索引结构和搜索算法,确保在大规模知识库中实时检索。
    • 非结构化数据支持:通过向量化,使RAG能处理除文本外的其他类型数据(如图像、PDF),增强其对多种信息源的整合能力。
    • 可扩展与维护:适应知识库增长与更新,保持系统高效稳定运行。
    • 简言之,向量数据库作为RAG的核心知识检索组件,利用其对向量数据的强大处理能力,助力模型快速、精准地从大规模知识库中提取相关信息,以支持高质量、知识驱动的文本生成。
  6. RAG和Fine Tuning LLM 比较

    特征比较RAGFine-Tuning
    知识更新直接更新检索知识库确保信息保持最新,而不需要频繁地再训练,使其非常适合于动态数据环境。存储静态数据,需要对知识和数据更新进行再训练。
    外部知识精通利用外部资源,特别适合访问文档或其他结构化/非结构化数据库。可用于将从预训练中获得的外部知识与大型语言模型相结合,但可能不太适合用于频繁更改的数据源。
    数据处理涉及最少的数据处理。取决于高质量数据集的创建,有限的数据集可能不会显著提高性能。
    模型定制专注于信息检索和整合外部知识,但可能无法完全定制模型行为或写作风格。允许基于特定音调或术语(specific tones or terms)调整LLM行为、写作风格或特定领域知识。
    可解释性响应可以追溯到特定的数据源,提供更高的可解释性和可追溯性。与黑盒类似,人们并不总是清楚为什么模型会以某种方式做出反应,从而导致相对较低的可解释性。
    计算资源【数据库需要计算和存储】依赖于计算资源来支持与数据库相关的检索策略和技术。此外,它还需要维护外部数据源集成和更新。【训练需要】高质量训练数据集的准备和管理,定义微调目标,并提供相应的计算资源是必要的。
    延迟要求涉及数据检索,这可能会导致更高的延迟。(一般来说检索的效率会比LLM生成的效率高很多,延迟可以做到ms级别)微调后的LLM可以在不检索的情况下响应,从而降低延迟。
    减少幻觉本质上不太容易产生幻觉,因为每个答案都以检索到的证据为基础。可以通过基于特定领域数据训练模型来帮助减少幻觉,但在面对陌生输入时仍可能表现出幻觉。
    道德和隐私问题从外部数据库中存储和检索文本会引起道德和隐私方面的问题。训练数据中的敏感内容可能会引发道德和隐私问题。
  7. 茴香豆的部署和使用
    茴香豆是一个基于 LLM 的群聊知识助手,优势:

    • 设计拒答、响应两阶段 pipeline 应对群聊场景,解答问题同时不会消息泛滥
    • 成本低至 1.5G 显存,无需训练适用各行业
    • 提供一整套前后端 web、android、算法源码,工业级开源可商用
    • 可完全本地部署,数据不会泄露

    感兴趣的小伙伴可以访问部署教程

三、个人体会

  • 第一次直观的了解到RAG技术,学习到了其原理以及执行流程,以前只是把其认为知识库外加载
  • 曾经尝试过使用lang chain实现长文档总结的功能,但受限于LLM 上下文长度并没有实现。看到课程中的RAG优化方法,有了一些新的想法
  • 茴香豆功能的强大也出乎意料,不仅有web版本还有android apk,还能够直接对接微信,针对群聊中的有用信息进行回答

四、本期作业

https://blog.csdn.net/weixin_45609124/article/details/137615647
  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
R语言实战笔记第九章介绍了方差分析的内容。方差分析是一种用于比较两个或多个组之间差异的统计方法。在R语言中,可以使用lm函数进行方差分析的回归拟合。lm函数的基本用法是: myfit <- lm(I(Y^(a))~x I(x^2) I(log(x)) var ... [-1],data=dataframe 其中,Y代表因变量,x代表自变量,a代表指数,var代表其他可能对模型有影响的变量。lm函数可以拟合回归模型并提供相关分析结果。 在方差分析中,还需要进行数据诊断,以确保模型的可靠性。其中几个重要的诊断包括异常观测值、离群点和高杠杆值点。异常观测值对于回归分析来说非常重要,可以通过Q-Q图和outlierTest函数来检测。离群点在Q-Q图中表示落在置信区间之外的点,需要删除后重新拟合并再次进行显著性检验。高杠杆值点是指在自变量因子空间中的离群点,可以通过帽子统计量来识别。一般来说,帽子统计量高于均值的2到3倍即可标记为高杠杆值点。 此外,方差分析还需要关注正态性。可以使用car包的qqplot函数绘制Q-Q图,并通过线的位置来判断数据是否服从正态分布。落在置信区间内为优,落在置信区间之外为异常点,需要进行处理。还可以通过绘制学生化残差的直方图和密度图来评估正态性。 综上所述,R语言实战第九章介绍了方差分析及其相关的数据诊断方法,包括异常观测值、离群点、高杠杆值点和正态性检验。这些方法可以用于分析数据的可靠性和模型的适应性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [R语言实战笔记--第八章 OLS回归分析](https://blog.csdn.net/gdyflxw/article/details/53870535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值