从 LLM 到 RAG 应用开发:llm-universe 第一章大型语言模型全景指南
2026/9/14 11:35:01 网站建设 项目流程

从 LLM 到 RAG 应用开发:llm-universe 第一章大型语言模型全景指南

【免费下载链接】llm-universe本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/项目地址: https://gitcode.com/GitHub_Trending/ll/llm-universe

本篇指南对应 llm-universe 教程的第一章,系统梳理大型语言模型(LLM)的核心概念、主流模型格局、RAG 检索增强生成原理、LangChain 编排框架以及大模型应用的开发流程与环境搭建。读完本文,你将掌握 LLM 的选型要点、RAG 与微调的取舍逻辑、LangChain 0.3 的核心组件,并能在本地或云端环境跑通一条"文档建库—检索—增强—生成"的完整链路。

一、大型语言模型(LLM)简介

大语言模型(LLM,Large Language Model)是能够理解和生成自然语言的神经网络模型。它通常指包含数百亿(或更多)参数的语言模型,在海量文本数据上训练,从而获得对语言深层次的理解。国外知名 LLM 有 GPT、LLaMA、Gemini、Claude 和 Grok 等,国内有 DeepSeek、通义千问、豆包、Kimi、文心一言、GLM 等。

为了探索性能极限,研究人员训练了越来越庞大的模型,例如拥有175B(1750 亿)参数的 GPT-3 和540B(5400 亿)参数的 PaLM。尽管这些大模型与小模型(如3.3 亿参数的 BERT、15 亿参数的 GPT-2)使用相似的架构和预训练任务,却展现出截然不同的能力,尤其在复杂任务上表现出惊人潜力,这被称为"涌现能力"。以 GPT-3 与 GPT-2 对比为例:GPT-3 可以通过学习上下文解决少样本任务,而 GPT-2 在这方面表现较差。LLM 的一个杰出应用是 ChatGPT——GPT 系列模型用于对话式应用的大胆尝试。

1.1 语言建模的发展脉络

  • 20 世纪 90 年代:研究主要采用统计学习方法预测词汇(通过前文预测下一个词),但在理解复杂语言规则上存在局限。
  • 2003 年:深度学习先驱Bengio在经典论文《A Neural Probabilistic Language Model》中首次将深度学习融入语言模型,让模型更好地捕捉语言中的复杂关系。
  • 2018 年前后Transformer 架构的神经网络模型崭露头角。通过海量文本训练,模型像"阅读整个互联网"一样深入理解语言规则,极大提升了各类 NLP 任务的表现。
  • 规模扩大时期:研究人员发现随着模型规模扩大(增加参数或数据),模型在各种任务上的表现显著提升,即Scaling Law,标志着 LLM 时代的开启。

通常大模型由预训练、后训练、在线推理三个阶段构成。预训练 Scaling Law 长期是模型扩展主线;OpenAI 在 o1 中进一步展示模型表现随强化学习训练计算量与测试时思考计算量增加而提升,因此RL ScalingTest-time Scaling(测试时扩展)开始受到广泛关注。

1.2 常见的 LLM 模型

大模型发展虽然只有短短几年,但国内外已发布超过百种模型。以下按厂商梳理主流模型的版本演进与当前型号(内容核查至 2026 年 07 月,实际接入前仍应查看各厂商 Models 与定价页)。

GPT(OpenAI,闭源)

GPT 是 OpenAI 的闭源模型系列,也是 ChatGPT 背后的模型。2022 年 11 月 OpenAI 基于 GPT-3.5 推出 ChatGPT,上线 5 天用户破百万,两个月后月活约 1 亿,此后全球月活跃用户超过 10 亿。

版本演进

  • GPT-3 系列(2020—2022):将 decoder-only Transformer 扩展到 1750 亿参数,让In-context Learning(上下文学习)进入主流视野;GPT-3.5 沿用 InstructGPT 的RLHF(人类反馈强化学习)路线——先人工示范做监督微调,再按人类排序训练奖励模型,最后用强化学习调整模型。
  • GPT-4 系列(2023—2024):引入图像输入,改进复杂指令、代码与推理能力;GPT-4o 用同一神经网络端到端处理文本、视觉和音频,语音延迟更低。
  • o1(2024):把Test-time Scaling带入主流产品,用大规模强化学习训练内部推理过程,回答难题时可投入更多计算换取更好的数学、代码和多步推理表现。
  • GPT-5 系列(2025—2026):将快速回答、深度推理和实时路由合为统一系统,GPT-5.6 加入Programmatic Tool Calling(程序化工具调用),模型可编写并执行小段程序组织多次工具调用、筛选中间结果,减少模型往返次数。

当前型号

型号上下文长度知识截止日期主要用途
GPT-5.6 Sol1.05M2026-02-16高难度推理、复杂编码和长工具链
GPT-5.6 Terra1.05M2026-02-16能力、延迟和成本较均衡的生产任务
GPT-5.6 Luna1.05M2026-02-16成本敏感的批量处理和高吞吐调用
Claude(Anthropic,闭源)

