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

news2025/3/31 22:22:02

本专栏聚焦大语言模型(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.coloradmin.cn/o/2323750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PEmicro Multilink FX调试踩坑

文章目录 1.背景2 功能说明2.1 实时数据查看功能2.1 电压观测2.2 SWO功能 3 设置与支持 1.背景 既然使用了NXP的芯片,笔者就想使用一下它的专用调试器,这里先说一下,笔者是从朋友那里借了一个调试器,型号为PEmicro Multilink FX …

主流大模型采用的架构、注意力机制、位置编码等汇总表

记录下主流大模型的一些核心知识点,包括: 架构注意力机制位置编码归一化激活函数模型参数 表中的一些模型已经是很久之前的了,比如表中并未收入 DeepSeek V3 中使用的MLA的注意力机制。先占个位,后续如果有更新的汇总表再来更…

SpringBoot学习笔记3.27

目录 实战篇第二课 1.注册参数的校验: 学习过程中遇到的问题: 1.什么是正则表达式 2.怎么自定义异常? 1. 创建全局异常处理类 2. 定义响应对象 3. 使用 ExceptionHandler 4. 设置响应状态码 5. 返回统一响应 6. 测试全局异常处理 …

2025NCTF--Web

文章目录 Websqlmap-masterez_dashez_dash_revenge Web sqlmap-master 源码 from fastapi import FastAPI, Request from fastapi.responses import FileResponse, StreamingResponse import subprocessapp FastAPI()app.get("/") async def index():return File…

如何破解软件自动化测试框架的维护难题

破解软件自动化测试框架的维护难题应从优化测试用例设计、加强脚本的模块化与复用性、提高自动化测试工具的选择与使用效率等方面入手。其中,加强脚本的模块化与复用性尤为关键,通过提高脚本的模块化程度,可以显著降低后续维护成本&#xff0…

外星人入侵(python设计小游戏)

这个游戏简而言之就是操作一个飞机对前方的飞船进行射击,和一款很久之前的游戏很像,这里是超级低配版那个游戏,先来看看效果图: 由于设计的是全屏的,所以电脑不能截图。。。。 下面的就是你操控的飞船,上面…

iOS rootless无根越狱检测方案

不同于安卓的开源生态,iOS一直秉承着安全性更高的闭源生态,系统中的硬件、软件和服务会经过严格审核和测试,来保障安全性与稳定性。 据FairGurd观察,虽然iOS系统具备一定的安全性,但并非没有漏洞,如市面上…

LLM 优化技术(1)——Scaled-Dot-Product-Attention(SDPA)

在 Transformer 中抛弃了传统的 CNN 和 RNN,整个网络结构完全由Scaled Dot Product Attention 和Feed Forward Neural Network组成。一个基于 Transformer 的可训练的神经网络可以通过堆叠 Transformer 的形式进行搭建,Attention is All You Need论文中通…

基于音频驱动的CATIA动态曲面生成技术解析

一、技术背景与创新价值 在工业设计领域,参数化建模与动态仿真的结合一直是研究热点。本文提出的音频驱动建模技术突破了传统参数调整方式,实现了音乐节奏与三维曲面的实时动态交互。该技术可广泛应用于以下场景: ​艺术化产品设计&#xf…

5-管理员-维护权限

在“后台”-“人员管理”-“权限”下,通过不同的操作按钮,按照权限分组对权限进行设置。操作部分的按钮依次为 视野维护:设置该分组可以查看、访问的视图。权限维护:设置分组成员可以操作的具体动作等所有在禅道中涉及的权限。成…

全新升级 | Built For You Spring ‘25 发布,Fin 智能客服实现新突破!

图像识别、语音交互、任务自动化,立即体验智能客服蜕变! 上周,Intercom 举办了 Built For You Spring 25 发布会,正式揭晓了 AI Agent Fin 的一系列令人振奋的更新。Fin 正在以前所未有的速度革新客户支持模式——它已经成功解决了…

LeeCode 434. 字符串中的单词数

统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。 请注意,你可以假定字符串里不包括任何不可打印的字符。 示例: 输入: "Hello, my name is John" 输出: 5 解释: 这里的单词是指连续的不是空格的字符,所以 "…

【AI编程学习之Python】第一天:Python的介绍

Python介绍 简介 Python是一种解释型、面向对象的语言。由吉多范罗苏姆(Guido van Rossum)于1989年发明,1991年正式公布。官网:www.python.org Python单词是"大蟒蛇”的意思。但是龟叔不是喜欢蟒蛇才起这个名字,而是正在追剧:英国电视喜剧片《蒙提派森的飞行马戏团》(Mo…

西域平台商品详情接口设计与实现‌

接口描述: 该接口用于获取西域平台中指定商品的详细信息,包括商品名称、价格、库存、描述、图片等。 点击获取key和secret 接口地址: GET /api/product/detail 请求参数: 参数名 类型 是否必填 描述 productId st…

如何让 history 记录命令执行时间?Linux/macOS 终端时间戳设置指南

引言:你真的会用 history 吗? 有没有遇到过这样的情况:你想回顾某个重要命令的执行记录,却发现 history 只列出了命令序号和内容,根本没有时间戳?这在运维排查、故障分析、甚至审计时都会带来极大的不便。 想象一下,你在服务器上误删了某个文件,但不知道具体是几点执…

04-SpringBoot3入门-配置文件(多环境配置)

1、简介 在 SpringBoot 中,不同的环境(如开发、测试、生产)可以编写对应的配置文件,例如数据库连接信息、日志级别、缓存配置等。在不同的环境中使用对应的配置文件。 2、配置环境 # 开发环境 zbj:user:username: root # 测试环…

windows第十八章 菜单、工具栏、状态栏

文章目录 创建框架窗口菜单菜单的风格通过资源创建菜单菜单的各种使用通过代码创建菜单在鼠标位置右键弹出菜单 CMenu常用函数介绍工具栏方式一,从资源创建工具栏方式二,代码创建 状态栏状态栏基础创建状态栏 创建框架窗口 手动创建一个空项目&#xff…

EMC电源端传导干扰预测试

本实验需要在微波暗室里面进行,隔离外界干扰。 1.EMI接收机和人工电源网络的电源线都插在隔离变压器上面,隔离变压器的电源插在AC220上面 2.被测设备EUT的电源线接在人工电源网络上: 人工电源网络的信号输出端连接EMI接收机。 EMI接收机前面…

94二叉树中序遍历解题记录

怎么说呢,以为这道题不用记录了,菜得吓到了自己。起因是这个遍历的递归一般是写两个函数完成,如下: func inorder(root *TreeNode, res *[]int) {if root nil {return}inorder(root.Left, res)*res append(*res, root.Val) // …

java项目之基于ssm的亚盛汽车配件销售业绩管理系统(源码+文档)

项目简介 亚盛汽车配件销售业绩管理系统实现了以下功能: 亚盛汽车配件销售业绩管理系统根据调研,确定管理员管理客户,供应商,员工,管理配件和配件的进货以及出售信息。员工只能管理配件和配件的出售以及进货信息&…