从零到 RAG 问答应用:11 门课的大模型应用开发完整教程 LLM Cookbook
【免费下载链接】llm-cookbook面向开发者的 LLM 入门教程,吴恩达大模型系列课程中文版项目地址: https://gitcode.com/GitHub_Trending/ll/llm-cookbook
LLM Cookbook 是 Datawhale 基于吴恩达大模型系列课程翻译复现的中文实战教程,共 11 门课(必修 4 门 + 选修 7 门),覆盖 Prompt 工程、ChatGPT API、LangChain 编排到 RAG 检索增强生成的全流程,适合有 Python 基础、想系统入门大模型应用开发的新手。
一条能跑通的目标线
与其逐门课硬啃,不如先定一个小目标:把自己的一份 PDF 变成可以问答的机器人。这个目标不大,但它把 11 门课全部串了起来——每门课都负责其中一段工序,学完一门,机器人就往前长一截。先看清分工,学习时心里才有账:
| 课程 | 类别 | 在"我的 PDF 问答机器人"里负责什么 |
|---|---|---|
| 必修一 Prompt Engineering | 必修 | 学会写指令,决定最终回答的质量底线 |
| 必修二 Building Systems with the ChatGPT API | 必修 | 学会 Token 记账、输入输出检查,把调用做成系统 |
| 必修三 LangChain for LLM Application Development | 必修 | 用组件把流程串起来,加 Memory 支持多轮对话 |
| 必修四 LangChain Chat with Your Data | 必修 | 目标主战场:加载 PDF、切块、向量化、检索、作答 |
| 选修-Advanced Prompting | 选修 | 思维链、ReAct 等技巧,提升推理类问题质量 |
| 选修-Functions, Tools and Agents with LangChain | 选修 | 让机器人能调工具,升级为 Agent |
| 选修-Advanced Retrieval for AI with Chroma | 选修 | 打磨检索:查询扩展、重排序、嵌入适配器 |
| 选修-Building and Evaluating Advanced RAG Applications | 选修 | 高级 RAG 结构 + 评估指标,量化效果 |
| 选修-Finetuning Large Language Models | 选修 | 不走检索的另一条路:用数据训模型 |
| 选修-Building Generative AI Applications with Gradio | 选修 | 给机器人套上可用的界面 |
| 选修-Evaluating and Debugging Generative AI | 选修 | 用 W&B 追踪、调试,定位问题 |
课程代码都在 content/ 目录,文字版教程在 docs/ 目录,环境没配好先看 环境配置。
为什么调用一次模型就要按 Token 算账 💰
先说结论:模型读写的不是字,也不是词,而是 Token——分词器把文本切碎后的最小单元,它既是模型处理的粒度,也是计费的单位。
可以把 LLM 理解成一个靠海量文本喂出来的超级自动补全器:给它半句话,它会按概率补出最像人话的下一段。但这个补全器的"最小手眼"就是 Token,它只能整块地搬动 Token。你让它把"番茄炒蛋"倒过来写,它容易翻车,因为"番茄"在它眼里是一整块,拆不开字。英文里 1 个 Token 约等于 3/4 个单词,中文约 1 个汉字,估算成本时这就是你的换算率。
另一件事必须知道:模型的上下文上限是"输入 + 输出"共用的 Token 池。塞进去的资料越多,留给回答的空间就越少——后面讲 RAG 时会反复撞上这个限制。
模型为什么能补出像人话的内容?分三个阶段养成:预训练阶段在超大语料上反复练"补下一个词",这一阶段读什么写什么,只会接龙;指令微调阶段拿"指令 + 标准答复"的小数据集训练,让它学会回答问题而不是续写;再往后是 RLHF(人类反馈强化学习),人工给候选回答打分,模型学会往高分方向答。所以你会看到没做过指令微调的 Base 模型爱跑题乱接话,而你在 API 里调到的基本都是调过教化的版本。
容易混的是微调和 Prompt 的分界:微调改的是模型参数,花钱花算力;Prompt 只改这一次调用的输入,花的是 Token 钱。前者动机器,后者动台词。
怎么让模型稳定地说人话、听话 💬
调通 API 只是起点,能不能稳定产出符合要求的文本,全看你怎么问。
Chat 格式把一条提问拆成两层:system 消息定人设和规矩(长期生效),user 消息提这次的具体需求。像填一张工单:一栏写门店经营规则,一栏写这位顾客的具体诉求。
messages = [ {"role": "system", "content": "你是客服助手,回复不超过两句"}, {"role": "user", "content": "帮我总结这条差评"}, ]Temperature 是采样的随机旋钮,像骰子的音量:设 0 就是永远给出最可能的那个答案,调高则越来越敢掷骰子。写发票摘要要低,同一个 Prompt 连跑三次得是同一句;写产品文案可以调高一点,三次跑出三种风格。必修课里所有示例默认temperature=0,就为了让结果可复现——出了问题你能判断是 Prompt 的锅还是运气的锅,而不是两样都怪。
Prompt 迭代优化不是写作文,更像调试:写一版 → 拿十来个真实样本跑 → 把答错的挑出来归类(是含糊、缺背景、还是需要先想后答)→ 改指令 → 再跑。必修一的总结、推断、转换、扩展四个任务,每个都是一轮轮磨出来的。
还有一类错误靠改指令解决不了:数学题、逻辑题上的跳步。这时上思维链(CoT)——在指令里要求模型先展开中间步骤再给结论,等于要求它"先列式子再报答案",选修课 Advanced Prompting 里有完整实现。
模型为什么答不出我自己文档里的内容 📚
原因不复杂:模型的知识截止在它训练那天,你的私有文档它压根没见过。RAG(检索增强生成)的思路因此而来——先查资料,再作答。
Embedding 是给每段文本配一种"气味":语义相近的句子,气味就相近。"这条裤子版型偏大"和"建议拍小一码"闻起来很像,"今天适合跑步吗"闻起来完全两码事。检索不再靠数关键词重合,而是靠比对"气味"远近。
有了气味还不够,得先处理文档。PDF 先切块,这里有个讲究:块太大,检索回来一大坨噪声挤爆上下文;块太小,一句话被拦腰截断,语义就没了。必修四用RecursiveCharacterTextSplitter设块大小并留重叠区,就是让切点尽量落在句子边界上:
splitter = RecursiveCharacterTextSplitter( chunk_size=chunk_size, chunk_overlap=chunk_overlap )切好的块逐块过 Embedding 变成向量,存进向量数据库——仓库里用的是轻量方案Chroma,你可以把它理解成一个按"气味"索书的书库。之后用户问题同样转成向量,去库里找最近的邻居,连同问题一起交给 LLM 作答。整条流程是:加载 → 切块 → 向量化 → 入库 → 检索 → 拼 Prompt → 生成。
基础相似性搜索有几个会真实翻车的坑:同一个 PDF 重复入库会返回重复块;问题里写了"第三讲"这种定位词,向量检索只认语义不认序号,直接答非所问。选修课 Chroma 高级检索逐个给药方:查询扩展先把问题改写成多个变体再搜;Cross-encoder 重排序用交叉编码器对粗筛结果精排;嵌入适配器训练一个小矩阵,把问题向量转成更适合本任务的表示。

