构建大语言模型应用:简介(第一部分)

本专栏聚焦大语言模型(LLM)相关内容的解析,通过检索增强生成(RAG)应用的视角来进行。

本系列文章

  1. 简介(本文)
  2. 数据准备
  3. 句子转换器
  4. 向量数据库
  5. 搜索与检索
  6. 大语言模型
  7. 开源检索增强生成
  8. 评估
  9. 大语言模型服务
  10. 高级检索增强生成 RAG

在这里插入图片描述

如上图所示,即使是一个简单的检索增强生成应用,也需要调整许多不同的参数、组件和模型。

在我最近对语言模型(LLM)应用的探索中,检索增强生成(RAG)所扮演的重要角色让我着迷。要理解从概念化到在云端部署的端到端检索增强生成架构,可能颇具挑战性。

为了解决这个问题,我很高兴地宣布,即将推出一系列详细的博客文章。我将通过检索增强生成应用的视角,剖析大语言模型的复杂之处,全面讲解检索增强生成流程的每个阶段,并提供实际操作经验。

我的目标是让每个人都能更轻松地理解复杂的大语言模型世界,确保每个阶段都能得到详细的阐述。

和我一起踏上这段富有启发性的旅程,通过对检索增强生成的全面研究,深入挖掘大语言模型应用的潜力。

1. 什么是检索增强生成?

如果你一直在向量存储或其他一些数据库中查找数据,并在生成输出时将相关信息作为上下文传递给大语言模型,那么你已经在进行检索增强生成了。检索增强生成,简称 RAG,是由 Meta 在 2020 年推广的一种架构,旨在通过将相关信息与问题/任务详情一起传递给模型,来提高大语言模型的性能。

2. 为什么选择检索增强生成?

大语言模型是在大量的语料库上进行训练的,它们可以利用其参数化的记忆来回答任何问题或完成任务。这些模型存在知识截止日期,具体取决于它们最后一次训练的时间。当被问到超出其知识库范围的问题,或者关于在知识截止日期之后发生的事件的问题时,模型很有可能会产生幻觉(给出错误或无根据的答案)。Meta 的研究人员发现,通过提供与当前任务相关的信息,模型完成任务的性能会显著提高。

例如,如果模型被问到一个在截止日期之后发生的事件,将关于该事件的信息作为上下文提供,然后再提出问题,这将有助于模型正确回答问题。由于大语言模型的上下文窗口长度有限,我们只能传递与当前任务最相关的知识。我们在上下文中添加的数据质量会影响模型生成的回复质量。机器学习从业者在检索增强生成流程的不同阶段会使用多种技术来提高大语言模型的性能。

3. 检索增强生成的高层架构

LangChain 有一个以最小(但并非最简单)形式呈现的检索增强生成示例:

一个典型的检索增强生成应用有两个主要组件:

  • 索引构建:这是一个从数据源摄取数据并对其进行索引的流程。这通常是离线进行的。
  • 检索与生成:实际的检索增强生成链,它在运行时接收用户查询,从索引中检索相关数据,然后将其传递给模型。

从原始数据到答案的最常见完整流程如下:

索引构建

  • 加载:首先,我们需要加载数据。这是通过文档加载器(DocumentLoaders)来完成的。
  • 分割:文本分割器将大型文档分割成较小的块。这对于索引数据和将其传递给模型都很有用,因为大块数据更难搜索,并且无法放入模型有限的上下文窗口中。
  • 存储:我们需要一个地方来存储和索引我们分割好的数据,以便日后进行搜索。这通常是使用向量存储(VectorStore)和嵌入模型(Embeddings model)来完成的。

在这里插入图片描述

检索

给定用户输入,使用检索器(Retriever)从存储中检索相关的分割数据。

生成

聊天模型/大语言模型使用包含问题和检索到的数据的提示来生成答案。

在这里插入图片描述

from langchain.document_loaders import WebBaseLoader
from langchain.indexes import VectorstoreIndexCreator
loader = WebBaseLoader("https://www.promptingguide.ai/techniques/rag")
index = VectorstoreIndexCreator().from_loaders([loader])
index.query("What is RAG?")

