首页 > 其他分享 >认识什么是LLM、RAG、LangChain以及开发LLM应用的整体流程?

认识什么是LLM、RAG、LangChain以及开发LLM应用的整体流程?

时间:2024-04-16 18:00:25浏览次数:26  
标签:检索 RAG 语言 模型 LangChain 开发 LLM

认识大语言模型LLM

时间:2024-04-15,星期一

一、大型语言模型(LLM)理论简介

大语言模型(LLM)的概念

⼤语⾔模型(LLM,Large Language Model),也称⼤型语⾔模型,是⼀种旨在理解和⽣成⼈类语⾔的⼈⼯智能模型。

LLM的发展历程

  • 20 世纪 90 年代,统计学习⽅法来预测词汇

  • 2003 年 深度学习先驱 Bengio 在他的经典论⽂ 《A Neural Probabilistic Language Model》 中,⾸次将深度学习的思 想融⼊到语⾔模型中。

  • 2018 年 左右,Transformer 架构的神经⽹络模型开始崭露头⻆。

语⾔模型规模的扩⼤(增加模型⼤⼩或使⽤更多数据)

国内外常见大模型

闭源LLM
  • GPT系列:OpenAI 公司在 2018 年 提出的 GPT(Generative Pre-Training) 模型是典型的 ⽣成式预训练语⾔模型 之⼀。

    • GPT 模型的基本原则是通过语⾔建模将世界知识压缩到仅解码器 (decoder-only) 的 Transformer 模型中,这样它就可以恢复(或记忆)世界知识的语义,并充当通⽤任务求解器。它能够成功的两个关键点:

      • 训练能够准确预测下⼀个单词的 decoder-only 的 Transformer 语⾔模型

      • 扩展语⾔模型的⼤⼩

  • Claude 系列:Claude 系列模型是由 OpenAI 离职⼈员创建的 Anthropic 公司开发的闭源语⾔⼤模型。

  • PaLM/Gemini 系列:Google 将 Bard(之前发布的对话应⽤) 的底层⼤模型驱动由 PaLM2 更改为 Gemini,同时也将原先的 Bard 更名为 Gemini

  • 百度-文心一言

  • 科大讯飞-星⽕⼤模型

开源 LLM
  • Meta--LLaMA 系列

  • 阿⾥巴巴基于“通义”⼤模型研发--通义千问

  • 清华⼤学和智谱 AI 等合作研发的语⾔⼤模型--GLM 系列模型

  • 百川智能开发的开源可商⽤的语⾔⼤模型--Baichuan系列

二、LLM的能力和特点

LLM的能力

  • 涌现能力:区分大语言模型(LLM)和以前预训练语言模型(PLM)最显著的特征之一

  • 作为基座模型支持多元应用的能力:以单一大语言模型或多个大模型进行基础模型进行应用开发

  • 支持对话作为统一入口的能力:可以使用聊天或对话与模型进行交互

LLM的特点

  • 巨大的规模:具有巨大的参数规模。

  • 预训练和微调:可以再无标签数据上进行预训练,学习通用的语言标识和知识。然后在有标签的数据上进行微调以适应特定任务。

  • 上下文感知

  • 多语言支持

  • 多模态支持:一些LLM已经扩展到支持多模态数据,包括文本、图像和声音。

  • 伦理和风险问题

  • 高计算资源需求

 

认识检索增强生成RAG

一、什么是RAG

检索增强生成(RAG,Retrieval-Augmented Generation)是为了在某些情况下,提高大型语言模型在生成文本时表现而提出的一种新的模型结构。

该架构巧妙地整合了从庞大知识库中检索到的相关信息,并以此为基础,指导大型语言模型生成更为精准的答案,从而显著提升了回答的准确性与深度。

目前LLM面临的主要问题:

  • 信息偏差/幻觉:LLM会产生与提问信息不符的信息。RAG可以通过检索数据源,辅助模型生成过程。

  • 知识更新滞后性:LLM基于现有数据进行训练而无法回答超出现有数据的问题。RAG通过实时检索最新数据,保持内容的时效性。

  • 内容不可追溯

  • 领域专业知识能力欠缺

  • 推理能力限制

  • 应用场景适应性受限

  • 长文本处理能力较弱

二、RAG的工作流程