Claude 长期重视安全对齐和长文档处理,近几代重点扩展到代码与 Agent。

版本演进:Claude 1/2(2023)采用Constitutional AIRLAIF(AI 反馈强化学习)减少安全对齐的人工标注,Claude 2 把上下文扩展到 100K;Claude 3 系列(2024—2025)加入图像理解并形成 Haiku/Sonnet/Opus 三档,3.5 Sonnet 加入Computer Use(计算机操作),3.7 Sonnet 首次加入Hybrid Reasoning(混合推理)与 Extended Thinking;Claude 4 系列将工具调用接入扩展思考并支持并行调用,Opus 4.6 加入Adaptive Thinking(自适应思考);Claude 5 系列(2026)把 1M 上下文设为默认并默认开启思考。

当前型号

型号上下文长度知识截止日期主要用途
Claude Haiku 4.5200K2025-02实时交互、高并发和成本敏感任务
Claude Sonnet 51M2026-01日常开发、代码生成和一般 Agent 任务
Claude Opus 51M2026-05复杂 Agent 编码和企业知识工作
Claude Fable 51M2026-01面向一般用户的最高档;高难度推理和长时程 Agent
Claude Mythos 5(限邀)1M2026-01防御性网络安全工作
Gemini(Google DeepMind,闭源)

Gemini 以原生多模态和长上下文著称,通过 Gemini API 和 Vertex AI 提供,并与 Google Search 等服务集成。

版本演进:Gemini 1 系列(2023—2024)从 PaLM 文本主线转向原生多模态训练,1.5 改用MoE(混合专家)并把上下文扩展到百万 token;Gemini 2 系列(2024—2025)把原生工具调用、图像与音频输出带入主线并推出 Multimodal Live API,2.5 开放Thinking Budget(思考预算);Gemini 3.x(2025—2026)改为 low/medium/high 等Thinking Level(思考等级)由模型自行分配推理计算。

当前型号

型号上下文长度知识截止日期主要用途
Gemini 3.1 Pro Preview1M2025-01复杂多模态推理、编码和 Agent
Gemini 3.1 Deep Think(应用模式)2025-01数学、科学和工程难题
Gemini 3.6 Flash1M2025-01兼顾速度的多模态、编码和多步 Agent 任务
Gemini 3.5 Flash-Lite1M2025-01文档抽取、结构化处理和高吞吐调用
Llama(Meta,开源)

Llama 是 Meta 发布的开放权重模型系列,是 2023 年开源大模型浪潮的重要起点,围绕它形成了成熟的微调、量化和本地推理生态。

版本演进:Llama 1/2(2023)证明较小模型用更多数据充分训练也能取得不错效果;Llama 3 系列(2024)更换 128K 词表 tokenizer,8B/70B 采用GQA(分组查询注意力)减少 KV Cache,3.1 发布 405B 并纳入多语言和长上下文;Llama 4 Scout/Maverick(2025)改用 MoE,以Early Fusion(早期融合)把文本与视觉 token 放进同一主干训练。

当前型号

型号上下文长度知识截止日期主要用途
Llama 4 Scout(开源)10M2024-08超长文档、私有化部署和资源受限的多模态任务
Llama 4 Maverick(开源)1M2024-08质量优先的通用文本与图像理解
Grok(xAI,部分开源)

Grok 最鲜明的特点是可通过 Web Search 和 X Search 获取实时信息(结果来自外部工具,并非模型训练数据自动更新)。Grok-1(2023;2024 年开放权重)公布了 314B 基础模型权重与推理代码;Grok 4 系列(2026,闭源)中 4.3 将上下文扩展到 1M 并支持调节推理强度,4.5 由 xAI 与 Cursor 联合训练,针对多步软件工程任务做了强化学习训练。

当前型号

型号上下文长度知识截止日期主要用途
Grok 4.5(闭源)500K2026-02-01编码、Agent、工程与知识工作
DeepSeek(深度求索,开源)

DeepSeek 以开放权重和较低训练/推理成本受到关注,既提供可自行部署的模型,也提供价格较低的 API。

版本演进:DeepSeek-V2(2024)把DeepSeekMoEMLA(多头潜在注意力)用到主力模型中,减少长文本生成的 KV Cache;V3 系列(2024—2025)加入无辅助损失负载均衡与MTP(多 token 预测),在超大规模模型上验证 FP8 混合精度训练,并用 DualPipe 重叠计算与跨节点通信,V3.2 提出DSA(DeepSeek 稀疏注意力);DeepSeek-R1(2025)用GRPO(组相对策略优化)训练推理能力,R1-Zero 证明无监督微调也能通过强化学习出现自我验证和反思;DeepSeek-V4 系列(2026)沿用 DSA,加入CSA/HCA交替的压缩稀疏注意力与mHC(流形约束超连接),降低百万 token 上下文的计算和显存开销。

