Skip to content

微调#

概述#

模型微调是指通过一组数据更新模型本身,从而在多个方面提升模型性能。这包括提高输出质量、减少幻觉现象、增强整体数据记忆能力以及降低延迟/成本。

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

虽然微调也可用于通过外部数据"增强"模型,但它能以多种方式与检索增强形成互补:

嵌入微调的优势#

  • 微调嵌入模型可以在训练数据分布上生成更具意义的嵌入表示 --> 从而提升检索性能

大语言模型微调的优势#

  • 使模型能够学习特定数据集的风格特征
  • 让模型掌握训练数据中较少出现的领域特定语言(如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应用。

历史版本

大语言模型微调#

微调GPT-3.5实现GPT-4知识蒸馏#

我们提供多个指南展示如何利用OpenAI的微调接口,使gpt-3.5-turbo能输出类似GPT-4的响应,适用于RAG/智能体场景。

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

随后启动微调任务,最终获得蒸馏后的模型。可通过Ragas评估该模型,与原生GPT-3.5流程进行基准对比。

历史版本

结构化输出优化微调#

微调的另一应用场景是提升模型输出结构化数据的能力,适用于OpenAI和Llama2模型。

Llama 2文本转SQL微调#

本教程展示如何在text-to-SQL数据集上微调Llama 2,随后通过LlamaIndex抽象层将其应用于任意SQL数据库的结构化分析。

技术栈包含:训练数据集sql-create-context、基础模型OpenLLaMa、微调工具PEFT、云计算平台Modal、推理抽象层LlamaIndex。

评估器微调#

这些教程旨在将GPT-4评估器(judge)的能力蒸馏到GPT-3.5评估器上。最新研究表明GPT-4评估器能达到与人类评估者高度一致的水平(参见https://arxiv.org/pdf/2306.05685.pdf)。

因此,通过微调GPT-3.5评估器,我们有望以更低成本达到GPT-4级别的评估水平(间接实现与人类评估的一致性)。

微调交叉编码器实现重排序#

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

重排序是高级检索中的关键步骤,该步骤使用独立模型对来自多源的检索节点进行重新排序,确保最相关的节点优先呈现。

本示例使用 sentence-transformers 包辅助微调交叉编码器模型,所用数据集基于 QASPER 数据集生成。

Cohere自定义重排序器#

通过使用CohereAI训练自定义重排序器,我们能够针对私有数据优化重排序性能。

重排序是高级检索流程中的核心环节。该环节通过独立模型对初始检索阶段获取的节点进行重组,旨在确保最相关的节点获得优先排序。

本示例使用 cohere 自定义重排序器训练模块,可针对特定领域或数据集创建重排序器以提升检索效果。