跳转到内容

微调

微调模型意味着在一组数据上更新模型本身,以多种方式改进模型。这可以包括提高输出质量、减少幻觉、更全面地记忆数据以及降低延迟/成本。

我们工具包的核心围绕上下文学习/检索增强展开,这涉及在推理模式下使用模型,而非训练模型本身。

虽然微调也可用于通过外部数据“增强”模型,但微调可以通过多种方式补充检索增强:

  • 微调嵌入模型可以在训练数据分布上获得更有意义的嵌入表示——从而带来更好的检索性能。
  • 允许它在给定数据集上学习一种风格
  • 允许它学习在训练数据中可能较少出现的领域特定语言(例如 SQL)
  • 允许它修正那些可能难以通过提示工程修复的幻觉/错误
  • 允许它将更优模型(例如 GPT-4)提炼为更简单/更经济的模型(例如 gpt-3.5、Llama 2)

这是一份不断演进的指南,目前包含与LlamaIndex的三个关键集成。请查看以下章节了解更多详情!

  • 微调嵌入向量以提升检索性能
  • 微调 Llama 2 以改进文本到 SQL 转换
  • 微调 gpt-3.5-turbo 以提炼 gpt-4

我们创建了全面的指南,展示如何以不同方式微调嵌入向量,无论是针对非结构化文本语料库调整模型本身(在本例中为bge),还是为任何黑盒嵌入添加适配器。该流程包含以下步骤:

  1. 使用LlamaIndex在任何非结构化上下文上生成合成问答数据集。
  2. 微调模型
  3. 评估模型。

微调可使检索评估指标提升5-10%。随后您可以将这个经过微调的模型通过LlamaIndex接入您的RAG应用程序。

旧版

我们有多份指南展示如何使用 OpenAI 的微调端点对 gpt-3.5-turbo 进行微调,使其为 RAG/智能体输出 GPT-4 级别的响应。

我们使用GPT-4从任何非结构化上下文中自动生成问题,并使用GPT-4查询引擎流程生成“真实答案”。我们的OpenAIFineTuningHandler回调函数会自动将问题/答案记录到数据集中。

然后我们启动一个微调任务,并得到一个蒸馏模型。我们可以使用Ragas评估该模型,以对比基准测试一个简单的GPT-3.5流程。

旧版

微调模型的另一个应用场景是让模型更擅长输出结构化数据。 我们可以对OpenAI和Llama2都进行这样的优化。

在本教程中,我们将向您展示如何在文本转SQL数据集上微调Llama 2,然后使用LlamaIndex抽象化工具将其用于对任何SQL数据库进行结构化分析。

技术栈包含 sql-create-context 作为训练数据集,OpenLLaMa 作为基础模型,PEFT 用于微调,Modal 用于云计算,LlamaIndex 用于推理抽象层。

在这些教程中,我们的目标是将GPT-4评估器(或称评判器)的精髓提炼到GPT-3.5评估器上。最近观察到GPT-4评估器能与人类评估者达成高度一致(例如,参见https://arxiv.org/pdf/2306.05685.pdf)。

因此,通过微调GPT-3.5评判器,我们或许能够以更低的成本达到GPT-4的水平(进而与人类评判达成一致)。

通过微调交叉编码器,我们可以尝试在私有数据上提升重排序性能。

重排序是高级检索中的关键步骤,通过使用独立模型对来自多个来源的检索节点进行重新排序,使得最相关的节点排在首位。

在此示例中,我们使用 sentence-transformers 包来帮助微调交叉编码器模型,使用的数据集基于 QASPER 数据集生成。

通过使用CohereAI训练自定义重排序器,我们可以尝试在私有数据上提升重排序性能。

重排序是高级检索流程中的关键步骤。该步骤涉及使用独立模型对初始检索阶段获取的节点进行重新排序。其目标是确保最相关的节点被优先处理并排列在前。

在此示例中,我们使用 cohere 自定义重排序器训练模块,在您的领域或特定数据集上创建重排序器以提升检索性能。