当前型号

型号上下文长度知识截止日期主要用途
DeepSeek-V4-Pro(开源)1M1.6T 总参数、49B 激活;质量优先的推理、编码和 Agent 任务
DeepSeek-V4-Flash(开源)1M284B 总参数、13B 激活;成本和吞吐优先的通用调用
通义千问 Qwen(阿里巴巴,部分开源)

Qwen 既有开放权重,也有通过阿里云提供的闭源型号,覆盖小型本地模型、大型 MoE 以及代码、视觉和音频模型,支持中文与多种语言。

版本演进:Qwen1(2023)以中英能力和开放权重起步;Qwen2(2024)将 GQA 扩展到全部参数规模,2.5 补强训练数据、结构化输出和指令遵循;Qwen3(2025—2026)把 thinking 与 non-thinking 放进同一模型,Qwen3-Next 大规模采用Gated DeltaNet(门控 Delta 网络)降低长文本开销,Qwen3.5 加入原生多模态,Qwen3.8-Max-Preview 改为始终使用思考模式并允许调节推理强度。

当前型号

型号上下文长度知识截止日期主要用途
Qwen3.8-Max-Preview(闭源)当前云端最高档;推理、视觉理解和文本生成
Qwen3.7-Max(闭源)1M长时程推理和复杂 Agent
Qwen3.7-Plus(闭源)1M通用多模态和生产调用
Qwen3.6-35B-A3B(开源)262K本地部署、代码和网页 Agent
Kimi(月之暗面,部分开源)

Kimi 最初因长上下文产品受到关注,用户可直接上传论文、合同和代码库,后续版本转向代码和 Agent。

版本演进:Kimi K2 系列(2025—2026,开源)是万亿参数 MoE,提出MuonClip稳定训练;K2 Thinking 把测试时扩展延伸到工具调用步数,K2.5 加入原生多模态与PARL(并行 Agent 强化学习),K2.6 把并行 Agent 规模扩展到 300 个子 Agent、4000 步;Kimi K3(2026,开源)扩展到 2.8T 参数,使用KDA(Kimi Delta Attention)AttnRes(Attention Residuals)Stable LatentMoE(896 个专家中激活 16 个,共激活 104B 参数)。

当前型号

型号上下文长度知识截止日期主要用途
Kimi K3(开源)1M长文档、代码库和长时程知识工作
Kimi K2.6(开源)256K可切换思考模式的对话、视觉和 Agent 任务
GLM / ChatGLM(智谱 AI,部分开源)

GLM 的特点是中文能力、开放权重和本地部署支持,当前重点转向代码和长时程 Agent。

版本演进:ChatGLM-6B(2023)沿用 GLM 空白填充式预训练,仅 60 亿参数且可量化运行于消费级显卡;GLM-4 系列(2024—2025)增加工具调用、长上下文与多模态,4.5 改用 MoE,4.7 加入Preserved ThinkingTurn-level Thinking;GLM-5 系列(2026,开源)扩大 MoE 规模并沿用 DSA,GLM-5.2 将上下文扩展到 1M,提出IndexShare共享索引器以降低 FLOPs,并改进 MTP 层使推测解码平均接受长度最高提高 20%。

当前型号

型号上下文长度知识截止日期主要用途
GLM-5.2(开源)1M744B 总参数、40B 激活;长时程编码、复杂调试和 Agent 任务
豆包 / Seed(字节跳动,闭源)

豆包是面向用户的应用,Seed 是字节跳动的模型系列,开发者主要通过火山方舟调用。Seed 1.6(2025)提出AdaCoT(自适应思维链)按题目难度决定直接回答还是展开推理;Seed 2 系列(2026)中 2.0 改进复杂指令、多模态理解和长时程 Agent,2.1 聚焦端到端代码交付和跨工具操作。

当前型号

型号上下文长度知识截止日期主要用途
Seed 2.1 Pro复杂推理、通用 Agent 和端到端代码任务
Seed 2.1 Turbo延迟敏感的通用任务和工具调用

此外还有文心 ERNIE(百度,早期主打知识增强、当前主力文心 5.1,ERNIE 4.5 提供开放权重)、讯飞星火(科大讯飞,Spark X2 系列增加深度推理与 Function Calling)、Baichuan(百川智能,重心转向医疗,仅作医疗辅助)等。这些模型没有一个能在所有任务上占优——选型时先明确是否需要本地部署、联网、多模态、长上下文或工具调用,再用真实样本比较回答质量、延迟和成本;公开榜单只适合了解大致位置,不能替代业务测试。

1.3 LLM 的特点与能力