容易混的是 RAG 和微调:RAG 不改模型,只换它桌上的资料,知识随时可增删;微调是把知识蒸进参数,改完不可逆,但推理时不再依赖外挂检索。
单点 Demo 怎么拼成能用的应用 ⚙️
单个能力拼起来才成系统,这一层靠LangChain和它定义的Chain。Chain 是把"检索 → 填模板 → 调模型 → 解析输出"串成固定流水线的单元,就像装配线上焊死的工位顺序。RAG 问答不用手写胶水代码:
chain = RetrievalQA.from_chain_type( llm, retriever=vectordb.as_retriever() )把向量库和模型挂上去,问一句话,检索、拼 Prompt、调模型、返回答案全自动完成。想自定义格式时,再用 Prompt 模板加输出解析器(Output Parser)把自由文本掰成 JSON。
Memory解决另一个问题:Chain 管单次流程,Memory 管多轮对话的状态——记住上一句谁说了什么,聊天机器人才接得上话,你的 PDF 机器人从"问一句答一句"变成能追问的对话体。
再往上走一步是Agent:给模型"思考—行动—观察"的循环(ReAct 范式),让它自己决定调哪个工具——查搜索、算数、查库,直到给出答案。分界很清楚:Chain 的路线写死在代码里,每步干什么你说了算;Agent 的路线是模型现场决策的,灵活但更容易跑偏,用之前先想好兜底。ReAct 的推导在选修 Advanced Prompting,用 LangChain 落地在选修 Functions, Tools and Agents。
两条路还要分清楚——微调 vs RAG:微调像定制鞋垫,做出来合脚,但脚型变了就得重做;RAG 像给桌上加一本手册,手册随时可换。经验顺序是先 RAG 后微调:资料能检索到的问题优先检索;检索也解决不了、且属于稳定的格式或风格要求(比如客服永远先道歉、再给订单号、最后列售后选项),再考虑动参数。
最后别忘评估:改 Prompt、换检索策略或微调后到底变好还是变坏,靠一组标准问题量化打分——答案相关性、上下文相关性这类指标,选修 RAG 评估课里都有实操框架,有数字才敢上线。
必修选修怎么排
建议按这个节奏走,每段留白给自己重跑代码的时间:
- 必修一(1~2 周):先会写指令,做完总结、推断、转换、扩展四类任务,最后拼一个聊天机器人。出口是能给一个任务写出可复现、带评估样本的 Prompt。
- 必修二(2~3 周):Token 与 Chat 格式打底,走输入分类、内容监督、思维链、Prompt 链,最后搭一个带评估的端到端问答系统。出口是说得清每次调用的 Token 开销。
- 必修三(2~3 周):模型、解析器、Memory、Chain、文档问答、Agent 依次过关,不手写胶水代码拼出带记忆的问答链。
- 必修四(2~3 周):文档加载、分割、Embedding、Chroma 入库、检索、RAG 问答、聊天,你的 PDF 机器人在这一段成型。
- 选修(各 2~4 周,按兴趣挑方向):深挖检索选 Chroma 高级检索 + 高级 RAG 评估两门;玩提示技巧选 Advanced Prompting;想动参数选微调课;想加界面和调试分别选 Gradio 与 W&B 两门;想上 Agent 选 Functions, Tools and Agents。
先跑通,再深入
这份教程最大的特点是"可运行":每个概念后面都跟着能执行的 Notebook,你不需要先把 11 门课的理论背完再动手。比较稳的路径是——先按必修四的顺序把"我的 PDF 问答机器人"跑通一遍,哪怕中间有些概念似懂非懂;等机器人真的能回答问题了,再回头把不懂的地方逐个补上,你会发现它们早就在代码里出现过。仓库克隆下来之后,课程代码看 content/,想安静阅读可以看 docs/ 里的文字版教程,环境配置不熟就翻 环境配置(仓库地址:git clone https://gitcode.com/GitHub_Trending/ll/llm-cookbook)。
【免费下载链接】llm-cookbook面向开发者的 LLM 入门教程,吴恩达大模型系列课程中文版项目地址: https://gitcode.com/GitHub_Trending/ll/llm-cookbook
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考