第7章:大语言模型(LLM)
大语言模型(Large Language Model,LLM)是近年来人工智能领域最重要的突破之一。本章将深入探讨LLM的核心技术,包括预训练与微调、提示工程、RAG架构以及模型对齐技术。
7.1 预训练与微调
大语言模型的训练通常分为两个阶段:预训练(Pre-training)和微调(Fine-tuning)。理解这两个阶段的区别对于掌握LLM的工作原理至关重要。
7.1.1 主流大语言模型介绍
以下是当前主流的大语言模型:
| 模型 | 开发机构 | 参数量 | 特点 |
|---|---|---|---|
| GPT-4 | OpenAI | 未公开(估计1.8T) | 多模态能力强,推理能力优秀 |
| LLaMA 2/3 | Meta | 7B-70B/400B | 开源可商用,社区生态丰富 |
| ChatGLM | 智谱AI | 6B-130B | 中文优化好,支持长上下文 |
| Claude | Anthropic | 未公开 | 安全性高,长文本处理能力强 |
| 文心一言 | 百度 | 未公开 | 中文理解能力强,知识图谱融合 |
| 通义千问 | 阿里巴巴 | 7B-110B | 开源版本优秀,多语言能力 |
7.1.2 预训练阶段
预训练是在大规模无标注文本数据上进行的无监督学习过程。模型通过学习预测下一个词(Next Token Prediction)来掌握语言的基本规律和世界知识。
- 数据规模:通常使用TB级别的文本数据(网页、书籍、代码等)
- 计算资源:需要数千个GPU/TPU,训练成本高昂
- 学习目标:自监督学习,无需人工标注
- 输出能力:获得通用语言理解和生成能力
7.1.3 微调阶段
微调是在预训练模型的基础上,使用特定任务的标注数据进行进一步训练,使模型适应具体的应用场景。
| 维度 | 预训练 | 微调 |
|---|---|---|
| 数据量 | TB级 | MB-GB级 |
| 数据类型 | 无标注 | 有标注/对话数据 |
| 训练成本 | 数百万美元 | 数千-数十万美元 |
| 训练时间 | 数周-数月 | 数小时-数天 |
| 目的 | 通用能力 | 特定任务/对齐 |
7.1.4 高效微调技术(PEFT)
由于全参数微调成本高昂,研究者提出了多种参数高效微调方法:
- LoRA(Low-Rank Adaptation):只训练低秩矩阵,冻结原模型参数
- Adapter:在Transformer层中插入小型适配器模块
- Prefix Tuning:训练前缀嵌入向量
- Prompt Tuning:优化软提示(Soft Prompts)
7.2 提示工程(Prompt Engineering)
提示工程是通过设计高质量的输入提示(Prompt),引导大语言模型产生期望输出的技术。掌握提示工程技巧可以显著提升模型的表现。
7.2.1 零样本提示(Zero-Shot)
零样本提示是指不给模型任何示例,直接描述任务要求。
请将以下中文翻译成英文:
"人工智能正在改变我们的生活方式。"
- 使用明确的指令词(翻译、总结、分类等)
- 指定输出格式(JSON、Markdown、列表等)
- 设定角色或风格("你是一位资深翻译家")
- 添加约束条件(字数限制、语气要求等)
7.2.2 少样本提示(Few-Shot)
少样本提示通过提供几个输入-输出示例,帮助模型理解任务模式。
请判断以下评论的情感倾向(正面/负面):
评论:这部电影太精彩了,值得二刷!
情感:正面
评论:剧情拖沓,演员演技一般。
情感:负面
评论:画面精美,但故事有些老套。
情感:
- 提供3-5个高质量示例
- 确保示例覆盖不同情况
- 保持示例格式一致性
- 示例应简洁明了,突出重点
7.2.3 Chain-of-Thought(思维链)
思维链提示是一种引导模型进行逐步推理的技术,通过在提示中展示推理过程,显著提升模型在复杂任务上的表现。
【标准提示】
问:一个果园有15棵苹果树,每棵树产40个苹果。如果其中3棵树
因病减产一半,果园总共能收获多少苹果?
答:510
【思维链提示】
问:一个果园有15棵苹果树,每棵树产40个苹果。如果其中3棵树
因病减产一半,果园总共能收获多少苹果?
答:让我逐步思考:
- 正常产量的树:15-3=12棵,产12×40=480个苹果
- 减产的一半:3棵,每棵产40÷2=20个,共3×20=60个
- 总产量:480+60=540个苹果
思维链的变体包括:
- Zero-Shot CoT:在问题后添加"Let's think step by step"
- Self-Consistency:生成多条推理路径,投票选出最佳答案
- Tree of Thoughts:构建思维树,探索多个推理分支
7.3 RAG(检索增强生成)
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将外部知识检索与大语言模型生成相结合的技术,可以有效解决模型幻觉和知识时效性问题。
7.3.1 RAG架构和工作原理
RAG的基本流程包括三个步骤:
- 索引(Indexing):将知识库文档切分并编码为向量,存储到向量数据库
- 检索(Retrieval):将用户查询编码为向量,检索最相关的文档片段
- 生成(Generation):将检索到的上下文与用户查询一起输入LLM生成答案
from langchain import OpenAI, VectorDBQA
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import CharacterTextSplitter
from langchain.document_loaders import TextLoader
# 1. 加载和切分文档
loader = TextLoader("knowledge_base.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)
# 2. 创建向量数据库
embeddings = OpenAIEmbeddings()
vectordb = Chroma.from_documents(texts, embeddings)
# 3. 构建RAG问答链
qa = VectorDBQA.from_chain_type(
llm=OpenAI(),
chain_type="stuff",
vectorstore=vectordb
)
# 4. 查询
query = "公司的年假政策是什么?"
result = qa.run(query)
print(result)
7.3.2 向量数据库
向量数据库是RAG系统的核心组件,用于高效存储和检索高维向量。主流向量数据库包括:
| 数据库 | 特点 | 适用场景 |
|---|---|---|
| Chroma | 轻量级、易用、开源 | 原型开发、小型项目 |
| Pinecone | 托管服务、高性能 | 生产环境、大规模数据 |
| Milvus | 云原生、分布式 | 企业级应用 |
| Weaviate | GraphQL接口、模块化 | 复杂查询场景 |
| Qdrant | Rust编写、高性能过滤 | 需要过滤条件的场景 |
7.3.3 Embedding模型
Embedding模型将文本转换为向量表示,是RAG系统的关键。选择合适的Embedding模型对检索质量至关重要。
- OpenAI text-embedding-3:综合性能优秀,支持多语言
- BGE(BAAI):开源中文效果最佳
- M3E:专为中文设计的开源模型
- E5:微软开源,英文效果优秀
- GTE:阿里巴巴开源,多语言支持好
- 文档切分策略:根据语义段落切分,保持上下文完整
- 重排序(Rerank):使用交叉编码器提升检索精度
- 混合检索:结合向量检索和关键词检索
- 查询重写:扩展或改写用户查询以提高召回率
7.4 模型对齐技术
模型对齐(Alignment)是指使大语言模型的行为符合人类价值观和意图的技术。这是确保AI安全性和实用性的关键环节。
7.4.1 RLHF(基于人类反馈的强化学习)
RLHF是目前最主流的对齐技术,ChatGPT等模型都采用了这种方法。
- 监督微调(SFT):使用高质量对话数据对预训练模型进行微调
- 奖励模型训练:收集人类偏好数据,训练一个奖励模型来预测人类偏好
- 强化学习优化:使用PPO等算法,根据奖励模型的反馈优化策略
# 阶段1:监督微调(SFT)
sft_model = pretrain_model.fine_tune(dialogue_data)
# 阶段2:训练奖励模型
# 收集人类偏好数据:(prompt, chosen_response, rejected_response)
reward_model = train_reward_model(preference_data)
# 阶段3:RL优化(PPO)
for prompt in prompts:
response = sft_model.generate(prompt)
reward = reward_model(prompt, response)
# 使用PPO算法更新模型,最大化奖励
sft_model.update_ppo(reward)
7.4.2 SFT(监督微调)
SFT是RLHF的第一阶段,也是许多开源模型(如LLaMA-2-Chat)采用的主要对齐方法。
- 多样性:覆盖各种任务类型和领域
- 质量:人工编写高质量回复
- 格式:统一对话格式(如ChatML、Alpaca格式)
- 长度:平衡长短对话样本
7.4.3 新兴对齐技术
除了RLHF,研究者还提出了多种新的对齐方法:
| 技术 | 核心思想 | 优势 |
|---|---|---|
| DPO | 直接偏好优化,无需奖励模型 | 更简单、训练更稳定 |
| KTO | 从二元反馈中学习 | 数据收集成本更低 |
| Constitutional AI | 用AI自我批评和修正 | 减少对人类标注的依赖 |
| RLAIF | 用AI替代人类进行反馈 | 可扩展性更强 |
| ORPO | 将SFT和偏好学习合二为一 | 训练效率更高 |
- 对齐税:过度对齐可能导致模型能力下降
- 价值观冲突:不同文化背景的价值观差异
- 越狱攻击:用户可能通过精心设计的提示绕过安全限制
- 可解释性:难以理解模型为何会做出特定决策
7.5 本章小结
本章深入探讨了大语言模型的核心技术:
- 预训练与微调:理解两阶段训练范式,掌握LoRA等高效微调技术
- 提示工程:熟练运用零样本、少样本和思维链提示技巧
- RAG:构建检索增强生成系统,解决知识时效性问题
- 模型对齐:了解RLHF、DPO等技术,确保AI安全可控
建议读者动手实践RAG系统的搭建,尝试使用LangChain或LlamaIndex框架,结合开源Embedding模型和向量数据库,构建一个个人知识库问答系统。这将帮助你深入理解本章的理论知识。