LLM 的常见特点:

  1. 规模大:参数量常达数百亿或数千亿,但参数规模并不能单独决定模型能力。
  2. 预训练 + 后训练:先大规模预训练,再通过指令微调、偏好优化或强化学习调整行为。
  3. 依赖上下文:模型根据前文生成后续内容,提示写法和对话历史直接影响回答。
  4. 支持多语言:许多模型可以处理英语以外的语言。
  5. 支持多模态:部分模型可处理图像、音频和视频。
  6. 存在使用风险:可能生成有害或带偏见内容,也可能泄露输入中的敏感信息。
  7. 计算成本高:训练和推理通常依赖 GPU 或 TPU。
涌现能力(emergent abilities)

模型规模增加后,有些能力会在特定评测中突然明显提升,称为涌现能力。不过"突然出现"是否代表模型内部发生了类似物理相变的变化仍有争议:若评测指标只有"答对或答错"两种结果,原本平滑的能力增长也可能看起来像跳变。

下面三项能力经常与大模型的涌现现象一起讨论,但来源并不完全相同,不能都简单归因于参数规模:

  1. 上下文学习:用户在 Prompt 中给出任务说明或少量示例,模型即可照着完成新输入,无需更新参数。
  2. 指令遵循:主要来自指令微调、偏好优化等后训练方法,并非模型变大后自然获得的全部结果。
  3. 逐步推理:在 Prompt 中给出推理示例引导模型先写中间步骤再回答,即思维链(CoT,Chain of Thought);较新的推理模型还会通过强化学习专门训练这项能力。

因此,"涌现"更适合描述某项能力在特定规模和评测下的表现,不宜笼统解释大模型的所有进步。

作为基座模型支持多元应用的能力

2021 年斯坦福大学研究人员提出**基座模型(Foundation Model)**概念:在大规模数据上训练、随后可适配多种下游任务的模型。同一个基座模型可以通过 Prompt、RAG、工具调用或微调服务多个应用,不必为每项任务从头训练;但通用模型并不能替代所有专用模型,是否复用同一底座仍要看效果、成本、延迟和数据安全要求。

支持对话作为统一入口的能力

ChatGPT 让大量用户通过对话使用大模型。对话界面进一步延伸到智能体(Agent):模型可以规划步骤、调用工具、读取结果并继续执行。LLM 已用于写作、问答、翻译、搜索和多模态处理,也让AGI(通用人工智能)再次成为讨论焦点,但目前没有公认标准可以证明 LLM 是 AGI 的早期形态。

1.4 Agent 与工具调用

LLM 如果只做"读入 Prompt → 生成文本",多半只能完成单轮或有限轮对话。查资料、计算、调用 API、修改文件等操作需要借助工具调用(Tool Calling)。Function Calling 是常见实现方式:开发者声明函数名称、参数格式和用途,模型生成结构化调用请求,由应用执行函数并把结果返回给模型。

Agent 循环大致是:理解目标 → 选择工具和参数 → 执行工具 → 读取执行结果 → 决定继续操作还是回答用户。实际开发时通常要设置步数上限、超时和成本预算,并记录每一步的输入与输出以方便排查错误。

RAG 和 Agent 是两种不同的应用模式:普通 RAG 按固定流程完成"检索一次,再生成一次",不需要模型规划下一步;在 Agent 系统中,检索也可以注册成工具,由模型决定何时查、查几次,后一种做法通常称为Agentic RAG

二、什么是 RAG

LLM 虽然掌握了大量知识,但仍会答错、编造内容,参数中的知识也会逐渐过时。检索增强生成(RAG,Retrieval-Augmented Generation)在生成答案前,先从知识库、搜索引擎或其他外部数据源检索相关材料,再把这些材料作为上下文交给模型,将模型参数中记住的知识与可更新的外部知识结合起来。

需要强调的是,RAG 不保证答案一定正确。只有检索结果相关、材料本身可靠、且模型确实依据材料作答时,它才可能提高事实准确性和来源可追溯性;如果召回了错误片段,模型也可能围绕错误材料生成一个看似合理的答案。

常见问题与 RAG 的对应关系:

  • 幻觉:LLM 可能生成看似合理但不真实的内容。RAG 用外部材料约束回答,能减少一部分无依据生成,但不能彻底消除幻觉。
  • 知识过时:权重里的知识停在训练截止日之前,RAG 可以查更新后的库或网页。
  • 内容不可追溯:RAG 可以保留检索片段与原始文档的对应关系,再由应用展示引用;引用能力需要额外实现,并非模型自动具备。
  • 垂直知识不够:RAG 可以检索领域文档并将相关片段放入上下文。
  • 复杂题缺材料:检索可补充事实和背景,但后续推理是否正确仍取决于模型能力与材料质量。
  • 业务知识发生变化:很多情况下不必重新训练模型,更新知识库和索引即可;业务边界变化较大时还需重新检查文档分块、检索策略、权限和评测集。
  • 长文成本较高:RAG 只取相关片段减少输入量,代价是增加索引和检索开销,也可能遗漏分散在不同位置的信息。

2.1 RAG 的工作流程