流程:

  1. 数据处理:对原始数据进行清洗和处理;然后将处理后的数据转化为检索模型可以使用的格式;最后将处理后的数据存储在对应的数据库中。

  2. 检索:从数据库中检索相关信息

  3. 增强:将从数据库中检索到的信息进行处理和增强,以便生成模型可以更好地理解和使用。

  4. 生成:将增强后的信息输入到生成模型(如LLM)中,生成模型根据这些信息生成答案。

三、RAG(检索增强生成)和 Finetune(微调)

RAG和Finetune两者都是提升大语言模型效果的主流方法。

微调: 通过在特定数据集上进一步训练大语言模型,来提升模型在特定任务上的表现。

 

总结来说,RAG和Fine-tuning都是用于提升大型语言模型在特定任务上表现的方法,但它们的方法和成本不同。RAG通过检索相关信息辅助生成答案,而不需要重新训练模型,适合于需要结合外部知识的任务。Fine-tuning则通过在特定任务数据上训练模型来调整权重参数,适合于提高模型在特定任务上的表现,但需要更多的计算资源和时间。

 

认识LangChain

一、什么是LangChain

背景:

ChatGPT 的巨大成功激发了越来越多的开发者兴趣,他们希望利用 OpenAI 提供的 API 或者私有化模型,来开发基于大型语言模型的应用程序。尽管大型语言模型的调用相对简单,但要创建完整的应用程序,仍然需要大量的定制开发工作,包括 API 集成、互动逻辑、数据存储等等。

为了解决这个问题,从 2022 年开始,许多机构和个人相继推出了多个开源项目,旨在帮助开发者们快速构建基于大型语言模型的端到端应用程序或工作流程。其中一个备受关注的项目就是 LangChain 框架。

LangChain 框架是一个开源工具,充分利用了大型语言模型的强大能力,以便开发各种下游应用。它的目标是为各种大型语言模型应用提供通用接口,从而简化应用程序的开发流程

二、LangChain核心组件

LangChian 作为一个大语言模型开发框架,可以将 LLM 模型(对话模型、embedding 模型等)、向量数据库、交互层 Prompt、外部知识、外部代理工具整合到一起,进而可以自由构建 LLM 应用。 LangChain 主要由以下 6 个核心组件组成:

  • 模型输入/输出(Model I/O):与语言模型交互的接口

  • 数据连接(Data connection):与特定应用程序的数据进行交互的接口

  • 链(Chains):将组件组合实现端到端应用。

  • 记忆(Memory):用于链的多次运行之间持久化应用程序状态;

  • 代理(Agents):扩展模型的推理能力。用于复杂的应用的调用序列;

  • 回调(Callbacks):扩展模型的推理能力。用于复杂的应用的调用序列;

 

认识开发LLM应用的整体流程

一、何为大语言模型开发

将开发以大语言模型为功能核心、通过大语言模型的强大理解能力和生成能力、结合特殊的数据或业务逻辑来提供独特功能的应用称为大模型开发

 

将大模型作为一个调用工具,通过Prompt Engineering、数据工程、业务逻辑分解等手段来充分发挥大模型能力,适配应用任务,而不会将精力聚焦在优化模型身上。

 

作为大模型开发的初学者,我们并不需要深研大模型内部原理,而更需要掌握使用大模型的实践技巧。

大模型开发与传统AI之间的区别:

  • 业务开发:传统AI开发需要繁琐的业务逻辑分析和训练/验证数据集的收集,

二、大模型开发的一般流程

  • 确定目标

  • 设计功能

  • 搭建整体架构

  • 搭建知识库

  • Prompt Engineering

  • 验证迭代

  • 前后端搭建

  • 体验迭代

 

认识开发LLM应用的整体流程

一、何为大语言模型开发

将开发以大语言模型为功能核心、通过大语言模型的强大理解能力和生成能力、结合特殊的数据或业务逻辑来提供独特功能的应用称为大模型开发

 

将大模型作为一个调用工具,通过Prompt Engineering、数据工程、业务逻辑分解等手段来充分发挥大模型能力,适配应用任务,而不会将精力聚焦在优化模型身上。

 

作为大模型开发的初学者,我们并不需要深研大模型内部原理,而更需要掌握使用大模型的实践技巧。

大模型开发与传统AI之间的区别:

  • 业务开发:传统AI开发需要繁琐的业务逻辑分析和训练/验证数据集的收集,

二、大模型开发的一般流程

  • 确定目标

  • 设计功能

  • 搭建整体架构

  • 搭建知识库

  • Prompt Engineering

  • 验证迭代

  • 前后端搭建

  • 体验迭代

 

学习链接:

