从零开始打造更强的私有GPT大模型- RAG教程

图片

RAG理论

1. 什么是RAG

众所周知,大模型基于海量的数据来训练,它具备非常强大的智能,能够回答各种问题。但是我们在使用过程中发现,通用大模型在某些专业领域能力还不够强,很多领域相关问题很难回答得上来。通常,预训练(pre-train)的大模型只懂得它训练时用的数据,对于训练集之外的新信息(比如网络搜索新数据或特定行业的知识)就不太清楚。

那么怎么构建一个私有的GPT大模型呢?方法有很多种,包括 1. 重新训练私有领域数据的大模型,2. 基于已有大模型做专有数据的微调(FineTuning) 3. 通过RAG技术,优化大模型基础能力。4. 通过Prompt 工程把私有数据在对话中给到大模型。

RAG: Retrieval Augmented Generation,检索增强生成技术。RAG由FaceBook AI实验室 于2020年提出,他们的论文Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks[1], 提供了一种通过给大模型提供向量数据来增强模型能力的方法。

快速来看一下文章摘要:

  1. 背景与挑战:这些大型预训练语言模型,因其存储了大量事实知识和在 NLP 任务中的出色表现而闻名。但它们在精确获取和处理知识方面存在局限,尤其是在知识要求高的任务中。这导致它们在特定任务的架构上表现不佳。此外,如何提供决策依据和更新模型中的知识仍是一个挑战。
  1. 检索增强生成(RAG)方法:文章提出了一种 RAG 模型的微调方案,这些模型巧妙地结合了预训练的参数记忆(例如 seq2seq 模型)和非参数记忆(例如维基百科的密集向量索引)。通过预训练的神经检索器,这种组合被赋予了新的生命。RAG 模型的目标是利用这两种记忆类型,使语言生成更加生动和具有创造力。
  1. 两种RAG形式:研究精心比较了两种 RAG 形式。一种在整个生成过程中使用相同的检索段落,另一种则可以为每个词汇使用不同的段落。。
  1. 性能与评估:在多种知识密集型 NLP 任务中,RAG 模型经过微调和评估后,创造了三个开放领域问答任务的新纪录,超越了传统的参数型 seq2seq 模型和专门的检索-提取架构。在语言生成方面,与仅使用参数的 seq2seq 模型相比,RAG 模型能生成更加具体、多样和真实的语言。

整体看一下:论文对RAG技术的理解。主要由 RetrieverGenerator两大部分组成。图片

随着时间的推移,尤其是大模型的进步,RAG的架构有些变化,更加组件化和清晰化。如果希望了解更多关于RAG的历史和发展,推荐仔细阅读综述文章:

Retrieval-Augmented Generation for Large Language Models: A Survey

图片image.png

2. 进一步理解RAG

第一节相对学术化一些,我们来看一个更好理解的图:

图片

从上图可以看到RAG的系统核心,由User(Query),(Vector) Index , LLM 三大组件组成。

2.1 三大组件
  1. 用户发起的查询(User->query)。这种查询一般都是自然语言的,用户不再需要学习类似于之前搜索引擎的DSL或者数据库的SQL。这样大幅降低这类系统的使用门槛。

  2. 模型所需的外部数据(Index -> prompt)。可以看到,RAG系统的核心工作其实在这个组件。

    1. 索引:将不同类似的用户数据,比如结构化的关系数据库、非结构化的文本、甚至是可编程的API,通过向量嵌入(Vector embedding)方法来将它们变成向量数据。
    2. 召回,向量数据的召回,本质上通过余弦相似度来找到最匹配的多个向量。目的是从大量数据中快速筛选出与查询最相关的文档子集,为后续的更详细检索过程提供一个更专注的候选集。这种方法旨在提高检索过程的效率和效果,减少计算资源的需求,并加速响应时间。
    3. 查询。这里查询方法有很多种,涉及到向量数据库的相关度计算与评估,不同的查询策略。
  3. 大模型(LLM)。这里面的大模型可以是开源的Llama2/Mistral 等,也可以是闭源的GPT3.5/4等。

2.2 实现RAG的五个步骤

重复总结一下,实现RAG中有五个关键步骤,如下图所示:图片

  • 加载:指将各种文本文件、PDF、其他网站、数据库还是API等数据,导入我们工作流的步骤。
  • 索引:和普通关系数据库无本质差异,在于通过索引加速查询。不同的是,具体的索引算法。
  • 存储:存储索引以及其他元数据,以避免重新索引
  • 查询:对于任何给定的索引,可以进行多种查询,包括子查询、多步查询和混合策略。
  • 评估:提供了关于查询的响应有多准确、快速的客观衡量。

3. RAG的进化

