在构建生产级LLM应用时,优化模型性能是必经之路。本文从提示词工程、模型微调和检索增强生成(RAG)三个维度,结合技术原理与实践案例,探讨如何系统性提升LLM的垂直领域表现。
提示词工程
提示词是用户与LLM交互的核心媒介,其设计直接影响模型输出的精准度。
结构化提示词设计
- 字符串模版(角色、问题、目标、补充要求)
- 对话模版:通过对话形式的语境让大模型继续对话
优化技巧:MMR
MMR(max marginal relevance 最大边缘相关性)是一种基于信息检索的多样性筛选算法,可在长文本场景下,通过多样性筛选保留关键信息。
提示词存储方式
- F-string
- jinji2
- 分层提示词(角色和性格、行为、不允许)
- 序列化(json、yaml、txt)
微调
当提示词工程触及性能天花板时,微调(Fine-tuning)成为突破瓶颈的关键。
微调分类
- 指令微调:数据集字段(input、output、instruction) 场景:智能教育、智能办公、智能翻译、数据分析
- 对话微调:通过对话形式的数据集指导大模型 场景:智能客服系统、聊天机器人、语言助手
- 领域适配:领域数据集(input、output、instruction、domain) 场景:医疗适配领域、法律适配领域、金融适配领域
- 文本分类:将输入的内容贴上标签,数据集(text、label) 场景:情感分析、内容审核、新闻分类、意图识别
- 模型推理:有推理过程的数据集
- 强化学习:给模型的输出进行打分、归类(好与不好)等操作,再把这个打分数据集输入给大模型
- 多模态微调:前提是预训练模型需要有多模态能力
微调参数
- 训练轮数:复习次数
- 学习率:学习方法的调整幅度
- 批量大小:一次处理的题目数量(数量少学习得更深入,数量多学习的更快)
数据集格式
- Alpaca :通用数据集格式。
- Share GPT:适用于多轮对话、数据调用场景。
数据集分类
- 训练集:模型学习规律核心资料。
- 验证集:检测模型举一反三能力,过程中调整学习方法。
- 测试集:评估模型真实水平。
- 完整集:训练集 + 验证集 + 测试集。常规情况:70%训练集 + 15%验证集 + 15%测试集;小数据场景:80%训练集 + 10%验证集 + 10%测试集。
知识蒸馏
概念:当部署大模型成本较高时,用小模型来代替大模型。用大模型产出的数据集来训练小模型的过程称为知识蒸馏。
工具
- colab:google线上python执行平台
- jupyter:开源python执行平台,在本地运行
- unsloth:大模型微调工具
- nomic:向量化工具
- hugging face:大模型开源平台
RAG
RAG(检索增强生成)通过外挂知识库弥补模型静态知识的局限性,尤其在需要实时数据支持的场景中不可或缺。
文档切割步骤
- 将文档切割成小的、有意义的块。
- 将小块组合成大块。
- 达到一定大小后,创建与下一个块重叠的部分。
切割分类
- 按字符切割
- 按代码切割
- 按token切割
向量数据库
- Milvus
- Faiss
- Pinecone
- Chroma
- LanceDB
工具
- doctran:开发工具,用于文档总结、精炼、翻译。
检索优化
- 多重查询:把一个问题扩展成多个,同时进行向量匹配,取重叠部分
- 上下文压缩:压缩器会把检索出来的内容交给大模型进行内容筛选
- mmr:最大边缘相关性检索
- 相似性打分检索
- lost in the middle,当文本被索引时,中间部分检索性能会下降,所以要把相关性高的文本放在两边。
博客目录
提示词工程
微调
RAG