Skip to content
LlamaIndex 文档版本 跟随上游 源快照 1b2052f2 更新于 2026-10-15

概述

微调模型意味着用一组数据去更新模型本身,从多个方面改善它:提升输出质量、减少幻觉、更整体地记住更多数据,以及降低延迟/成本。

我们工具包的核心是上下文学习 / 检索增强,也就是把模型用在推理模式下,而不去训练模型本身。

虽然微调也能用来给模型“增强”外部数据,但它在很多方面是对检索增强的补充:

嵌入微调的好处

  • 微调嵌入模型能在一份训练数据分布上得到更有意义的嵌入表示 ——> 带来更好的检索表现。

LLM 微调的好处

  • 让它从给定数据集中学习一种风格
  • 让它学会一种在训练数据中可能很少见的 DSL(例如 SQL)
  • 让它纠正那些难以靠提示词工程修复的幻觉/错误
  • 让它把更强的模型(例如 GPT-4)蒸馏进一个更简单/更便宜的模型(例如 gpt-3.5、Llama 2)

与 LlamaIndex 的集成

这是一份持续演进的指南,目前与 LlamaIndex 有三项关键集成。详情请看下文各节!

  • 微调嵌入以获得更好的检索表现
  • 微调 Llama 2 以改善 text-to-SQL
  • 微调 gpt-3.5-turbo 以蒸馏 gpt-4

微调嵌入

我们写了两份完整指南,演示如何以不同方式微调嵌入——既可以在非结构化文本语料上微调模型本身(这里是 bge),也可以在任意黑盒嵌入之上加一层 adapter。步骤包括:

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

微调能在检索评估指标上带来 5-10% 的提升。随后就可以把这个微调好的模型接回你的 LlamaIndex RAG 应用。

旧版

微调 LLM

微调 GPT-3.5 以蒸馏 GPT-4

我们有多份指南,演示如何用 OpenAI 的微调端点微调 gpt-3.5-turbo,让它在 RAG/智能体场景中输出 GPT-4 水准的回答。

我们用 GPT-4 从任意非结构化上下文自动生成问题,再用一套 GPT-4 查询引擎流程生成“真实答案”。我们的 OpenAIFineTuningHandler 回调会把问题/答案自动记录到数据集里。

接着启动一个微调任务,拿到蒸馏后的模型。然后可以用 Ragas 评估这个模型,与朴素的 GPT-3.5 流程做基准对比。

旧版

微调以得到更好的结构化输出

微调的另一个用途是让模型更擅长输出结构化数据。无论 OpenAI 还是 Llama2 都能这么做。

微调 Llama 2 以改善 Text-to-SQL

本教程演示如何在 text-to-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 的水平(进而达到与人类的一致度)。

微调用于重排的 Cross-Encoder

通过微调一个 cross encoder,我们可以尝试在自己私有的数据上提升重排表现。

重排是进阶检索中的关键一步:把来自多个源的检索节点交给另一个模型重新排序,使最相关的节点排在最前。

在这个例子里,我们用 sentence-transformers 包来微调一个 crossencoder 模型,数据集基于 QASPER 生成。

Cohere 自定义重排器

通过在 CohereAI 上训练一个自定义重排器,我们可以尝试在自己私有的数据上提升重排表现。

重排是进阶检索流程中至关重要的一步。这一步用另一个模型,把初始检索阶段取回的节点重新组织,目标是确保最相关的节点被优先排、出现在最前面。

在这个例子里,我们使用 cohere 的自定义重排器训练模块,针对你的领域或特定数据集训练出一个重排器,以提升检索表现。

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。