LlamIndex二 RAG应用开发

在AutoGen)系列后,我又开始了LlamIndex 系列。欢迎查询LlamaIndex 一 简单文档查询 - 掘金 (juejin.cn)了解LlamIndex,今天我们来看看LlamIndex的拿手戏,RAG应用开发。

何为RAG?

RAG全称"Retrieval-Augmented Generation",即检索增强生成,它是自然语言处理中的一项技术。这种模型结合了检索式(retrieval-based)和生成式(generative)两种组件,以生成更准确、更相关的回答。

结合上篇文章,LlamaIndex擅长为各种格式数据提供读取、转化为大模型需要的数据,最后通过Query 引擎交给大模型进行检索并生成回答。

所以,对Retrieval的理解是大模型对LlamaIndex提供的数据进行检索,是Augmented Generation的理解大模型因LlamaIndex提供的数据,对回答用户提的专业问题更有什针对性,就好像给llm 加了buff。

两个阶段

RAG,也称为检索增强生成,是利用个人或私域数据增强 LLM 的一种范式。它通常包含两个阶段

  1. 索引

读取各种数据,并对数据进行索引,为大模型构建知识库。

在这个阶段,LlamIndex提供了Data Connectors(数据连接器)、Data Indexes(数据索引)

  • Data Connectors

数据连接器。它负责将来自不同数据源的不同格式的数据注入,并转换为 LlamaIndex 支持的文档(Document)表现形式,其中包含了文本和元数据。

  • Documents / Nodes

Document是 LlamaIndex 中容器的概念,它可以包含任何数据源,包括,PDF文档,API响应,或来自数据库的数据。原来这就是LlamIndex专制各种数据格式不服的能力。

Node是 LlamaIndex 中数据的最小单元,代表了一个 Document的分块。它还包含了元数据,以及与其他Node的关系信息。这使得更精确的检索操作成为可能。

  • Data Indexes

LlamaIndex 提供便利的工具,帮助开发者为注入的数据建立索引,使得未来的检索简单而高效。

最常用的索引是向量存储索引 - VectorStoreIndex

image.png

看到这里,对LlamaIndex有了本质的认识, 数据格式千奇百怪不要紧,LlamaIndex提供了Document>Nodes这样的无数据,方便进行embedding索引。

  1. 查询

从知识库检索相关上下文信息,以辅助 LLM 回答问题

在这个阶段,LlamIndex提供了Query Engine,调用query方法就可以拿到LLM生成的结果。

在这个阶段,我们要理解查询的底层。首先,LlamaIndex根据用户的查询,在数据索引中(检索上下文)找到最相关的上下文,并将其一起,传递给LLM,以合成响应。这样,LLM就可以被增强,以获得其不在原始训练数据(LLm原数据)中的最新知识且回答更正确。这就是RAG应用的核心特点,在知识问答、聊天机器人等AI应用中有着广泛的应用场景。

该阶段的构建块

  • 检索器 Retrievers

它定义如何高效地从知识库(已被索引的数据),基于查询,检索相关上下文信息。

  • Node Postprocessors

Node后处理器。它对一系列文档节点(Node)实施转换,过滤,或排名。Node是在上一个阶段LlamaIndex对数据的统一处理得到的节点。

  • Response Synthesizers

它基于用户的查询,和一组检索到的文本块(形成上下文),利用 LLM 生成响应。

这个阶段的工作可以由LlamaIndex提供的各种Engine来启动工作。

Engine

  • Query Engines 查询引擎

允许用户基于知识库,以自然语言提问,并获得回答,以及相关的上下文。 这个引擎的查询工作过程就是上面查询阶段的查询构建过程。

  • Chat Engines

允许用户基于知识库进行对话

  • Agents

代理。它是一种由 LLM 驱动的自动化决策器。代理可以像查询引擎或聊天引擎一样使用。我这里理解为在查询和聊天之外的,定制任务函数。以后我们会有特定篇幅讲解Agents。

image.png

总结

本篇内容以RAG应用为例,解释清楚了LlamaIndex 构建知识库(Knowledge Base)和基于知识库的推理两个阶段的底层工作。

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

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

相关文章

vue处理json数据

背景:后端返回的数据不是我想要的,现在需要把 name 替换为title(小声蛐蛐:又让我处理数据) 后端返回数据格式 修改字段操作:(使用递归遍历的方式将title属性赋了name的值) renderT…

详细分析Mysql临时变量的基本知识(附Demo)

目录 前言1. 用户变量2. 会话变量 前言 临时变量主要分为用户变量和会话变量 1. 用户变量 用户变量是特定于会话的,在单个会话内可以在多个语句中共享 以 符号开头在 SQL 语句中使用 SET 语句或直接在查询中赋值 声明和赋值 SET var_name value; -- 或者 SE…

构建Vue3项目的几种方式,如何简化setup写法

1、说明 在vue2版本中,我们使用vue-cli脚手架进行构建,而切换到Vue3之后,依然可以使用vue-cli脚手架进行构建,但是官方推荐使用vite工具进行构建,下面将介绍几种方式构建vue3项目。 2、使用vue-cli脚手架构建Vue3项目…

【前端面试高频手写题】

# 面试高频手写题 建议优先掌握: instanceof - 考察对原型链的理解 new - 对创建对象实例过程的理解 call/apply/bind - 对this指向的理解 手写promise - 对异步的理解手写原生ajax - 对ajax原理和http请求方式的理解,重点是get和post请求的实现 # 1…