图片image.png

  1. 初级RAG(Naive RAG):这是RAG的最初形式,包括基本的索引、检索和生成过程。它以简单的方式将检索到的信息与生成任务相结合,但可能存在准确性和效率的问题。
  2. 高级RAG(Advanced RAG):在初级RAG的基础上,高级RAG引入了预检索和后检索处理方法,优化了索引和检索流程。这种范式致力于提高检索内容的质量和相关性,以及提升生成任务的效果。
  3. 模块化RAG(Modular RAG):这种范式通过引入多样的模块,如搜索模块、记忆模块和额外的生成模块,提供了更多的灵活性和定制化能力。模块化RAG允许根据特定问题的上下文重新配置或替换模块,实现更复杂和高效的检索增强生成任务。

再次推荐阅读综述文章

Retrieval-Augmented Generation for Large Language Models: A Survey

4. RAG能干嘛?

RAG的LLM应用的用例无穷无尽,但大致可以分为三类:

查询引擎[2]: 查询引擎允许您对您的数据提出问题。它接收自然语言查询,并返回响应,以及检索并传递给LLM的参考上下文。

聊天引擎[3]:聊天引擎用于与您的数据进行多轮对话

Agent(代理)[4]: Agent由LLM驱动,能够实现自动决策。可以采取任意数量的步骤来完成给定的任务,动态地决定最佳行动方案。Agent某种意义上来讲是一种AGI。

5. 给我也搞一个

可以!接下来我们基于Llama Index[5]库来实现一个网页数据的Q&A机器人。

RAG实战

2023 年以来,出现了大量的开源 & 闭源LLM大模型,基本上都能够在上面构建 RAG 系统。最常见的方式包括:

  • GPT-3.5/4 + RAG(闭源方案)
  • Llama 2 / Mistral + RAG(开源方案)

基于LLama-Index 和 GPT3.5 来构建

我们基于来LLama-Index 和 GPT3.5 来构建一个RAG系统,它能够访问你指定的网页数据,你可以提问关于这个网页的任何内容

  1. Llama-Index是一个简单灵活的数据框架,用于连接自定义数据源到大型语言模型(LLM)。
  2. 它提供了API和入门教程,方便用户进行数据的读取和查询。
  3. Llama-Index可以作为桥梁,连接自定义数据和大型语言模型。
  4. 通过Llama-Index,用户可以轻松构建应用程序,并访问私有或特定领域的数据。
  • 复习一遍流程:加载、索引、存储、查询、评估

加载库和数据

在这里插入图片描述

索引&存储

## index 
import os

import openai

#设置你在openai的密钥
os.environ['OPENAI_API_KEY'] = "sk-"

openai.api_key = os.environ['OPENAI_API_KEY']
from llama_index.llms import OpenAI  

## 指定GPT3.5模型,记得要用gpt-3.5-turbo-1106,更便宜
llm = OpenAI(model="gpt-3.5-turbo-1106", temperature=0)
from llama_index import ServiceContext  

## 向量化,采用BAAI的向量库,开源免费,比用OpenAI的embbeding便宜。
service_context = ServiceContext.from_defaults(llm=llm, embed_model="local:BAAI/bge-small-zh-v1.5") #BAAI/bge-small-zh-v1.5. BAAI/bge-small-en-v1.5

查询

在这里插入图片描述

不同的查询策略和效果

图片image.png

图片image.png

图片image.png

完整代码

可以复制我在Colab的notebook [6]直接运行。

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

  • 31
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现大模型RAG(Retrieval Augmented Generation)主要包括**数据准备阶段和应用阶段**两个关键环节。具体步骤如下: 1. **数据准备阶段**: - **数据提取**:首先需要确定并提取适用于特定领域的私域数据,这些数据可以是PDF文件、数据库内容或其他形式的私有知识库。 - **文本分割**:将提取出的文档进行分块处理,以便于后续的处理和检索。 - **向量化**:对分割后的文本块进行向量化操作,即将文本转换为机器能够高效处理的数值表示形式。 - **数据入库**:处理好的数据需要构建索引并存入向量数据库中,为接下来的检索任务做准备。 2. **应用阶段**: - **用户提问**:当用户提出问题时,同样需要将这个查询向量化。 - **数据检索**:利用向量数据库的检索能力,找出与用户提问相似度最高的k个文档片段。 - **注入Prompt**:将检索到的结果结合用户的原始提问,按照一定的Prompt模板组装成一个完整的输入提示给大语言模型。 - **LLM生成答案**:大语言模型根据提供的Prompt生成最终的回答。 此外,还需要考虑如何优化数据的准备过程,比如选择适合的向量化技术(如使用词嵌入模型)以及如何设计高效的检索算法来快速准确地从大量数据中找到相关信息。同时,在应用阶段,需要精心设计Prompt模板,以便大模型能更好地理解问题和检索到的信息,从而给出更准确的回答。 值得一提的是,RAG架构的优势在于它结合了大模型的强大语言理解和生成能力以及向量检索系统的高效信息获取能力,使得大模型能够在专业场景或行业细分领域中提供更加精准和丰富的回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值