[LLm_universe课程项目地址](https://github.com/datawhalechina/llm-universe)

标签:检索,RAG,语言,模型,LangChain,开发,LLM
From: https://www.cnblogs.com/lmyfi/p/18138856

相关文章

  • P10320 勇气(Courage)
    原题链接题解请看这我补充一点:由于\(x\leqslant2\)和\(n\leqslant2\)很明显不对劲,所以要特判一下二点:像这种看起来需要模拟来找答案的不妨手推一下数学式子来找答案code#include<bits/stdc++.h>usingnamespacestd;intmain(){doublex,n;cin>>x>>n;......
  • LLM学习(1)——大模型简介
    1.1.1LLM的概念为了区分不同参数尺度的语言模型,研究界为大规模的PLM(例如,包含数百亿或数千亿个参数)创造了术语“大型语言模型”LLM。1.1.2LLM的能力与缩放定律LLM的能力涌现能力LLMs被正式定义为“在小型模型中不存在但在大型模型中出现的能力”,这是LLMs区别于以往PLM的最突......
  • LangChain轻松入门和开发实践
    LangChain是一个开发语言模型应用的框架。LangChain能够简化开发与语言模型工作流中的复杂部分,帮助开发人员能够更轻松地进行开发,并定制满足需求的应用。LangChain有两大优点,一是它能将外部数据,如文件、其他应用、API数据等,无缝地集成到语言模型中;二是它通过代理功能,让语言模型......
  • RAG知识库优化之Rerank应用
          前面几篇文章介绍了最基本的RAG实现,也了解了RAG的基本原理。最基本的RAG流程为用户Query问题,RAG应用在向量库查询出Context,然后将Query与Context喂到LLM,LLM生成满足Query的Response答案。      从这里可以存在三元组:Query、Context和Response,如要想进一步......
  • RAG 工具和框架介绍: Haystack、 LangChain 和 LlamaIndex
     Haystack、LangChain和LlamaIndex,以及这些工具是如何让我们轻松地构建RAG应用程序的? 我们将重点关注以下内容:HaystackLangChainLlamaIndex增强LLM那么,为什么会有这些工具存在呢?如你所知,ChatGPT和其他LLM是在某个时间点之前的一组数据上进行训练的。更重要的是,它......
  • 如何使用 LangChain 构建基于LLMs的应用——入门指南
    大型语言模型(LLMs)是非常强大的通用推理工具,在各种情况下都非常有用。但是,与构建传统软件不同,使用LLMs存在一些挑战:调用往往是长时间运行的,并且随着可用输出而逐步生成输出。与固定参数的结构化输入(例如JSON)不同,它们采用非结构化和任意的自然语言作为输入。它们能够“理解”......
  • 解密prompt系列27. LLM对齐经验之如何降低通用能力损失
    前面我们已经聊过众多指令微调的方案,这一章我们重点讨论下如何注入某一类任务或能力的同时,尽可能不损失模型原有的通用指令理解能力。因为在下游或垂直领域应用中,我们设计的推理任务风格或形式,往往很难通过prompt来稳定实现。这种情况下就会依赖微调来注入稳定的推理风格,但同时在......
  • 题解:P10320 勇气(Courage)
    P10320勇气(Courage)推导过程本题是一道数学题,重点是如何推导出正确式子。首先,先特判几个特殊点:当\(n>=2\)且\(x=2\)时,是不存在解的,战斗力无论何时都不会超过\(2^{n}\)。当\(x\)不强化就以大于\(2^{n}\)。当\(x\)第一次强化达到\(x^{2}\)时,大于\(2^{n}\)......
  • RAG应用开发实战(01)-RAG应用框架和解析器
    1开源解析和拆分文档第三方的工具去对文件解析拆分,去将我们的文件内容给提取出来,并将我们的文档内容去拆分成一个小的chunk。常见的PDFwordmarkdown,JSON、HTML。都可以有很好的一些模块去把这些文件去进行一个东西去提取。优势支持丰富的文档类型每种文档多样化选择与......
  • 知识图谱增强的KG-RAG框架
    昨天我们聊到KG在RAG中如何发挥作用,今天我们来看一个具体的例子。我们找到一篇论文:https://arxiv.org/abs/2311.17330,论文的研究人员开发了一种名为知识图谱增强的提示生成(KG-RAG)框架(https://github.com/BaranziniLab/KG_RAG),该框架利用生物医学知识图谱SPOKE与大型语言模型相结......