NVIDIA 大模型 RAG 分享笔记

文章目录

  • 大语言模型在垂直领域落地的三个挑战:
  • 什么是 RAG以及为什么能解决大预言模型所带来的的这三个问题
  • RAG 不是一项技术而是整体的 Pipeline
    • 非参数化 :数据库部分
      • 加载到数据库中
      • 检索阶段
    • 提升检索效率的技术
      • 检索前:对query做处理
        • use query routing
        • Query transformations
        • Sentence-window retrieval & Auto-merge retriveal
      • 检索中
      • 检索后
        • Re-ranker
        • Meta-data filtering
        • Prompt Compression
      • 总结
    • 参数化的部分:模型的选择和部署
    • 评价
  • NVIDIA 提供的 RAG 端到端解决方案
    • embedding model
    • RAPIDS RAFT 加强的index
    • 大语言基础模型
    • 部署框架 TensorRT-LLM
    • NeMo Guardrails
    • Evaluating RAG Pipeline
    • RAG Pipeline Samples in NVIDIA
  • 借助于RAG-Copilot 如何提升工作效率
    • RAG 技术和微调技术的比较
    • 高级 RAG
      • NVIDIA 的加持

大语言模型在垂直领域落地的三个挑战:

  • 数据是有一定范围的。大量的数据在一定的时间内训练完成的。确定数据对于基础模型是有一定的范围的。对专业领域,垂直领域的应用场景来说,知识是不够全面的。是缺乏专业的知识的。
  • 数据有时间限制的。知识更新迭代快,给的回答可能过时
  • 幻觉

RAG 是一种解决的 pipeline.

NVIDIA 大模型 RAG 分享笔记_第1张图片

什么是 RAG以及为什么能解决大预言模型所带来的的这三个问题

RAG对于大语言模型来说类比于开卷考试。

三个步骤

  • Retriveal
  • Augmentation: 增强的 prompt
    • 增强的上下文是有理有据的,减少幻觉
  • 参数化的知识,结合传入的数据,生成

技术

  • 非参数化的技术:数据库的部分
  • 预训练的参数化部分
    • 基础大语言模型的选择
    • 部署平台的选择,提升用户的体验

RAG 不是一项技术而是整体的 Pipeline

非参数化 :数据库部分

NVIDIA 大模型 RAG 分享笔记_第2张图片

加载到数据库中

准备好数据,需要放进数据库中的数据类型
NVIDIA 大模型 RAG 分享笔记_第3张图片

  • Documents Loader

    • langchain 或其他工具提供的加载方式进行数据加载
    • 数据本身可能涉及到一些冗余重复的文字,比如统一的公司后缀:这是一个关于。。。之类的文档。。。声明之类,在放进数据库之前,应该统一进行清洗处理。
      NVIDIA 大模型 RAG 分享笔记_第4张图片
    • Chunk
      因为大语言模型对于输入的窗口是有一定的限制的,不能太大。这取决于基础模型在本身的训练过程中或者它的 attention 机制。那么我们在分 chunk 的时候可以有不同的选择。可以用固定大小的chunk,也可以用动态的,动态的是指用一些标志来作为一个分割,比如一个段落按回车符分或者一个完整的句子按句号分,就是尽可能划分为有意义的分块。
      针对纯文本,可以增加重叠部分。好处是有一个承上启下的作用,给到模型的时候会附带逻辑。
      NVIDIA 大模型 RAG 分享笔记_第5张图片
  • Embedding Model

    • 一般是一个 encoder model.
    • 可能需要加prompt,才能达到比较好的检索效果
      NVIDIA 大模型 RAG 分享笔记_第6张图片
  • Vector Database

    • 是否支持分布式部署
    • 是否支持需要的索引方式等
      NVIDIA 大模型 RAG 分享笔记_第7张图片

检索阶段

应用上线之后,真的来了问题,需要把问题转换成向量,去向量空间里面去做一个近似性搜索,找到相关文档进行返回。

  • Database Search
    • precision:检出的文档是否是问题相关的上下文
    • recall: 和问题相关的文档是否全部检出,只返回一两个可能无法提升rag整体效果
      所以如何提高 similarity search 返回整体的精度也是非常重要的一点。
      NVIDIA 大模型 RAG 分享笔记_第8张图片
      如何采用技术来提升相似性的精确度和准确度。

一个好的向量数据会把含义相近的上下文放在一起,区分单纯的关键词匹配。
索引一般采用的是 ANN 算法。

NVIDIA 大模型 RAG 分享笔记_第9张图片

提升检索效率的技术

分为检索前、检索中、检索后三个阶段,看可以采用的技术。
NVIDIA 大模型 RAG 分享笔记_第10张图片

检索前:对query做处理

use query routing

借助 LLM 的能力,可以理解成有一个小小的 LLM agent,拿到用户的问题之后,会去看问题属于哪一类。
比如会在数据库中建立两类索引,一类是和总结相关的,另外的索引就是常规的明细介绍。如果发现问题是和总结相关的,小agent就应该说你应该去 summay index 里面去做检索。
NVIDIA 大模型 RAG 分享笔记_第11张图片

Query transformations

