Datawhale AI x 魔搭 夏令营第四期 魔搭-大模型应用开发方向 task03笔记

1 . 引言

1.1 什么是RAG

RAG通常是指Retrieval-Augmented Generation,这是一种结合信息检索与生成模型的自然语言处理技术。RAG通过检索外部知识库中的相关信息来增强生成模型的能力,使得生成的回答更为准确和富有信息量。这种方法通过引入外部知识,使大模型能够生成准确且符合上下文的答案,同时能够减少模型幻觉的出现。由于RAG简单有效,它已经成为主流的大模型应用方案之一。

基本步骤如下:
1. 检索阶段:使用查询在预先构建的知识库中检索相关文档或段落。
2. 生成阶段:将检索到的相关文档或段落与原始查询一同输入到生成模型中,以生成最终的回答。

  • 索引:将文档库分割成较短的 Chunk,即文本块或文档片段,然后构建成向量索引。

  • 检索:计算问题和 Chunks 的相似度,检索出若干个相关的 Chunk。

  • 生成:将检索到的Chunks作为背景信息,生成问题的回答。

1.2 一个完整的RAG链路

从上图可以看到,线上接收到用户query后,RAG会先进行检索,然后将检索到的 Chunksquery 一并输入到大模型,进而回答用户的问题。为了完成检索,需要离线将文档(ppt、word、pdf等)经过解析、切割甚至OCR转写,然后进行向量化存入数据库中。

离线计算和实时计算(以下内容来自知乎,因为我觉得课件有点点繁琐)

离线计算
离线计算,通常也称为“批处理”,表示那些离线批量、延时较高的静态数据处理过程。
离线计算适用于实时性要求不高的场景,比如离线报表、数据分析等,延时一般在分钟级或小时级,多数场景是定时周期性执行一个Job任务,任务周期可以小到分钟级,比如每五分钟做一次统计分析,大到月级别、年级别,比如每月执行一次任务。我们最熟悉的MapReduce就是一个离线计算框架,Spark SQL也通常用于离线计算任务。

实时计算
实时计算,通常也称为“实时流计算”、“流式计算”,表示那些实时或者低延时的流数据处理过程。
实时计算通常应用在实时性要求高的场景,比如实时ETL、实时监控等,延时一般都在毫秒级甚至更低。目前比较流行的实时框架有Spark Streaming与Flink。其中,Spark Streaming属于微批处理,是一种把流当作一种批的设计思想,具有非常高的吞吐量但延时也较高,这使得Streaming的场景也得到了一定的限制;Flink则是事件驱动的流处理引擎,是一种把批当作一种有限的流的设计思想,具有高吞吐,低延时,高性能的特点。

(下面这段是来自课件)

由于 向量模型 能力有限,而随着知识库的增大,已经超出了其容量,因此准确性就会下降。在这种情况下,相似度最高的结果可能并不是最优的。为了解决这一问题,提升RAG效果,研究者提出增加一个二阶段检索——重排 (Rerank),即利用 重排模型(Reranker),使得越相似的结果排名更靠前。这样就能实现准确率稳定增长,即数据越多,效果越好(如上图中紫线所示)。通常,为了与 重排 进行区分,一阶段检索有时也被称为 精排 。而在一些更复杂的系统中,在 召回精排 之间还会添加一个 粗排 步骤,这里不再展开,感兴趣的同学可以自行搜索。综上所述,在整个 检索 过程中,计算量的顺序是 召回 > 精排 > 重排,而检索效果的顺序则是 召回 < 精排 < 重排 。当这一复杂的 检索 过程完成后,我们就会得到排好序的一系列 检索文档(Retrieval Documents)。然后我们会从其中挑选最相似的 k 个结果,将它们和用户查询拼接成prompt的形式,输入到大模型。最后,大型模型就能够依据所提供的知识来生成回复,从而更有效地解答用户的问题。至此,一个完整的RAG链路就构建完毕了。

2 . 实战

还是一如既往建造实例,然后下载需要用的,最后运行所有代码

git lfs install git clone https://www.modelscope.cn/datasets/Datawhale/AICamp_yuan_baseline.git cp AICamp_yuan_baseline/Task\ 3:源大模型RAG实战/* .(代码

为了进行模型微调以及Demo搭建,还需要在环境中安装streamlit

# 安装 streamlit pip install streamlit==1.24.0(代码

紧接着进行模型的下载,就一步一个脚印按照攻略就完事了。

首先是向量模型下载

# 向量模型下载 from modelscope import snapshot_download model_dir = snapshot_download("AI-ModelScope/bge-small-zh-v1.5", cache_dir='.')(代码)

紧接着就接着他的步骤:

最后七七八八整一下就完成咯。

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值