分享
小白学RAG:从零开始的RAG最佳实践
输入“/”快速插入内容
小白学RAG:从零开始的RAG最佳实践
2024年8月21日修改
作者:Coggle数据科学
原文:
https://mp.weixin.qq.com/s/NC8QnK-g...
检索增强生成
(Retrieval Augmented Generation,简称RAG)
已成为一种流行的范式,它使大型语言模型(LLMs)能够访问外部数据,并作为一种机制来减轻幻觉现象。
实现RAG时,可能会面临有效集成检索模型、高效表示学习、数据多样性、计算效率优化、评估和文本生成质量等挑战。鉴于这些挑战,每天都会出现新的技术来改进RAG,使得为特定问题尝试所有组合变得不可行。
在这种情况下,本文提出了实现、优化和评估RAG的最佳实践,特别是针对巴西葡萄牙语,重点在于建立一个简单的推理和实验流程。
https://arxiv.org/pdf/2401.07883
步骤1:数据集准备
作者们选择了巴西葡萄牙语版本的《哈利·波特》第一本书作为数据集。选择这本书的原因是它广为人知,并且
Gemini Pro
和
OpenAI
模型都能够回答有关这本书的一般性问题。
•
数据集大小:使用标准的
ChatGPT
分词器cl100k_base,作者们观察到整本书大约有140,000个token,这使得可以创建包含整本书内容的提示。
•
数据集构建:基于上述数据集,作者们开发了一个包含问题和对应答案的数据集。问题和答案都是由gpt-4模型生成的,并且基于一个参考块(chunk)。
数据准备过程:如图1所示,数据准备过程包括以下步骤:
•
首先,将数据集分割成每个包含1000个token的块,没有重叠,总共得到140个块。
•
然后,使用附录A中描述的提示,为每个块创建了一个问题和答案对,风格类似于SQuAD数据集,这意味着问题的答案存在于参考文本(块)中。
步骤2:定义评价指标
传统评估指标如BLEU和ROUGE可能无法准确捕捉句子之间的相似性。例如,尽管两个句子在翻译成英文后表达相同的意思,但它们的BLEU和ROUGE得分可能很低。
为了解决这个问题,作者们采用了一种在文献中广泛使用的方法,即利用gpt-4根据给定的提示为文本提供评分。作者们设计了一个分为5个类别的评分系统,用于比较两段文本,每个类别都有相应的分数定义。
评分类别
:
•
分数1:答案与参考无关。
•
分数3:答案有很少的相关性,但与参考不一致。
•
分数5:答案有中等相关性,但包含不准确之处。
•
分数7:答案与参考一致,但有小遗漏。
•
分数10:答案完全准确,与参考完全一致。
步骤3:初步实验(无背景信息)
作者们首先定义了一个基线,即在没有任何上下文的情况下,使用大型语言模型(LLMs)回答关于《哈利·波特》的问题。由于LLMs训练于包含几乎整个网络内容的大型数据集上,加之《哈利·波特》宇宙的普及,这为在OpenAI模型上测试独立问题提供了一个强有力的假设。
作者们观察到,对于基本问题,如“哈利·波特是谁?”、“谁杀了邓布利多?”以及“哈利·波特的主要朋友是谁?”,ChatGPT能够准确回答。然而,对于更详细的问题,性能仅是合理的。文中提供了两个详细问题的例子及其答案。
表2显示了不同模型的平均得分和与相对最大得分相比的退化百分比。所有模型的得分都低于相对最大得分,表明在没有检索到的上下文的情况下,模型的性能有所下降。
步骤4:长文本问答实验
与GPT 1和2模型相比,gpt-4-1106-preview模型能够处理高达128k的输入token,这在模型发展的四年内代表了大约128倍的输入容量增加。