AI大模型实战手册:从Transformer到RAG,核心概念与工程实践详解
1. 项目概述:为什么需要一本AI大模型的“词典”?
最近几年,AI大模型的热度居高不下,几乎每天都能看到新的模型发布、新的应用落地。但随之而来的,是铺天盖地的技术名词和行业黑话。从“Transformer”到“RAG”,从“LoRA”到“PPO”,再到“知识蒸馏”、“量化”,这些词汇就像一堵无形的墙,把很多刚入行的朋友挡在了门外。我经常在技术社区看到有人提问:“SFT和RLHF到底有什么区别?”“RAG不就是个搜索吗,为什么这么火?”“LoRA和全量微调,我该选哪个?”
这些问题背后,反映的是一个普遍的需求:大家需要一个清晰、准确、能说人话的“名词解释”。这不仅仅是给新人看的,很多有经验的从业者在跨领域交流时,也常常会遇到术语理解不一致的尴尬。因此,我决定结合自己在一线做AI大模型应用开发的经验,写一篇“名词详解”。这不是一份枯燥的学术定义列表,而是一个从业者视角的实战解读。我会把这些名词放到具体的项目场景里,比如我们做过的“金融大模型问答机器人”,告诉你它们到底是什么、怎么用、以及在实际操作中会遇到哪些坑。希望这篇万字长文,能成为你手边随时可以查阅的“AI大模型术语实战手册”。
2. 核心概念层:理解大模型的“地基”
在深入各种技术细节之前,我们必须先打好地基,理解几个最核心、最基础的概念。这些概念构成了我们讨论一切后续技术的前提。
2.1 大语言模型:从“统计”到“理解”的飞跃
大语言模型,也就是我们常说的LLM,是这一切的起点。你可以把它想象成一个博览群书的“超级语言学家”。它的核心工作模式是:给定一段上文,预测下一个最可能出现的词是什么。这个看似简单的任务,当模型在TB级别的海量文本数据(书籍、网页、代码等)上进行训练后,会涌现出令人惊叹的能力,比如流畅地写作、翻译、总结,甚至进行简单的逻辑推理。
这里需要澄清一个常见的误解:LLM并不“理解”文字,它只是在做概率计算。它通过学习海量数据中的统计规律,学会了如何“像人一样”组织语言。比如,当它看到“中国的首都是”时,训练数据中“北京”这个词紧随其后的概率极高,所以它会输出“北京”。这种基于统计的“模仿”,在足够大的规模下,产生了质变,让模型看起来拥有了“智能”。
注意:LLM的“幻觉”问题根源就在于此。因为它本质是概率生成,当它遇到训练数据中不常见或矛盾的组合时,就可能“一本正经地胡说八道”,生成看似合理但完全错误的内容。这是所有LLM应用都需要面对和解决的挑战。
2.2 Transformer架构:大模型的“发动机”
如果说LLM是汽车,那么Transformer架构就是它的发动机。2017年Google提出的这篇论文《Attention Is All You Need》彻底改变了自然语言处理的游戏规则。它摒弃了传统的循环神经网络,引入了“自注意力机制”。
你可以把自注意力机制想象成你在阅读一篇文章时的大脑活动。当你读到“它”这个代词时,你会不自觉地回头去看前文,寻找“它”指代的是什么。Transformer的自注意力机制让模型中的每一个词,都能同时“关注”到输入序列中的所有其他词,并计算它们之间的关联程度。这种全局的、并行的信息处理方式,使得模型能够高效地捕捉长距离的依赖关系,这是理解复杂语义的关键。
Transformer架构通常由编码器和解码器堆叠而成,但像GPT系列这样的纯解码器架构也取得了巨大成功。正是Transformer的可并行化训练特性,使得训练参数量千亿、万亿级别的超大规模模型成为可能。
2.3 生成式AI与判别式AI:从“分类”到“创造”
这是一个非常重要的区分。传统的AI模型大多是判别式模型。它们的任务是“做选择”或“下判断”。比如,一个图像分类模型判别一张图片是猫还是狗;一个情感分析模型判别一段评论是正面还是负面。它们通常在已有数据中学习边界。
而大模型驱动的生成式AI,其核心任务是“创造新内容”。给定一个提示,它生成一段全新的文本、代码、图片甚至视频。LLM是生成式AI在文本领域的典型代表。这种从“判别”到“生成”的范式转变,极大地拓展了AI的应用边界,使其从辅助分析工具,变成了能够直接参与内容生产的创造者。
在我们的金融问答机器人项目中,这两种模式是结合的:模型需要“判别”用户问题属于哪个业务领域(如开户、理财、投诉),然后“生成”符合该领域知识的、准确的回答。
3. 模型训练与优化层:让通用模型“专业化”
我们拿到的预训练大模型(如Qwen、ChatGLM)就像是一个通才,知识面广但不够专精。要让它胜任特定的任务(比如回答金融问题),就需要进行“再教育”,这个过程就是微调。微调有不同的“教学”方法,对应不同的成本和效果。
3.1 全量微调:推倒重来的“特训班”
全量微调是最直接、理论上效果最好的方法。它不冻结任何参数,用你的领域数据对整个模型的所有权重进行更新。这就好比让一个通才重新参加一次高考,但这次只学习金融相关的科目。
优点:模型能够最大程度地吸收领域知识,遗忘通用知识的风险相对较低,性能上限高。缺点:成本极其高昂。需要保存整个模型的优化器状态、梯度和参数,对显存要求是天文数字。以千亿参数模型为例,全量微调所需的GPU显存可能高达数千GB,这几乎是不可行的。同时,训练时间长,且会产出一个独立的、庞大的新模型,不利于部署和迭代。
实操心得:在资源无限的情况下,全量微调是首选。但在现实中,除非你是顶级机构为某个核心场景打造专属底座,否则很少采用。更多是作为效果对比的“黄金标准”。
3.2 高效微调:四两拨千斤的“选修课”
正因为全量微调成本太高,高效微调技术应运而生。其核心思想是:大部分通用知识已经存在于预训练模型中,我们只需要用很小的参数量,去引导模型激活与特定任务相关的“知识通路”。
3.2.1 LoRA:给模型加“外挂”
LoRA是目前最流行的高效微调方法之一。它的思路非常巧妙:我们冻结预训练模型的全部参数,然后在原始的权重矩阵旁,并行地插入一对可训练的、低秩的“适配器”矩阵。在推理时,将适配器的输出加到原始权重上。
假设原始权重矩阵W是d×k维的。LoRA不改变W,而是引入两个小矩阵:A(d×r) 和B(r×k),其中r(秩)远小于d和k(例如r=8)。前向传播变为:h = Wx + BAx。我们只训练A和B。
为什么有效?研究者认为,模型在适应新任务时,权重变化具有“低秩”特性。LoRA用极少的参数(有时仅为原模型的0.1%)捕捉到了这种核心变化。在我们的金融机器人项目中,我们用LoRA在Qwen模型上微调,只训练了大约1亿参数(原模型70亿),就使它在金融术语理解、合规话术生成上有了显著提升,而训练成本和存储开销微乎其微。
参数选择技巧:
- 秩
r:通常取4, 8, 16。越大表示适配能力越强,但可能过拟合。一般从8开始尝试。 - Alpha:缩放因子,通常与
r设置相同值。用于控制适配器对原始输出的影响强度。 - Target Modules:对哪些层应用LoRA。通常选择注意力层的
q_proj,v_proj(查询和值投影矩阵),有时也包括k_proj,o_proj和全连接层。
3.2.2 P-Tuning/P-Tuning v2:给提示词“动手术”
与LoRA修改模型权重不同,P-Tuning系列方法聚焦于优化“提示”。它认为,好的提示(一组连续的向量)能更好地激发模型的潜能。P-Tuning会在输入序列中插入一些可训练的“软提示”向量,与原始的词语嵌入一起输入模型。通过训练这些提示向量,来让模型适应下游任务。
P-Tuning v2进一步将可训练参数扩展到模型每一层的输入前,效果更接近全量微调,但参数量仍远小于LoRA。
适用场景:当你的训练数据非常少(只有几十上百条),或者你完全没有权限修改模型权重(如使用云端API)时,P-Tuning是一个轻量级的选择。但在我们拥有足够领域数据的情况下,LoRA通常能获得更好的效果。
3.3 基于人类反馈的强化学习:给模型注入“价值观”
SFT可以让模型学会“怎么做”,但无法保证它“做得好”。什么是“好”?是更安全、更无害、更符合人类偏好、逻辑更清晰。RLHF就是用来解决这个问题的。
3.3.1 SFT:师傅领进门
监督微调是RLHF的第一步。我们用高质量的指令-回答对数据,以传统的监督学习方式对预训练模型进行微调。这一步的目标是让模型学会遵循指令的格式,并初步具备完成任务的能力。比如,我们收集了“用户问:如何购买国债? 助理答:购买国债可以通过...”这样的数据对,来训练模型。
3.3.2 奖励模型训练:建立“审美”标准
第二步,我们需要一个“裁判”。这个裁判是一个单独的模型,称为奖励模型。它的任务是学习人类的偏好。我们准备一批模型对不同提示的多个输出,让人类标注员对这些输出进行排序(哪个更好)。然后用这些排序数据训练奖励模型,让它学会给“更好”的输出打高分,“更差”的输出打低分。
3.3.3 PPO/DPO:让模型向“高分”看齐
第三步,利用训练好的奖励模型,通过强化学习算法来优化SFT后的模型。最经典的算法是PPO。
PPO:让SFT模型针对一个提示生成回答,然后用奖励模型给这个回答打分。这个分数就是强化学习中的“奖励”。PPO算法会调整模型参数,使得模型未来生成能获得更高奖励(即更符合人类偏好)的回答。同时,PPO会引入一个约束,防止新模型偏离SFT模型太远,以保证输出的流畅性和稳定性。
DPO:一种更直接的方法。它绕过了训练奖励模型的步骤,直接利用人类偏好排序数据,通过一个巧妙的数学变换,将强化学习问题转化为一个简单的分类损失。DPO实现更简单,训练更稳定,近年来非常流行。
在我们的项目中,我们使用了DPO。原因在于,金融领域的“好回答”标准相对明确(准确、合规、清晰),收集高质量的偏好排序数据比训练一个稳定的奖励模型更容易。经过DPO训练后,模型生成回答的合规性、专业性和可读性都有了肉眼可见的提升,减少了之前偶尔会出现的模糊或过于口语化的表述。
3.4 知识蒸馏:让“大师”带“学生”
知识蒸馏的目的是模型压缩和加速。一个大而强的“教师模型”的知识,被迁移到一个小而快的“学生模型”中。学生模型不仅学习原始的训练数据(硬标签),更重要的是学习教师模型输出的“软标签”(即概率分布)。
为什么有效?教师模型输出的概率分布(例如,对于“苹果”这个词,它可能给“水果”0.7的概率,“公司”0.25的概率,“手机”0.05的概率)包含了比单一硬标签(“水果”)更丰富的知识,比如类别间的相似性关系。学生模型学习这种软分布,能获得更好的泛化能力。
实操要点:
- 温度参数T:在计算软标签时引入的一个超参数。
T > 1会使概率分布更平滑,蕴含更多信息;T = 1就是原始输出;推理时设回T = 1。 - 损失函数:通常是学生预测与教师软标签的KL散度损失,加上学生预测与真实硬标签的交叉熵损失的加权和。
- 应用:我们曾尝试将一个大尺寸的Qwen模型蒸馏到一个小尺寸版本上,用于部署在资源受限的边缘设备。虽然小模型绝对能力有下降,但在特定的金融QA任务上,得益于蒸馏,其表现远超同参数量从头训练的模型。
3.5 模型量化:给模型“瘦身”以便奔跑
量化是将模型参数从高精度(如32位浮点数FP32)转换为低精度(如8位整数INT8,甚至4位整数INT4)的过程。这能大幅减少模型的内存占用和存储空间,并提升推理速度(因为低精度计算更快)。
3.5.1 量化类型
- 训练后量化:模型训练完成后,直接对权重进行量化。最简单,但可能带来精度损失。
- 量化感知训练:在训练(或微调)过程中,模拟量化的效果,让模型提前适应低精度计算。精度损失小,但需要重新训练。
3.5.2 主流量化方法
- GPTQ/AWQ:针对LLM的权重量化方法。GPTQ是一种逐层量化方法,通过二阶信息来最小化量化误差。AWQ则发现并非所有权重都同等重要,它会自动识别并保护那些“重要权重”保持高精度,只量化不重要的权重,在精度和压缩比之间取得更好平衡。
- GGML/llama.cpp采用的k-quantization:将权重分组,每组共享一个缩放因子,进一步压缩体积,特别适合在CPU上离线运行。
踩过的坑:在金融机器人项目中,我们最初使用简单的INT8训练后量化,发现模型在处理数字计算(如利率、金额)时错误率明显上升。后来改用AWQ方法,并进行了少量校准数据的量化感知微调,精度损失控制在1%以内,而模型体积减少了75%,推理速度提升了近2倍,完美满足了线上服务的延迟要求。
4. 应用架构与工程层:从模型到产品
拥有了一个专业化的模型,如何将它变成一个稳定、可靠、可用的服务?这就需要应用架构和工程技术的支撑。
4.1 RAG:给模型配上“外部知识库”
这是当前解决大模型“幻觉”和知识陈旧问题最主流、最有效的架构。RAG的核心思想是:不让模型凭空回忆,而是先帮它“查资料”。
工作流程:
- 索引:将你的领域知识(PDF、Word、数据库、网页)进行切片、向量化,存入向量数据库(如Milvus, Pinecone, Chroma)。
- 检索:当用户提问时,将问题也向量化,在向量数据库中检索出最相关的若干知识片段。
- 增强:将检索到的知识片段和用户问题一起,组合成一个新的、信息丰富的提示,交给大模型。
- 生成:大模型基于这个“增强后”的提示,生成最终回答。
为什么比单纯微调好?
- 知识可更新:更新知识只需更新向量数据库,无需重新训练模型。
- 来源可追溯:回答可以附带引用来源,增强可信度,这在金融、医疗等严谨领域至关重要。
- 成本低:避免了为注入大量新知识而进行昂贵且可能导致灾难性遗忘的微调。
项目实战细节:我们的金融机器人接入了产品手册、监管文件、历史问答记录等数万份文档。我们使用LangChain的RecursiveCharacterTextSplitter进行文本分割,重叠长度设为200字符以保证上下文连贯。向量化模型选用BAAI/bge-large-zh,它在中文语义匹配上表现优异。检索时采用“混合搜索”策略:结合向量相似度检索和关键词(BM25)检索,并对结果进行重排序,确保召回的知识既相关又精准。
4.2 LangChain/LlamaIndex:AI应用的“脚手架”
你可以把它们理解为开发LLM应用的“框架”或“工具箱”。它们把RAG、智能体、链式调用等复杂模式封装成模块化的组件,让开发者能像搭积木一样快速构建应用。
- LangChain:更偏向于灵活性和控制力。它提供了大量底层的模块(Models, Prompts, Indexes, Chains, Agents),你需要自己编排它们的工作流。功能强大,但学习曲线稍陡。
- LlamaIndex:更专注于数据连接和RAG场景。它在数据加载、索引构建、查询引擎方面做得非常出色,API设计更简洁。如果你核心是做RAG,LlamaIndex可能更高效。
在我们的项目中,我们主要使用LangChain。因为它能更好地支持我们复杂的业务逻辑链:用户问题 -> 意图分类(使用一个小型分类器)-> 若为通用咨询,走RAG流程;若为业务办理,触发智能体调用相应API(如查询账户接口)。LangChain的LCEL语法让我们能清晰地定义这个工作流。
4.3 智能体:让模型学会“使用工具”
智能体是大模型从“聊天机器人”走向“自动执行者”的关键。其核心是赋予大模型使用外部工具的能力,比如调用搜索引擎、查询数据库、执行代码、操作软件等。
ReAct范式:这是智能体的经典框架。模型按照“思考 -> 行动 -> 观察”的循环进行。
- 思考:分析当前情况和目标,决定下一步该做什么,使用哪个工具。
- 行动:以特定格式调用选定的工具。
- 观察:获取工具返回的结果。
- 重复此过程,直至任务完成。
项目中的应用:我们的机器人有一个“基金收益模拟计算”功能。当用户问“投入10万买XX基金,持有一年预计收益多少?”时,智能体会:
- 思考:需要获取该基金的历史年化收益率和风险评估数据。
- 行动:调用“基金数据查询API”,传入基金代码。
- 观察:获得API返回的
{“historical_return”: 0.08, “risk_level”: “中”}。 - 思考:需要根据历史数据和风险进行模拟计算(注意:实际需提示“历史收益不代表未来”)。
- 行动:调用“Python计算工具”,执行
100000 * (1 + 0.08) - 100000。 - 观察:获得结果
8000。 - 思考:组织最终回答。
- 生成:“根据XX基金近三年的历史平均年化收益率8%进行模拟(仅供参考,历史业绩不预示未来表现),投入10万元,持有一年后的预期收益约为8000元。请注意,基金投资有风险...”
工具定义的关键:给模型的工具描述必须清晰、无歧义。我们使用LangChain的StructuredTool,为每个工具提供详细的名称、描述、参数JSON Schema。这能极大提高模型调用工具的准确率。
4.4 GraphRAG:知识图谱与RAG的强强联合
这是RAG的一个高级演进方向。传统的RAG基于向量检索,检索到的片段之间是孤立的。GraphRAG则先利用大模型从文档中提取实体(如公司、人物、产品)和关系(如投资、竞争、隶属),构建一个知识图谱。
当用户提问时,系统既进行向量检索,也在知识图谱上进行图查询。例如,问题“A公司的主要竞争对手有哪些?”,向量检索可能找到描述A公司或竞争对手的段落,而图查询能直接从图谱中找出所有与A公司有“竞争”关系的实体,更加精准和结构化。
实施挑战:构建高质量的知识图谱成本较高,需要大量标注或依赖大模型的抽取能力(可能出错)。因此,GraphRAG更适合知识结构相对稳定、明确的领域,如金融关系网络、医疗知识体系。在我们的项目中,我们仅对核心的上市公司和其关联方信息尝试了小范围的GraphRAG,作为对传统RAG的补充,用于处理复杂的股权关系查询。
5. 部署与运维层:让服务稳定运行
模型效果再好,如果服务不稳定、响应慢,一切都是空谈。这一层关注的是如何将模型工程化。
5.1 模型部署与服务化
5.1.1 推理框架选择
- vLLM:目前高性能LLM推理的事实标准。其核心是
PagedAttention技术,高效管理推理过程中的键值缓存,极大地提升了吞吐量。支持动态批处理,非常适合高并发API服务。 - TGI:Hugging Face推出的推理框架,同样优秀,与Hugging Face生态结合紧密。
- 本地简易部署:对于小模型或测试,可使用
FastAPI+transformers库快速搭建API。但对于生产环境,强烈推荐vLLM。
5.1.2 API服务搭建我们使用FastAPI作为Web框架,因为它异步性能好,自动生成API文档。
from fastapi import FastAPI from pydantic import BaseModel import torch from vllm import SamplingParams, LLM app = FastAPI() llm = LLM(model=“/path/to/your/quantized/model”, tensor_parallel_size=2) # 张量并行 class QueryRequest(BaseModel): prompt: str max_tokens: int = 512 @app.post(“/generate”) async def generate_text(request: QueryRequest): sampling_params = SamplingParams(temperature=0.7, top_p=0.9, max_tokens=request.max_tokens) outputs = llm.generate([request.prompt], sampling_params) return {“response”: outputs[0].outputs[0].text}关键配置:
- 张量并行/流水线并行:将大模型拆分到多个GPU上,这是部署百亿以上参数模型的必备技术。
- 批处理:同时处理多个请求,显著提升GPU利用率。vLLM的动态批处理是自动的。
- 流式输出:使用Server-Sent Events (SSE) 实现token-by-token的流式返回,提升用户体验。
5.2 监控与评估
上线不是终点,而是开始。我们需要持续监控服务的健康度和效果。
- 性能监控:QPS(每秒查询数)、P99延迟(99%的请求响应时间)、Token生成速度、GPU利用率。设置告警阈值。
- 效果评估:
- 人工评估:定期抽样,由业务专家评估回答的准确性、合规性、有用性。
- 自动评估:
- 基于规则的检查:检查回答中是否包含敏感词、是否按要求格式输出。
- 基于模型的评估:使用一个“裁判”模型(如GPT-4)对回答进行打分,评估相关性、信息量、有害性等。但这需要成本,且裁判模型本身也有偏差。
- A/B测试:将新模型版本和旧版本同时上线,分流一部分流量,对比核心业务指标(如用户满意度、问题解决率、对话轮次)。
5.3 成本控制与优化
大模型服务是“电老虎”和“算力吞噬者”,成本控制至关重要。
- 模型选型:在效果满足要求的前提下,选择更小的模型。7B模型的服务成本可能是70B模型的十分之一甚至百分之一。
- 量化:如前所述,INT4量化能将显存占用减少至1/4,直接降低硬件成本。
- 缓存:对常见、重复的用户问题及其回答进行缓存,可以避免重复调用大模型。
- 自适应批处理:在流量低谷期增大批处理大小,提升GPU利用率;高峰期减小批处理大小,保证延迟。
- 混合部署:简单问题用更小、更快的模型(或规则系统)处理,复杂问题才路由到大模型。我们在机器人中设置了一个轻量级意图分类器,将“问候”、“营业时间查询”等简单意图直接分流到模板回答,节省了大量算力。
6. 常见问题与排查实录
在实际开发和运维中,你会遇到各种各样的问题。这里记录了一些典型问题和我们的解决思路。
Q1: 模型回答总是偏离主题或胡言乱语怎么办?A: 这是“幻觉”或“注意力漂移”的典型表现。排查步骤:
- 检查提示工程:你的系统提示词是否足够清晰、有力?尝试在提示词中明确指令:“你是一个专业的金融顾问,必须严格根据提供的背景信息回答问题。如果信息不足,请明确说‘根据已有信息无法回答’。” 使用少样本示例效果显著。
- 检查RAG检索质量:模型胡言乱语很可能是因为检索到的上下文不相关。检查你的文本分割策略是否合理(避免把一句话拆到两个片段),检查向量模型是否适合你的领域,尝试混合检索(向量+关键词)并重排序。
- 检查温度参数:过高的
temperature(如>1.0)会增加随机性。对于严肃的金融问答,通常设置在0.1~0.7之间。 - 检查微调数据:如果经过微调,检查数据中是否有错误或矛盾的样本。模型可能学到了错误模式。
Q2: RAG检索效果不错,但模型就是不用检索到的信息,怎么办?A: 这是一个经典的“引用”问题。解决方法:
- 强化提示:在系统提示和用户问题中,明确强调“请严格依据以下背景信息:”。可以使用特殊标记,如“
[背景]...[/背景]”。 - 调整上下文位置:将检索到的上下文放在问题之前,还是之后?实验证明,对于大多数模型,放在问题之前(作为前置背景)效果更好。
- 使用高级RAG技巧:
- HyDE:先让模型根据问题生成一个假设性答案,然后用这个假设答案去检索,有时能检索到更匹配的文档。
- 句子窗口检索:检索时,不仅返回最相关的片段,还返回其前后的一些句子作为上下文窗口,提供更完整的背景。
- 重排序:用更精细的交叉编码器模型(如
bge-reranker)对初步检索到的Top K个结果进行重排序,把最相关的放在最前面。
Q3: 服务响应时间太长,如何优化?A: 延迟是用户体验的杀手。
- 模型层面:量化是首选。INT4量化通常能提速2-3倍。考虑使用更小的模型。
- 推理框架:务必使用
vLLM或TGI,它们的PagedAttention和连续批处理对吞吐和延迟优化巨大。 - 生成参数:
- 限制
max_tokens,避免生成过长文本。 - 使用
streaming流式输出,让用户尽快看到第一个词。 - 调整
top_p(nucleus sampling) 和temperature,值越低,生成越确定、越快。
- 限制
- 基础设施:确保GPU型号足够新(如A100/H100),PCIe带宽不是瓶颈。使用GPU推理专用实例。
Q4: 微调时损失不下降,或者模型“学废了”怎么办?A: 微调过程不稳定是常事。
- 学习率:这是最关键的参数。预训练模型通常需要非常小的学习率(如1e-5到5e-5)。学习率太大会导致损失震荡或爆炸。
- 数据质量:检查你的SFT数据。指令是否清晰?回答是否高质量、无错误?脏数据会导致模型性能下降。可以先用小批量数据(100-200条)进行过拟合测试,如果模型能完美学会这小批数据,说明 pipeline 没问题,再扩大数据集。
- LoRA参数:如果使用LoRA,尝试增大
r(秩)或alpha。检查target_modules是否包含了关键层(q_proj,v_proj是必须的)。 - 损失曲线:监控训练损失和验证损失。如果训练损失下降但验证损失上升,这是过拟合的明显信号,需要增加数据多样性、使用早停法或增加Dropout。
- 灾难性遗忘:如果微调后模型连通用能力都丧失了,说明领域数据“冲掉”了原有知识。尝试在微调数据中混入少量通用指令数据(如Alpaca格式的数据),或者在损失函数中加入对原始模型输出的KL散度约束。
Q5: 如何评估我的大模型应用到底好不好?A: 脱离业务目标的评估没有意义。建立一个多维度的评估体系:
- 自动化指标:
- 忠实度:模型回答是否忠实于提供的上下文?可以用NLI模型计算蕴含关系得分。
- 答案相关性:回答是否直接针对问题?可以用向量相似度计算。
- ROUGE/BLEU:与标准答案的文本相似度,但仅供参考,因为正确答案可能不止一种表述。
- 人工评估:制定清晰的评分标准(如1-5分),评估:
- 准确性:事实是否正确。
- 有用性:是否解决了用户问题。
- 安全性/合规性:是否符合规范,有无有害内容。
- 流畅性:语言是否自然通顺。
- 业务指标:这才是终极标准。
- 对于客服机器人:问题解决率、转人工率、用户满意度评分、平均对话轮次。
- 对于内容生成:内容采纳率、编辑修改量。
- A/B测试对比这些核心指标,是判断模型迭代是否成功的金标准。
这条路没有银弹,每一个成功的AI大模型应用背后,都是对无数细节的打磨、对无数坑的填平。从理解这些名词开始,到灵活运用它们解决实际问题,是一个不断学习、实验和迭代的过程。希望这篇详解能为你点亮一盏灯,让你在探索大模型世界的路上,走得更加踏实和自信。记住,最重要的不是追逐最炫酷的技术,而是深刻理解你的业务,用合适的技术解决好真实的问题。