特定领域 RAG 新突破:LlamaPack 实现 RAFT 论文方法

一、前言

在上一篇文章《RAFT:让大型语言模型更擅长特定领域的 RAG 任务》中,我们介绍了 RAFT 训练方法,RAFT(检索增强微调)是一种训练方法,可以提高大型语言模型 (LLM) 在开卷、域内问答任务中的性能。给定一个问题和一组检索到的文档,RAFT 训练 LLM 从文档中识别并引用最相关的片段,这些片段有助于回答问题,同时忽略不相关或分散注意力的信息。通过训练模型识别相关信息并提供佐证,RAFT 可以增强 LLM 的推理和解释能力,最终提高其在需要额外信息或知识的情况下准确、合理地回答问题的能力。

RAFT 的一个关键点在于如何生成用于微调的数据集。每个问答对都包含一个“标准答案”文档,可以从中推断出问题的答案,以及一些不相关的“干扰”文档。在训练过程中,这迫使模型学习哪些信息是相关的,哪些信息是无关的,并记忆领域知识。

为了简化 RAFT 数据集的创建过程,LlamaIndex 在 LlamaPack 中实现了 RAFT 论文中提出的方法,该方法主要是将语言模型应用于特定领域的 RAG(检索增强生成)任务。今天,我们将介绍如何使用 RAFTDatasetPack LlamaPack 创建 RAFT Dataset

二、代码实现

使用 LlamaIndex 实现 RAFT 涉及几个关键步骤,以针对特定领域的任务有效地微调大型语言模型 (LLMs)。

2.1、安装依赖

!pip install llama-index
!pip install llama-index-packs-raft-dataset
import os

os.environ["OPENAI_API_KEY"] = ""

2.2、下载数据

!wget --user-agent "Mozilla" "https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt" -O './paul_graham_essay.txt'

2.3、生成 RAFT 数据集

from llama_index.packs.raft_dataset import RAFTDatasetPack

raft_dataset = RAFTDatasetPack("./paul_graham_essay.txt")

# 注意:创建数据集需要使用 GPT-4,可能会产生一定的费用,并且根据文件大小可能需要很长时间。
dataset = raft_dataset.run()

上述数据集是 HuggingFace 数据集格式。您可以将其保存为 .arrow 或 .jsonl 格式,可以参考前文中借助Azure AI Studio 微调的方式,将其用于进一步微调。

output_path = ""
# Save as .arrow format
dataset.save_to_disk(output_path)

# Save as .jsonl format
dataset.to_json(output_path + ".jsonl")

三、LlamaIndex 实现 RAFT 的优势

RAFT 与 LlamaIndex 的结合为特定领域的自然语言处理带来了许多优势:

  • 提高适应能力:通过 RAFT 使用专业领域的文档对大语言模型 (LLM) 进行微调,可以使 LLM 对特定主题有更深入的理解,从而提高它们在复杂语境下的适应能力。
  • 增强推理能力:RAFT 可以帮助训练 LLM 从检索到的文档中提取关键信息,使其能够生成更准确、更符合语境的答案。
  • 抵抗检索误差:RAFT 训练 LLM 理解问题、检索到的文档和答案之间的关系,即使检索过程存在误差,也能保证结果的可靠性。
  • 高效整合知识:RAFT 通过模拟 LLM 需要从外部获取信息的真实场景,简化了将专业知识整合到模型框架中的过程,从而提高知识利用效率。

四、总结

RAFT 和 LlamaIndex 的协同作用是特定领域自然语言处理领域的一次重大进步。通过利用检索文档的力量,RAFT 使 LLM 能够轻松、准确地处理复杂的信息。随着我们将专业知识整合到 LLM 中的探索不断深入,RAFT 将指引我们走向人工智能真正理解和适应人类语言和语境复杂性的未来。

五、References

[1]. RAFT: Adapting Language Model to Domain Specific RAG:https://arxiv.org/abs/2403.10131

[2]. RAFT GitHub Repo:https://github.com/ShishirPatil/gorilla/tree/main/raft

[3]. Llamapack-RAFT:https://github.com/run-llama/llama_index/blob/main/llama-index-packs/llama-index-packs-raft-dataset/examples/raft_dataset.ipynb

你可能感兴趣的:(大模型企业实战,LLM应用实战,AI编程实战,人工智能,RAFT(检索增强微调),LlamaIndex,LlamaPack)