基于博文 Advanced RAG Techniques: an Illustrated Overview 的学习和练习的记录。
中文内容可以查看博主@宝玉的译文 高级 RAG 技术:图解概览 [译]
系列笔记:
RAG 学习笔记(一)
RAG 学习笔记(二)
RAG 学习笔记(三)
RAG 学习笔记(四)
RAG 学习笔记(五)
RAG 学习笔记(六)
RAG 学习笔记(七)
微调 Encoder 和 LLM
涉及一下两种深度学习模型的微调:
- Transformer Encoder:主要提供 Embedding 能力,影响检索结果的质量
- LLM:主要负责根据上下文内容回答用户提问,影响生成响应的结果
需要注意:基础预训练模型基于大量由专业人员整体的数据集,使用小型数据集进行微调会降低模型的通用能力。
Encoder 微调
当前针对搜素优化的 Transformer Encoder,效果已经很不错了,所以对 Encoder 模型微调带来的改进还待进一步讨论。
使用 LlamaIndex notebook: Finetune Embeddings 中的微调流程,作者对模型 bge- large-en-v1.5 进行微调,仅获得 2% 的效果提升。
如果数据集来自于非常垂直的领域,则可以考虑进行该微调。
排序微调
Cross-encoder 模型用于对检索结果排序。Cross-encoder 的微调过程大致为:
- 将查询语句
q
与检索结果中最相关的K
个文本块(r1, r2, ..., rk)
成对(q, ri)
传递给 cross-encoder 模型 - 微调模型如果查询
q
和 文本块ri
相关,则输出 1,如果不相同则输出 0
微调样例:如何使用 LlamaIndex 微调 cross-encoder,结果显示微调过后,cross-encoder 打分的效果提升 4%
LLM 微调
OpenAI GPT-3.5-turbo 微调
LlamaIndex notebook: 微调 GPT-3.5-turbo 中介绍了使用 GPT-4 微调 GPT-3.5-turbo 的方法:
- 使用 GPT-3.5-turbo 对一个文档生成一些问题
- 使用 GPT-4 构建一个对该文档进行问答的 RAG 系统,然后生成问题的答案
- 然后使用问答对来微调 GPT-3.5-turbo
使用 ragas 进行测评,基于微调过后的 GPT 3.5-turbo 构建的 RAG 系统,忠实度(faithfulness)指标提升 4%,说明微调后的模型能够更好的使用上下文回答问题。
利用检索增强进行微调
Meta AI Research 发表的论文 RA-DIT: Retrieval Augmented Dual Instruction Tuning 提出了一种使用查询语句、上下文和回答三元祖,同时微调 LLM 和 Retriever 的方法(论文中称为双编码器)。
微调的实现:LlamaIndex notebook:Fine-tuning with Retrieval Augmentation
效果:
- 使用该技术微调的 Openai LLM 和 Llama2 开源模型,在知识密集型的任务上提高了 5% 的性能,在常识推理的任务上也增加了几个百分点的性能。