工程中的 RAG 通常包含离线建库和在线问答两条流程,可概括为四步:数据处理 → 检索 → 增强 → 生成。数据处理主要离线完成,后面三步在收到用户问题后运行。

  1. 数据处理阶段:对原始数据清洗处理 → 转化为检索模型可用格式 → 存入对应数据库。
  2. 检索阶段:将用户问题输入检索系统,从数据库检索相关信息。
  3. 增强阶段:对检索到的信息进行处理和增强,便于生成模型理解使用。
  4. 生成阶段:将增强后的信息输入生成模型,生成模型据此生成答案。

2.2 RAG 与微调

开发 LLM 应用时,RAG 和微调(Fine-tuning)解决的问题不同:RAG主要解决"回答时需要哪些外部知识";微调是在特定数据上继续训练,主要调整模型的行为、风格、格式或专项任务能力。两者并不冲突,实际项目可以先用 RAG 提供知识,再用微调让模型更符合业务要求。

对比维度RAG微调
主要目标在回答时引入外部知识调整模型行为、风格、格式或专项能力
知识更新更新知识库和索引即可,适合经常变化的内容更新事实通常需要准备数据并重新训练,不适合频繁变化的知识
外部知识回答时从文档、数据库或网页中检索训练样本会影响模型参数,但不适合充当经常更新的事实库
数据工程依赖文档解析、分块、元数据、索引和检索评估依赖高质量训练样本、数据清洗和训练集设计
来源追溯可以把回答关联到检索片段,但需要应用实现引用很难指出某句话来自哪条训练数据
行为定制仅靠检索不容易稳定改变语气、格式和行为更适合学习固定格式、专业表达和特定任务模式
系统成本需要维护 Embedding、索引、检索服务和知识更新流程需要训练资源;LoRA、QLoRA 等方法可以降低成本
在线延迟比直接生成多出一次检索通常不需要额外检索,但速度仍受模型大小和部署方式影响
降低幻觉正确材料可能减少无依据生成;错误检索也会误导模型专项训练可能改善特定任务,但不能消除幻觉
隐私风险需要控制文档、索引和检索结果的访问权限训练数据可能被模型记忆或泄漏
其他风险检索不到、召回错误或不同材料相互冲突过拟合、能力遗忘和事实更新困难

2.3 RAG 示例项目

RAG 已在问答系统、对话系统、文档摘要、文档生成等领域取得成功。课程后续章节(如 案例1:个人知识库助手)会拆解成熟案例:Datawhale 知识库助手基于课程内容、以初学者容易学习的 LangChain 架构封装不同源大模型 API,帮助用户与 Datawhale 仓库和学习内容流畅对话;"天机"则是面向传统人情世故任务(敬酒、说好话等)的非商业人工智能系统。

三、LangChain 开发框架

ChatGPT 的巨大成功激发开发者使用 OpenAI API 或私有化模型开发 LLM 应用,但完整应用仍需要大量定制开发(API 集成、互动逻辑、数据存储等)。从 2022 年开始,多个开源项目致力于帮助开发者快速构建基于大模型的端到端应用程序或工作流程,其中备受关注的就是 LangChain。

LangChain 框架是一个开源工具,充分利用 LLM 的强大能力开发各种下游应用,目标是为各种 LLM 应用提供通用接口,简化开发流程。它实现了数据感知和环境互动:让语言模型与其他数据来源连接,并允许模型与所处环境互动。

上图每个椭圆形代表 LangChain 的一个模块(如数据收集、预处理模块),每个矩形代表一个数据状态(如原始数据、预处理后的数据),箭头表示数据流方向。在每一步中,LangChain 都能提供对应解决方案。

3.1 LangChain 的核心组件

本课程固定使用LangChain 0.3.0(仓库根目录 requirements.txt 中明确固定为langchain==0.3.0,配套langchain-community==0.3.0langchain-text-splitters==0.3.0langchain-core==0.3.0langchain-openai==0.2.0langchain-chroma==0.1.4),后续主要使用以下模块:

  • 模型与 Prompt:统一不同模型的调用方式,组织输入消息,并解析模型输出。
  • 文档与检索:加载文档、切分文本、生成 Embedding,并连接向量库和 Retriever。
  • 链(Chains)与 LCEL:把 Prompt、模型、Retriever 等组件串成一条流程,后面会用它搭建检索问答链。
  • 消息历史与 Memory:保存对话消息或应用状态,让多轮调用延续上下文。
  • 工具与智能体(Agents):把函数封装成工具,让模型根据任务决定是否调用,并通过AgentExecutor执行多步循环。
  • 回调(Callbacks):获取运行过程事件,用于流式输出、日志记录和调试。

这些模块按需组合,不是每个应用都要全部使用。

3.2 版本说明:本课程使用 0.3.0

LangChain 更新很快,官网目前以LangChain 1.x为主。1.x 将create_agent作为创建 Agent 的标准入口,底层运行在 LangGraph 上;旧版 Chains、Retrievers 和索引接口移入langchain-classic。本仓库固定为langchain==0.3.0,示例按 0.3 的 API 和包结构编写。