通过这五行代码,我们得到了关于检索增强生成(RAG)的描述,但代码被高度抽象了,所以很难理解其中发生了什么:

  • 我们获取了一个网页的内容(在这个例子中,这是我们的知识库)。
  • 我们处理源内容并将其存储在知识库中(在这个例子中是一个向量数据库)。
  • 我们输入一个提示,LangChain 从知识库中找到相关信息,并将提示和知识库的结果都传递给大语言模型。

虽然这个脚本对于原型设计和理解使用检索增强生成的主要步骤很有帮助,但它对于进一步的开发并没有太大的用处,因为你没有太多的控制权。让我们来讨论一下实现过程中涉及的内容。

4. 结论

在大语言模型应用系列的第一部分中,我们剖析了检索增强生成(RAG)在增强大语言模型(LLMs)方面的重要作用。从理解检索增强生成背后的动机,到探索大语言模型应用架构的组件,我们揭示了使这些应用发挥作用的各个层面。

我们深入探讨了知识库检索的复杂之处,强调了 ETL(抽取、转换、加载)流程以及像 Unstructured、LlamaIndex 和 LangChain 的文档加载器等工具的重要性。我们还强调了维护最新知识库的重要性,并提到了高效的文档索引过程。

请继续关注我们即将发布的博客文章,我们将继续探索检索增强生成流程的其余阶段。从用户查询处理到前端开发,我们将提供实际操作的见解,揭开大语言模型应用的神秘面纱。让我们一起释放大语言模型的全部潜力,让复杂的知识在自然语言理解和生成领域变得通俗易懂。敬请期待更多内容!

鸣谢

在这篇博客文章中,我们整理了来自各种来源的信息,包括研究论文、技术博客、官方文档等。

以下是参考列表:

  • https://llmstack.ai/blog/retrieval-augmented-generation
  • https://python.langchain.com/v0.1/docs/use_cases/question_answering/#quickstart
  • https://python.langchain.com/v0.1/docs/use_cases/question_answering/#quickstart
  • https://medium.com/@vipra_singh/building-llm-applications-introduction-part-1-1c90294b155b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43474.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python:日志模块操作及基本配置,日志格式化输出

logger(日志管理器):用户默认是root,其配置步骤为: 1.初始化对象 2.设置级别 3.定义handler(控制台或文件显示) 4.格式化输出 import logging #创建log文件并设置级别 logging.basicConfig(filenametext.log, levellogging.DEBUG) #在文…

The selected directory is not a valid home for Go SDK

安装完毕Go和GoLand之后,重新配置GoLand的GOROOT时,可能会报错 The selected directory is not a valid home for Go SDK 需要找到安装Go的目录,我的目录如下 D:\SoftFolder\Go\src\runtime\internal\sys 进入到sys文件下,找到…

pycharm找不到conda可执行文件解决办法

配置一个新项目,需要使用远程服务器环境的时候,找不到anaconda里面的python可执行文件,怎么都解决不了,很尴尬,看了很多,终于找到一个博客有用: https://blog.csdn.net/weixin_43912188/articl…

Blender多摄像机怎么指定相机渲染图像

如题目所说,当blender的场景里面有摄像机的时候,按F12可以预览渲染结果,但是当有多个摄像机的时候就不知道使用哪个进行渲染了。 之前在网上没有找到方法,就用笨方法,把所有的摄像机删除,然后设置自己需要…

org.apache.maven.surefire:surefire-junit-platform:jar:2.22.2 Maven打包失败

org.apache.maven.surefire:surefire-junit-platform:jar:2.22.2 解决办法 勾上这个,打包时跳过测试代码

CKS认证 | Day3 K8s容器运行环境安全加固

一、最小特权原则(POLP) 1)最小特权原则 (Principle of least privilege,POLP) : 是一种信息安全概念,即为用户提供执行其工作职责所需的最 小权限等级或许可。 最小特权原则被广泛认为是网络安全的最佳实…