借助 LLM 的技术,对 query 做一个转换

  • 重写问题。问题问得不好,LLM 重写一个问题再去向量数据库中检索
  • HyDE, 先不用 RAG 这样的增强方式,就让这个问题直接到大语言模型产生一个答案。然后把问题和答案同时送到向量数据库中去做检索
  • 将复杂问题做拆解,拆解之后再进行检索
Sentence-window retrieval & Auto-merge retriveal

chunk 如果太大, 向量表示可能隐藏掉相关文本的语义。
使用从小到大的技术。

  • 使用小的chunk 去生成 embedding vector。
    但是因为chunk比较小,给到大语言模型的上下文是不足够的,让后就使用 “大”(to big)
    • Sentence-window retrieval : 把每个句子都去生成一个多维向量,检索的时候是精确检索到了句子,为了提高上下文的丰富性,可以把前5个句子,后5个句子同时送到大语言模型中做一个上下文的增强。
    • Auto-merge retriveal:采用树型的存储结构,比如知道一个段落产生了这个 vector, 知道段落属于哪个小节,属于哪章节。检索完小的段落之后,可以找到它的父节点,可以把小节的内容,更丰富的内容送进大模型中去做生成。这样就能够保证检索的精度,同时保证上下文够丰富,能够生成符合我们预期的内容。
      NVIDIA 大模型 RAG 分享笔记_第12张图片

检索中

hybrid: 混合的检索方式 keyword+embedddings.
把 keyword 加到 query 里面,做一个精确的检索?具体做法?
NVIDIA 大模型 RAG 分享笔记_第13张图片

检索后

Re-ranker

这个是比较重要的,也是建议刚开始建立原型的话也可以去采用的一个技术.

相似性搜索后,和相关不是百分百对应的。检索出来的上下文不一定是相关的。可以再用一个另外一个小型的模型,输入是用户的问题以及检索出来的文档,去看问题和文档的相关性。
再去做一个排序,做一个二级检索。二级检索的时候就要对前面的检索进行一定的调整。(应该只是对第一轮检索做了一个相关性过滤)
第一轮,检索100个或30个,re-ranker 后用 top5, 放进大语言模型做生成
NVIDIA 大模型 RAG 分享笔记_第14张图片

Meta-data filtering

存储时可以把作者存入
检索时可以增加作者这个元数据去做二次过滤,去提升检索效果

NVIDIA 大模型 RAG 分享笔记_第15张图片

Prompt Compression

大语言模型有 window 限制, 找到的 chunk,尽管用了一些方法,但是还是存在一些噪声,和query不太相关,但是却不太能把它删除。
再借助另一个语言模型,把增强型的prompt再进行一个压缩,把有用的信息增强,把不相关的信息减弱。

NVIDIA 大模型 RAG 分享笔记_第16张图片

总结

NVIDIA 大模型 RAG 分享笔记_第17张图片

参数化的部分:模型的选择和部署

NVIDIA 大模型 RAG 分享笔记_第18张图片
模型:适合场景的模型,比如代码类,问答类会有对应的模型
部署:低延迟、高吞吐率。是否支撑换模型。

评价

在产品阶段不是一蹴而就,需要多次迭代。需要看实践是否满足需求。如何评价整个 RAG 流程的工作效率是非常重要的一环。

  • RAGAS
  • truelens
  • standford ARES

不同的评估标准的指标都不一样,对标准的计算公式也不太一样,难度也不同,按需选择。
NVIDIA 大模型 RAG 分享笔记_第19张图片

NVIDIA 提供的 RAG 端到端解决方案

NVIDIA 大模型 RAG 分享笔记_第20张图片

embedding model

nvidia text qa embedding model
NVIDIA 大模型 RAG 分享笔记_第21张图片

RAPIDS RAFT 加强的index

提升检索速度
GPU 加速的 ANN 索引
NVIDIA 大模型 RAG 分享笔记_第22张图片
NVIDIA 大模型 RAG 分享笔记_第23张图片

大语言基础模型

NVIDIA 大模型 RAG 分享笔记_第24张图片

部署框架 TensorRT-LLM

NVIDIA 大模型 RAG 分享笔记_第25张图片

NeMo Guardrails

为输出提供围栏?具体没说,已经开源,可以查看文档。
已经开源,可以查看文档

NVIDIA 大模型 RAG 分享笔记_第26张图片

Evaluating RAG Pipeline

RAGAS: Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines

RAG Pipeline Samples in NVIDIA

NVIDIA/GenerativeAIExamples

借助于RAG-Copilot 如何提升工作效率

Example: ChipNemo
一个借助于RAG制造芯片的例子。里面是结合了RAG和微调两种技术。
Custom tokenizers| Domain-adaptive continued pretraining |
Supervised fine-tuning (SFT) with domain-specific instructions | domain-adapted retrieval models.

RAG 技术和微调技术的比较

NVIDIA 大模型 RAG 分享笔记_第27张图片

高级 RAG

NVIDIA 大模型 RAG 分享笔记_第28张图片

NVIDIA 的加持

NVIDIA 大模型 RAG 分享笔记_第29张图片

你可能感兴趣的:(大模型,笔记)