高考填报志愿,怎么分析自己适合什么专业?

高考结束后,很多考生不知道自己的分数段适合什么学校,缺乏目标感,有些专业名称很大,听起来光鲜亮丽,但是是否适合自己,学什么课程,将来就业去向,这些都是需要细致了解的。 专业选择…

matlab 异常值检测与处理——Z-score法

目录 一、算法原理1、算法概述2、主要函数3、参考文献二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、算法概述 使用Z分数法,可以找出距离平均值有多少个标准差值…

Python SQLAlchemy库详解

大家好,在Python生态系统中,SQLAlchemy库是一个强大的工具,为开发人员提供了便捷的方式来处理与数据库的交互。无论是开发一个小型的Web应用程序,还是构建一个大型的企业级系统,SQLAlchemy都能满足你的需求&#xff0c…

【操作与配置】MySQL安装及启动

【操作与配置】MySQL安装及启动 下载MySQL 进入官网,选择社区版下载 在windows安装 选择不登陆下载 安装MySQL 双击官方安装包 选择“Developer Default”(默认)即可 Execute,安装完成后next TCP/IP端口等,默认即可…

【TS】进阶

一、类型别名 类型别名用来给一个类型起个新名字。 type s string; let str: s "123";type NameResolver () > string;: // 定义了一个类型别名NameResolver,它是一个函数类型。这个函数没有参数,返回值类型为string。这意味着任何被…

路灯夜景视频素材去哪里找?傍晚黄昏夜景路灯视频素材网分享

在这个数字化的时代,视频创作者们总是在寻找各种优质素材来提升作品的质感。特别是充满浪漫氛围的路灯夜景,为短视频、电影、广告等增添了独特的视觉魅力。今天,我为大家整理了几个优秀的视频素材网站,帮助您轻松找到高质量的路灯…

flask 之JWT认证实现

目录 1、JWT 1.1、JWT概述 1.2、token的生成 1.3、token校验 1.4、flask项目中实现JWT认证 1、JWT 1.1、JWT概述 JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它由三部分组成,分别是头部、负载和签名。 头部&#xff0…

最新鲸发卡v11.61开心版 无后门发卡平台源码

安装说明 上传所有文件到服务器 或者宝塔 修改thinkphp伪静态,php版本为7.0 /install 安装 登录后台 /admin 定时任务计划设置 进入宝塔控制面板—–计划任务 填写计划任务 解冻任务 设置时间每小时第2分钟 执行 cd /www/wwwroot/website php think UnfreezeMoney 提…

gulimall-search P125 springboot整合elasticsearch版本冲突

一、问题 spring-boot.version 2.2.4.RELEASE,在gulimall-search pom.xml中添加elasticsearch.version 7.4.2后,发现出现如下问题:elasticsearch版本是springboot引入的6.8.6,没有变为7.4.2。 二、原因 在gulimall-search 的pom文件中&#…

kettle从入门到精通 第六十四课 ETL之kettle kettle中执行SQL脚本步骤,使用需当心

1、群里有不定时会有同学反馈执行SQL脚本步骤使用有问题,那么咱们今天一起来学习下该步骤。trans中的执行SQL脚本有两方面功能,使用时需小心,不然很容易踩坑。 官方定义: 翻译: 您可以使用此步骤执行 SQL 脚本&#…

数据库管理-第198期 升级Oracle ACE Pro,新赛季继续努力(20240605)

数据库管理198期 2024-06-05 数据库管理-第198期 升级ACE Pro,新赛季继续努力(20240605)1 惊喜2 变化3 Oracle ACE总结 数据库管理-第198期 升级ACE Pro,新赛季继续努力(20240605) 作者:胖头鱼的…

区间预测 | Matlab实现QRBiTCN分位数回归双向时间卷积神经网络注意力机制时序区间预测

Matlab实现QRBiTCN分位数回归双向时间卷积神经网络注意力机制时序区间预测 目录 Matlab实现QRBiTCN分位数回归双向时间卷积神经网络注意力机制时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现QRBiTCN分位数回归双向时间卷积神经网络注意力机制时序…

51单片机在八位数码管上显示自己学号后八位

1、功能描述 在八位数码管上显示自己学号后八位 2、实验原理 数码管就是通过线路将各个LED灯连接在一起。 P2控制LED的段选, P0控制LED位选。读取时从低位向高位读取,P2_2为高位P2_4为地位,例如P2_4 1; P2_3 0; P2_2 1,那么…

LabVIEW飞机发动机测试与故障诊断系统

LabVIEW飞机发动机测试与故障诊断系统 基于LabVIEW开发了一个飞机发动机测试与故障诊断系统,能够实时监测发动机的运行参数,进行数据采集与分析,并提供故障诊断功能。系统采用高精度传感器和数据采集硬件,适用于发动机的性能测试、…

C++ | Leetcode C++题解之第136题只出现一次的数字

题目&#xff1a; 题解&#xff1a; class Solution { public:int singleNumber(vector<int>& nums) {int ret 0;for (auto e: nums) ret ^ e;return ret;} };

MPU6050篇——温度与角度的读取

一、MPU6050的读写时序 1. MPU6050写时序 1. 首先是IIC的起始信号&#xff0c;也就是&#xff1a; MPU_IIC_Start(); 2. 然后接下来便是发送器件地址以及写命令&#xff1a;其中MPU6050的地址为7位&#xff0c;而八位为一个数据帧&#xff0c;所以在最后一位再加一位是指定…