用途本课程(0.3.0)LangChain 1.x
编排固定流程LCEL / RunnableLCEL / Runnable 仍在langchain-core
创建 AgentAgentExecutor等旧版接口create_agent,底层使用 LangGraph
旧版 Chains 和 Retrievers位于langchain包中多数移至langchain-classic

运行本教程时请在llm-universe环境中使用课程固定的 0.3.0,不要直接照搬 1.x 文档中的代码;想试 1.x 可另建 conda 或 venv 环境。学习 0.3 时重点是用LCEL组织 Chain、流式输出、检索链、对话历史和基础工具调用——升级到 1.x 后这些思路仍可沿用,但部分导入路径和 API 已改变。

LangChain 的生态还包括:LangChain Core(消息、Prompt、Runnable、工具等基础接口及 LCEL)、LangChain Community 与各厂商集成包(如 OpenAI 集成位于langchain-openai)、LangGraph(面向有状态、长时间运行的 Agent,提供更底层的流程控制和持久化)、LangSmith(跟踪运行过程、评测和调试 LLM 应用)。旧项目中还可能见到LangServeLangChain CLI——LangServe 曾用于把 Runnable 发布为 REST API,现已停止维护,不建议新项目采用。

3.3 仓库中的 LangChain 落地形态

课程仓库不仅停留在概念,还提供了可运行的封装实现,直接印证了"模型与 Prompt""文档与检索"两个模块的用法:

  • 自定义 Embedding 封装:notebook/C3 搭建知识库/zhipuai_embedding.py 继承langchain_core.embeddings.Embeddings实现了ZhipuAIEmbeddings,通过embed_documents按 64 条一批调用智谱embedding-3模型生成向量,embed_query复用embed_documents([text])[0]完成单条查询向量化——这正是"文档与检索"模块中 Embedding 组件的一种接入方式。
  • 自定义 LLM 封装:notebook/C4 构建 RAG 应用/zhipuai_llm.py 继承BaseChatModel实现ZhipuaiLLM,实现_generate(同步调用)、_stream(流式输出,通过run_manager.on_llm_new_token上报新 token)、_llm_type_identifying_params属性,并把 LangChain 消息统一转换为智谱格式(_convert_message_to_dict处理 system/user/assistant 角色映射)。它把model_nametemperaturemax_tokenstimeoutstopmax_retriesapi_key作为可配置字段,回填 token 用量到usage_metadata,是理解"模型与 Prompt"模块抽象机制的最佳样例。

在 notebook/C4 构建 RAG 应用/C4.ipynb 中可以看到典型的 LCEL 检索问答链:先用vectordb.as_retriever(search_kwargs={"k": 3})构造检索器,再用RunnableParallel({"context": retrieval_chain, "input": RunnablePassthrough()}) | prompt | llm | StrOutputParser()把检索结果与用户问题并行送入 Prompt 并生成答案。

四、大模型开发

我们将开发以大语言模型为功能核心、通过大语言模型的强大理解能力和生成能力、结合特殊的数据或业务逻辑来提供独特功能的应用称为大模型开发。开发大模型相关应用,一般通过调用 API 或开源模型实现核心的理解与生成,通过 Prompt Engineering 实现对模型的控制——因此虽然大模型是深度学习领域的集大成之作,大模型开发却更多是一个工程问题

在大模型开发中,我们一般不会大幅度改动模型,而是将大模型作为一个调用工具,通过 Prompt Engineering、数据工程、业务逻辑分解等手段充分发挥模型能力。作为初学者,不需要深研大模型内部原理,更需要掌握使用大模型的实践技巧。

以调用、发挥大模型为核心的大模型开发,与传统的 AI 开发在整体思路上有较大不同。大语言模型的两个核心能力——指令遵循文本生成——提供了复杂业务逻辑的简单平替方案:

  • 传统 AI 开发:将复杂业务逻辑依次拆解,为每个子业务构造训练数据与验证数据、训练优化模型,最后形成完整模型链路。
  • 大模型开发:用 Prompt Engineering 替代子模型的训练调优,通过 Prompt 链路组合实现业务逻辑,用一个通用大模型 + 若干业务 Prompt 解决问题,把模型训练调优转变为更简单、低成本、轻松的 Prompt 设计调优。

评估思路上也有质的差异:

  • 传统 AI 开发:构造训练集、测试集、验证集,依次训练、调优、验证模型效果。
  • 大模型开发:流程更灵活敏捷——从实际业务需求出发构造小批量验证集,设计合理 Prompt 满足验证集效果;然后不断从业务逻辑中收集 Bad Case 加入验证集,针对性优化 Prompt,最终实现较好泛化。