项目-苍穹外卖(十七) Apache POI+导出数据

一、介绍 二、入门案例 package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File; import java.io.FileNotFoundException; import jav…

2023第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组(真题题解)(C++/Java题解)

本来想刷省赛题呢,结果一不小心刷成国赛了 真是个小迷糊〒▽〒 但,又如何( •̀ ω •́ )✧ 记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 一、子2023-&#xff…

Cannot find a valid baseurl for repo: centos-sclo-sclo/x86_64

​ rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpmyum clean allyum macache fast​ 编辑配置文件 /etc/yum.repos.d/zabbix.repo and enable zabbix-frontend repository. [zabbix-frontend]...enabled1... 下载相关…

【STM32】WDG看门狗(学习笔记)

学习来源----->江协科技STM32 WDG简介 WDG(Watchdog)看门狗看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长…

Nginx RTMP 服务器开发设计与实现

引言 Nginx 是一个高性能的 Web 服务器和反向代理服务器,广泛应用于大规模网站的高并发访问中。RTMP(Real-Time Messaging Protocol)是由 Adobe 提出的一个用于流媒体传输的协议,广泛应用于视频直播领域。通过 Nginx 的 RTMP 模块…

plantsimulation编辑图标怎么把图标旋转90°

1、打开要旋转的图标,点击“导出” 2、随意设置个文件名,点击保存。 3、用画图打开,点击旋转后保存。 4、新建一个图标,点击导入,选择刚刚保存的文件即可。

Jmeter性能测试

Jmeter性能测试 一、性能测试介绍 1、什么叫做性能测试? (1)通过某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试 (2)指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系…

OpenCV基础——梯度计算、边缘检测、图像金字塔

接上期: OpenCV基础——图像滤波和形态学操作-CSDN博客 一.梯度计算 上贴已经讲过,梯度可以浅显地理解为图像中发生颜色变化的局部区域,也即边界点。本质上是通过构造与卷积核相同的矩阵,计算边缘区域像素点的差异值——也即梯度…

英语学习笔记1

目录 第一部分 例句解析 句子一 原文:Learning English is never easy but always rewarding!翻译:学习英语从来都不容易但总是有回报的! 句子二 原文:Sometimes the detailed work of understanding grammar and building v…

测试测试 测试

**非常详细的视频和文字教程,讲解常见的openmv教程包括 巡线、物体识别、圆环识别、阈值自动获取等。非常适合学习openmv、K210、K230等项目 视频合集链接在 openmv教程合集 openmv入门到项目开发 openmv和STM32通信 openmv和opencv区别 openmv巡线 openmv数字识别教…

CSS rem、vw/vh、less

目录 分辨率、视口与二倍图 一、分辨率与像素基础 1. 物理像素(Physical Pixels) 2. 逻辑像素(CSS 像素) 二、视口(Viewport)控制 1. 视口类型 2. 设置理想视口 三、二倍图(Retina/HiD…

【数电】半导体存储电路

组合逻辑电路输入和输出之间是确定关系,与之前的历史记录没有任何关系。时序逻辑电路则有相应的存储元件,要把之前的状态保存起来。 要构成时序逻辑电路,必须要有相应的存储元件,第五章讲述相应的存储元件 一、半导体存储电路概…

OPPO手机如何实时翻译会议视频?视频翻译轻松应对多语言场景

在全球化日益深入的今天,跨语言沟通已成为职场和生活中的常见需求。无论是参加国际会议、观看外语视频,还是与海外客户交流,语言障碍都可能成为效率的绊脚石。幸运的是,OPPO手机凭借其强大的功能和智能化设计,为用户提…

28_跨域

目录 promise promise的基本语法 async await try catch promise 静态方法 跨域 跨域的解决方案 1-cors ​编辑 2-jsonp方案 3-代理服务器 promise promise 是一个es6新增的语法 承诺的意思 作用:是专门用来解决回调地狱!!!! promise的基本语法 // 基本语法:// Pr…