4.1 大模型开发的一般流程

  1. 确定目标:想清楚应用场景、目标用户和核心价值,宜先定最小目标,从 MVP(最小可行性产品)做起再迭代。
  2. 设计功能:列出应用功能及大致实现方法,业务边界越清楚 Prompt 越容易设计;可先实现核心功能再补充上下游流程。
  3. 搭建整体架构:按功能把用户输入、模型、外部数据和输出接起来;是否需要数据库、检索或工具取决于任务。本课程使用 LangChain 的 Chain、Tool 等抽象组织链路。
  4. 准备数据与索引:应用需要私有知识时收集清洗数据;做向量检索可使用 Chroma 这类向量库(常见流程:解析文档 → 分块 → 生成向量 → 保存文本和元数据)。不是所有大模型应用都需要向量数据库。
  5. Prompt Engineering:Prompt 用来说明任务、提供上下文并约束输出格式,可先准备一小批真实业务样例再编写调整初版 Prompt。
  6. 验证迭代:用真实业务样例测试边界情况、记录 Bad Case,据此修改 Prompt、检索或工具链,直到效果基本稳定。
  7. 前后端搭建:核心功能稳定后再开发页面和接口,个人开发者可用 Gradio 或 Streamlit 搭建 Demo。
  8. 体验优化:上线后持续收集用户反馈和 Bad Case 调整系统。

4.2 知识库助手示例

以本课程的知识库助手项目为例,把通用流程落到具体应用:

项目规划与需求分析:目标为构建基于个人知识库的问答助手;核心功能包括导入 Markdown、PDF、TXT 等文档建立知识库索引,根据用户问题检索相关片段再交给大模型生成回答,支持流式显示、知识库选择和历史对话。技术选型为:编排框架 LangChain 0.3;Embedding 模型使用 OpenAI、智谱提供的 Embedding 模型或 M3E;向量库 Chroma;大模型通过课程封装的模型接口调用;界面用 Gradio 或 Streamlit。

实现流程(数据流详见 notebook/C3 搭建知识库/C3.ipynb 与 notebook/C4 构建 RAG 应用/C4.ipynb):

  1. 建立知识库:读取文档,完成解析、清洗和分块。C3 中采用RecursiveCharacterTextSplitter["\n\n", "\n", " ", ""]的优先级递归分割文本,关注chunk_sizechunk_overlap等参数;每个文本块生成 Embedding 后写入 Chroma(Chroma.from_documents),并保存来源、标题等元数据。Chroma 可内存运行也可持久化到本地目录,需要重复使用知识库时应采用持久化存储。课程在data_base/vector_db/chroma/下维护了持久化的 Chroma 数据库(含chroma.sqlite3与向量数据文件)。
  2. 检索并生成回答:收到问题后先生成问题向量,再从 Chroma 取回最相关的若干文本块(C4 中使用vectordb.as_retriever(search_kwargs={"k": 3})返回前 k 个最相似文档),把片段和问题一起放入 Prompt 交给大模型生成回答——这正是前面介绍的"检索—增强—生成"流程。
  3. 处理对话与界面:流式输出让文字逐步显示,历史消息用于多轮对话,两者是不同功能;界面还需处理文档上传、知识库选择和历史记录展示。
  4. 验证和迭代:准备有标准答案或参考材料的问题,分别检查检索结果和最终回答;出现 Bad Case 时先判断问题出在文档解析、分块、检索、Prompt 还是模型,再修改对应环节。
  5. 部署和维护:上线前配置 API 密钥、访问权限和日志,测试异常输入与服务中断处理;上线后继续更新知识库,关注回答质量、延迟和调用成本。

仓库中的 notebook/C4 构建 RAG 应用/streamlit_app.py 及 notebook/附/DW高校行/streamlit_app.py 即提供了用 Streamlit 搭建的对话界面参考实现。

五、开发环境搭建

教程提供了三条环境路径:阿里云服务器(含 SSH 远程连接与 Jupyter 使用)、GitHub Codespaces(选修),以及通用环境配置。有合适开发机可直接跳到环境配置章节。

5.1 阿里云服务器的基本使用

阿里云提供高校计划(面向中国高校在校学生,可领取 300 元无门槛优惠券,合作高校学生再享公共云产品三折优惠,合作高校目前包括清华大学、北京大学、浙江大学、上海交通大学、中国科学技术大学、华南理工大学和香港科技大学(广州);合作高校教师含博士后可享 5 折优惠)以及新用户免费试用(推荐申请云服务器 ECS,每月免费额度 280 元、3 个月有效期,如 e 系列 2 核 2GB 或 2 核 4GB,公网流量每月 80 元免费额度可抵扣 100GB 国内地域流量)。建议在确认优惠券到账后再购买产品。

创建云服务器要点:选择云服务器 ECS 后系统选择Ubuntu;试用时到期释放设置填写"自动释放实例",避免产生费用。创建后通过控制台"远程连接"登录,默认密码为 root;如无法登录,可在控制台"远程连接"旁三点菜单中选择"重置实例密码"。

VSCode 连接远程服务器:安装Remote - SSH插件 → 在实例列表复制公网 IP → 在远程资源管理器添加 SSH 配置(ssh -p port username@ip,port 一般为 22,username 可用 root 或自定义用户名)→ 点击连接进入服务器 → 打开文件夹输入所需目录。

Jupyter Notebook 使用:Jupyter Notebook 是开源的交互式计算环境,名字来源于 Julia、Python 和 R 三种核心编程语言,文件后缀为.ipynb。主要特点包括交互式编程(单元格内立即看到运行结果)、支持超过 40 种语言、支持 Markdown/图像/视频/HTML/LaTeX 等丰富展示、与 Matplotlib/Plotly 等可视化库无缝集成、易于共享、扩展性强、可与 NumPy/Pandas/SciPy 等科学计算工具集成。教程使用 Jupyter Notebook 编写和调试代码,在 VSCode 中需要安装微软 Jupyter 扩展并选择 Python 内核。常用快捷键:Shift + Enter运行单元格并跳转下一个、Ctrl + Enter运行不跳转、A/B上下插入单元格、D两次删除、Y/M转换代码/Markdown 单元格、Ctrl + Shift + P打开命令面板等。

5.2 GitHub Codespaces(选修)

首先确定是否具有可以流畅访问 GitHub 的网络环境,否则仍建议使用阿里云。

代码空间是托管在云中的开发环境,可通过"配置即代码"为项目创建可重复的 codespace 配置。创建流程:登录 GitHub → 进入 Your repositories → 新建存储库(建议勾选 Add a README file 并选择 Private,因为课程中会用到 API key,注意保护隐私)→ 点击 Code 选择 Codespaces → Create codespace on main → 等待初始化后按 VSCode 方式操作。由于 GitHub 服务器在国外,无需配置国内镜像源;第一次安装完所有配置后需重启 codespace。也可在本地 VSCode 安装 codespace 插件,通过远程资源管理器连接云端 codespace(网页关闭后仍可从存储库重新进入,可在账户设置 Plans and usage 查看免费额度,建议调整挂起时间避免浪费额度)。

5.3 环境配置

环境配置分为两部分:基础环境配置(适用于初学者或新的服务器环境,含 SSH key 与 conda 安装)与通用环境配置(适用于有经验用户、已有环境的本地安装或独立环境如 Codespace)。

基础环境配置(git 和 conda)

# 1. 生成 ssh key ssh-keygen -t rsa -C "youremail@example.com" # 2. 查看公钥并添加到 GitHub(Settings -> SSH and GPG keys -> New SSH key) cat ~/.ssh/id_rsa.pub # 3. Linux 安装 miniconda mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3 rm -rf ~/miniconda3/miniconda.sh # 4. 初始化(macOS 使用对应架构安装包,Windows 下载 .exe 后按指引安装) ~/miniconda3/bin/conda init bash ~/miniconda3/bin/conda init zsh # 5. 新建终端验证 conda --version

通用环境配置

# 1. 新建虚拟环境(Python 3.10) conda create -n llm-universe python=3.10 # 2. 激活虚拟环境 conda activate llm-universe # 3. 克隆项目仓库 git clone git@gitcode.com:GitHub_Trending/ll/llm-universe.git # 4. 进入项目目录 cd llm-universe # 5. 安装依赖 pip install -r requirements.txt # 国内镜像源加速安装(镜像不稳定时可按需切换) pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

常用国内镜像源:清华https://pypi.tuna.tsinghua.edu.cn/simple/、阿里云http://mirrors.aliyun.com/pypi/simple/、中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/、华中科技大学http://pypi.hustunique.com/simple/、上海交通大学https://mirror.sjtu.edu.cn/pypi/web/simple/、豆瓣http://pypi.douban.com/simple

VSCode 配置 Python 环境:安装 Python 插件(提供代码补全与环境识别)与 Jupyter 插件;打开 Jupyter Notebook 后点击右上角选择 Python 解释器,从环境列表中选择llm-universe,即可在 Notebook 中使用该环境开发。仓库根目录 requirements.txt 中的依赖(langchain 全家桶、python-dotenvspark-ai-pythonzhipuaiqianfanunstructuredpymupdfmarkdownstreamlitjiebapydantic)与课程各章节一一对应,安装完成后即可跟随 C2~C5 章节逐步搭建完整应用。

结语

本章从 LLM 的定义、发展与主流模型格局出发,建立了对大模型能力边界(涌现、基座、对话入口、工具调用)的认识,随后通过 RAG 解决了"外部知识与事实时效"问题,再借助 LangChain 0.3 的模块化抽象把"检索—增强—生成"编排成可运行的链路,最终落回大模型开发的工程方法论与一套完整的开发环境。接下来的章节将在此基础上深入知识库搭建(Embedding 与向量库)、RAG 应用构建(检索问答链)与系统评估优化,逐步把本章的概念变成可交付的应用。

【免费下载链接】llm-universe本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/项目地址: https://gitcode.com/GitHub_Trending/ll/llm-universe

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询