)
大模型技术栈全景解析从分词、分布式训练到 PEFT 与 RAG/Agent 的落地路径以 Langchain-Chatchat 为例【免费下载链接】Langchain-ChatchatLangchain-Chatchat原Langchain-ChatGLM基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat本篇技术指南围绕“大模型技术栈-算法与原理”这一知识框架展开系统梳理从 Tokenizer、位置编码、注意力机制、分布式训练、PEFT 参数高效微调、模型压缩剪枝/量化/蒸馏、推理优化、Embedding 模型分类学、上下文扩展到 Prompt Engineering 与 RAG/Agent 应用共九大主题。读完后你将获得一张完整的 LLM 技术栈地图并能结合 Langchain-Chatchat 仓库中的 Embedding 配置、混合检索器、Agent 注册表等真实源码理解这些算法在 RAG 应用工程中如何被具体使用。一、Tokenizer文本进入模型的入口大模型处理的第一步是把文本切分为 Token。按粒度划分Tokenization 方法可分为三类Word-level词级以完整单词为单元词表大、对未登录词OOV不友好Char-level字符级以字符为单元无 OOV 问题但序列过长Subword-level子词级兼顾两者是当前主流主要包括BPEByte Pair Encoding统计语料中相邻 token 对的共现频率迭代合并最高频对逐步扩大词表WordPiece与 BPE 思路相近但每次选择能最大似然增益语言的子词UnigramLM从大词表出发迭代删除对似然贡献最小的词元SentencePiece在字符序列上运行 BPE/Unigram支持多语言且不需要预分词ByteBPE对字节序列做 BPE从根源上消除 OOV被 LLaMA、ChatGLM 等模型广泛采用。Tokenization 方案直接影响词表大小、序列长度与显存占用是选择开源模型时首先要确认的底层细节之一。二、位置编码让自注意力“知道顺序”自注意力本身是置换不变的位置编码用于把词序信息注入模型。按建模方式可分为绝对位置编码RoPE旋转位置编码对 Q/K 向量按位置做旋转变换使注意力得分天然包含相对位置信息是 LLaMA、Qwen 等主流 LLM 的默认方案ALiBi不给输入加编码而是在注意力打分矩阵上叠加与距离成正比的线性偏置让模型“天然”偏好近处 token同时对训练长度外的外推更稳健。相对位置编码Transformer-XL用可学习偏置显式建模相对距离T5/TUPE在 T5 中同时引入绝对与相对位置信息DeBERTa通过 disentangled attention 显式区分 token 之间的内容关系与位置关系。其他还包括 sinusoidal 绝对编码等经典方案属于“其他位置编码”的范畴。位置编码的选择与后文“上下文扩展”一节强相关——扩展上下文长度本质上就是在修改位置编码的外推行为。三、注意力机制及其效率改进标准 Scaled Dot-Product Attention 的时间/显存复杂度随序列长度平方增长改进方向主要有稀疏注意力通过滑窗、块稀疏等模式限制每个 token 可见的范围把 O(n²) 降到近似 O(n)FlashAttention不改变注意力数学形式而是通过 IO 感知分块tiling与 kernel 融合把 KV 中间结果留在 SRAM 中完成计算显著降低 HBM 访问从而同时加速前向/反向并节省显存。它是本文“推理优化”章节中 PagedAttention 等技术的常客搭档。四、分布式训练数据并行与模型并行4.1 数据并行DDP / FSDP / ZeRODDPDistributed Data Parallel中每张 GPU 持有完整模型副本反向后对梯度做 AllReduceFSDPFully Sharded Data Parallel则把参数、梯度、优化器状态全部分片。两者背后的通用思想由ZeROZero Redundancy Optimizer系统化表达按“分片什么”分为三个级别此部分完整继承原文档的通信流程描述Model State模型状态分片ZeRO-1Optimizer State将 optimizer state 切成若干份每块 GPU 各自维护一份。每块 GPU 上仍存一份完整参数 W做完一轮 forward 和 backward 后各得一份梯度对梯度做一次AllReducereduce-scatter all-gather得到完整梯度 G由于每块 GPU 只保管部分 optimizer states只能更新对应的 W随后对 W 做一次All-Gather。ZeRO-2Gradient Optimizer每个 GPU 维护一块梯度。每块 GPU 存完整参数 Wforward/backward 后算得一份完整梯度对梯度做一次Reduce-Scatter保证每个 GPU 上所持的那块梯度即为聚合梯度每块 GPU 用自己的 O 和 G 更新相应的 W更新完毕后每块 GPU 各持有一块更新完的 W再对 W 做一次All-Gather将别的 GPU 算好的 W 同步过来。ZeRO-3Parameter Gradient Optimizer每个 GPU 只维护一块模型状态。forward 时对 W 做All-Gather取回分布在别处的 W 拼成完整 Wforward 完立刻抛弃非自己维护的部分backward 时同样先 All-Gather 完整 Wbackward 完立刻释放得到完整梯度 G 后做Reduce-Scatter只聚合自己维护的那部分聚合完立即丢弃其余 G最后用自己维护的 O 和 G 更新 W——因为只维护部分 W无需再对 W 做 AllReduce。一句话记忆级别越高分片越彻底显存越省但通信时机与次数越复杂ZeRO-1/2/3 分别对应“切优化器/切梯度/切参数”的递进。Residual State激活与临时缓冲的分片Partitioned Activation Checkpointingactivation每块 GPU 只维护部分 activation需要时再从别处聚合。注意 activation 对显存的占用一般远高于模型本身通信量也巨大。Constant Size Buffertemporary buffer一方面提升带宽利用率——GPU 数量上升时通信次数增多、单次通信量下降数据切片太小会吃不满带宽buffer 起到积攒数据到一定大小再通信的作用另一方面使存储大小可控——每次通信前积攒的量是常量便于预估训练的存储消耗与通信时间。Memory Defragmentationunusable fragment对碎片化存储重新整合出连续空间防止“总量够但连续空间不够”导致的分配失败。4.2 Offload把模型状态搬下 GPUZeRO-Offload利用 forward/backward 计算密集、update 计算稀疏的特性把与 W(fp16)、activation 相关的部分全部留在 GPU把 update 相关的 W(fp32)、optimizer states(fp32)、gradients(fp16) 放进 CPU。其内部又分为Offload Strategy如何划分 GPU/CPU 承载哪些模型状态与Offload Schedule如何调度计算与通信两部分。ZeRO-Infinity进一步把 offload 与 ZeRO 的结合从 ZeRO-2 延伸到ZeRO-3解决模型参数受限于单张 GPU 内存的问题同时解决 ZeRO-Offload 在小 batch size 下效率低的问题并在 CPU 内存之外进一步利用NVMe存储空间。4.3 模型并行Tensor-wise parallelism把一个层内的权重矩阵切到多卡代表系统是Megatron-LM流水线并行Pipeline Parallelism按层把模型切成多个 stage微批次流水执行代表工作有GPipe微批流水 激活全存与PipeDream用 1F1B/CF 调度解决气泡与显存矛盾Layer-wise parallelism按层粒度做更细的放置Sequence parallelism在序列维度上切分常与张量并行组合使用。五、PEFT参数高效微调PEFT 的目标是在冻结主干的前提下用极少可训练参数适配下游任务。按“参数放在哪里”可分为 LoRA 类、Prompt 类、Adapter 类及其他。5.1 LoRA 类LoRA核心假设是权重更新矩阵 ΔW 是低秩的用两个低秩矩阵 A、B 的乘积替代 ΔW即 W W BA可训练参数量从 d×d 降到 d×(rr)。QLoRA在 4-bit NormalFloatNF4量化与双量化的主干上做 LoRA 训练并引入分页优化器paged optimizer防止梯度检查点导致的内存峰值使单卡微调大模型成为可能。AdaLoRA用奇异值分解 P·Γ·Q 代替 AB根据 loss 梯度评估 Γ 对角线值做重要性评分动态把参数预算分配给权重矩阵——重要增量矩阵给高秩以捕捉任务细节不重要矩阵降秩以防过拟合、省算力并通过在训练损失中加惩罚项规范 P 与 Q 的正交性避免显式 SVD 的高计算成本、稳定训练。IA3不改变矩阵结构而是学习向量对 attention 与 feedforward 模块的激活做缩放注入位置与 LoRA 相同但参数更少。ReLoRA针对“多轮 LoRA 叠加训练”场景在合并与重启期间对优化器做部分重置重启后的预热阶段将学习率设为 0并采用锯齿状学习率调度。出发点在于重启一个已完成的 LoRA 过程需要对优化器精细调整否则模型重启后会立即与之前的优化方向分歧。5.2 Prompt 类Prompt Tuning在输入层末尾加一段可学习的 virtual token embeddingP-Tuning在输入层加 embedding 之后接一个 LSTM 或 MLP 做平滑缓解小模型上 prompt 训练不稳定Prefix Tuning在每一层Transformer 的 attention 键值前加入可学习 prefix经 MLP 映射表达能力更强、训练更稳P-Tuning v2在每一层都加 embedding 段证明对小模型同样有效适用范围最广。5.3 Adapter 类Adapter Tuning在每个 Transformer 层插入两个 Adapter 模块多头注意力投影之后、第二个 feed-forward 之后冻结主干只训练 AdapterAdapter Fusion两阶段方法——先在多任务上各自训练 Adapter知识提取再冻结主干与各任务 Adapter引入 Fusion 参数学习如何组合多个 Adapter 的知识以参数门控方式提升目标任务表现Adapter Drop训练期随机丢弃 Adapter类似 dropout使模型学会“无 Adapter 也能工作”从而在不影响任务性能的前提下动态移除 Adapter减少参数量、提升训练与推理效率。5.4 其他与混合式BitFit最稀疏的微调——只更新 bias或部分 bias参数MAM AdapterFFN 层中并行 Adapter 与软提示soft prompt的组合兼顾两者UniPELT用统一门控融合三种 PEFT线性层实现门控由 GP 控制 Prefix-tuning 开关、GL 控制 LoRA 开关、GA 控制 Adapter 开关一套参数适配多种方法。六、模型压缩剪枝、量化与蒸馏6.1 剪枝OBDOptimal Brain Damage利用二阶导数信息度量参数显著性剪掉影响小的参数以降低复杂度、提高泛化OBSOptimal Brain SurgeonOBD 只看 Hessian 对角线元素OBS 利用 Hessian 的全局信息从而捕获参数之间的相互影响OBCOptimal Brain Compression不一次性对整个网络剪枝而是分层做剪枝或量化逐层最小化整体输出变化ExactOBS参数更新与代价评估不需要完整 Hessian仅用与待剪参数所在行相关的 d_col×d_col 子矩阵显著降低开销。6.2 量化GPTQ对 OBC 的改进取消逐参数贪心采用固定位置优化一次前向中同时评估整行权重更新配合分组量化实现并行加速SpQR核心思想是参数重要度极度不均衡——约 1% 的参数可能主导量化损失保护它们即可保住大部分性能。做法用一小批输入 X 计算每个参数 w_ij 量化前后的误差 s_ij取 top 1% 作为重要参数用稀疏矩阵单独保存并保持 fp16同时观察到重要参数往往按行或列聚集因此采用更小的 group size8 或 16而非 GPTQ 常用的 128AWQ在 SmoothQuant 基础上提出针对channel 维度找重要通道依据是输入 X 与参数 W 的绝对值大小寻找缩放比例 s量化前 W 乘以 s、计算时 X 除以 s 以减小误差s 分解为 S_x 与 S_w 两个值相乘约束是 W 越大 s 越小、X 越大 s 越大即把动态范围从激活“搬”到权重侧OBC同前OBC 也是逐层压缩量化的理论源头GPTQ 即建立在其“逐层最小化输出误差”的框架上SmoothQuant大模型下单个激活值变化范围大、难量化而权重变化范围小、易量化。引入超参 α 把激活的动态范围按列缩放转移给权重均衡二者难度变换后再按 per-token 或 per-tensor 方式量化LLM.int8()混合精度分解——把包含 Emergent Features离群值的少数维度分离出来做高精度fp16矩阵乘其余部分 int8 量化兼顾速度与精度ZeroQuant权重分组量化、激活按 token 量化开发了高度优化的推理后端消除量化/反量化算子的开销在现代 GPU 上实现 INT8 Tensor 内核的延迟加速并提出面向 INT4/INT8 混合精度的逐层知识蒸馏方法LKD逐层蒸馏、迭代次数极少甚至不访问原始训练数据。量化的分类学工程选型时的常用坐标轴维度类别含义零点对称量化 vs 非对称量化量化区间是否均衡、零点是否为 0缩放因子静态量化 vs 动态量化静态量化使用前有“calibrate”过程缩放因子随校准数据分布确定动态量化则按实际输入计算对象Weights 量化 vs Activation 量化feature map 即每层网络的输入 tensor对其量化就是常说的激活量化粒度per-token / per-tensor / per-channel / per-groupper-token激活中每个 token 对应的 tensor 共享量化系数per-tensor整个 tensor 一套 scale/zero-pointper-channel权重每个输出通道一套实践中 feature 仍整体共用 scale/zero-point但每个 kernel 单独统计一组注意是“每个 kernel”而非 kernel 的每个 channelgroup-wise多个 channel 合并为一组共用一组量化系数6.3 蒸馏layer reduction以层数压缩为代表的知识蒸馏让小模型模仿大模型或深层的中间表征与输出常用于推理成本约束下的模型瘦身。七、推理优化吞吐、延迟与调度围绕线上服务指标推理侧优化可以归纳为六个方向完整继承原文档的清单吞吐量与显存优化PagedAttention把 KV cache 分页管理消除碎片是 vLLM 的核心机制、Quantized KV CacheKV 用低比特存储省显存、MQA/GQA多查询/分组查询注意力压缩 KV 头数、FlashAttention算子融合把多个小算子合并成单 kernel减少访存与启动开销延迟优化No Padding——变长 batch 内不做 padding避免为无效 token 付费调度优化Dynamic Batching动态攒批、Async Serving异步服务解耦、Inflight Batching把不同进度、不同长度、甚至不同请求的序列动态拼进同一 batch 一起解码量化复用第六节的推理量化技术W8A8、W4 等模型并行Tensor Parallelism将单层权重横向切分到多卡请求优化传输层协议选型如RPC / gRPC / HTTPgRPC 的长连接与流式能力更贴合 LLM 流式输出场景。八、Embedding 模型检索向量的分类学RAG 的召回质量很大程度取决于 embedding 模型。原文档给出的分类学与代表模型如下。8.1 三条分类轴对称 vs 非对称 vs 混合对称即 query:question、text:text 两侧同质代表Sentence-T5非对称即 query:text 检索代表GTR混合模型用指令区分任务类型代表Instructor训练范式“对比学习对比学习”两阶段都是对比代表 Sentence-T5、GTR、E5与“自编码对比学习”预训练阶段做 masked 重建类自编码代表bge、RetroMAE基座结构BERT-based双向 encoder与 LLM-baseddecoder-only如PromptEOLCSELLM路线。8.2 BERT 句向量CLS 与 mean poolingBERT-CLS取 [CLS] 位向量与 Bert-meantoken 向量平均池化是基于双向 encoder-decoder/encoder Transformer 的最基础句向量取法后续大量方法可视为对“怎么取向量、怎么训练”的改进。8.3 T5 系Sentence-T5T5-encoder mean pooling采用无标注对比学习 有标注对比学习两阶段训练Jina以 T5 为基本架构数据侧做去重、语言过滤、一致性过滤采用并行化方法在多个数据集上训练但设有一个关键约束——每个训练 batch 仅包含来自单一数据集的样本训练使用三元组anchor, entailment, contrastiveGTR与 Sentence-T5 结构相同但把 finetune 数据集从 NLI 换成检索相关数据并利用 RocketQA 获取 hard negative把对比学习改为双向对比学习——一个 batch 内有两个对比损失一个以 query 为中心构建正负样本另一个以 positive document 为中心构建正负样本。8.4 SimCSE 及其衍生无监督 SimCSE对同一句话在训练时使用两次不同的 dropout mask把两次编码结果视为互为正例的相似句对“不相似句对”由 batch 内其余句子采样得到有监督 SimCSE用 NLI自然语言推理判断 entailment/contradiction/neutral数据集做对比学习entailment 句对作正例contradiction 句对作 hard negative衍生算法ESimCSE随机重复句中的某些单词构造正样本缓解模型偏好“相同或相似长度的句子更相近”的偏差并维护一个动量编码器队列重用前一个 mini-batch 的嵌入扩充负例CoSENT在正负样本基础上基于 circle loss 进一步引入排序监督SNCSE针对模型“无法区分文本相似度与语义相似度、偏向表面相似而忽略语义差异”的问题显式添加否定词生成软负样本配合双向边际损失EASE强调实体在句向量中的重要性数据层面用正、负实体替代正负样本CLAIF针对训练中缺乏细粒度监督未考虑正样本对之间的相似度差异的问题引入来自 LLM 的 AI 反馈构造相似度不同的样本对并给出细粒度相似度分数作为监督信号。8.5 指令化与前缀化Instructor / E5 / BGEInstructor以 GTR 为基底经进一步 instruction tuning 得到模型输入改为Task Instruction [X]形式[X] 为具体文本用自然语言指令控制 embedding 行为实现单模型覆盖对称/非对称多种任务E5提出预训练数据过滤方案 consistency-based filter以 BERT 为基座在输入侧加 Prefixquery:/paragraph:让模型感知文本类型思想与 Instructor 的 instruction 类似BGE基于 RetroMAE 方案finetune 阶段针对检索任务在 query 侧加入特定 Prefix“Represent this sentence for searching relevant passages:”。Langchain-Chatchat 中的落地项目默认 Embedding 模型即为 BGE 系列见 settings.py 中的DEFAULT_EMBEDDING_MODEL: str bge-m3各模型平台的可用嵌入模型则通过embed_models字段声明例如 settings.py 中列出的千问text-embedding-v1、千帆Embedding-V1与 OpenAI 的text-embedding-3-small/large。此外仓库还提供了 LocalAIEmbeddings通过 OpenAI 兼容接口对接本地部署的 embedding 服务默认max_retries3、批量chunk_size1000支持私有化场景下的向量生成。8.6 RetroMAE 与 Prompt 路线RetroMAE由 BERT 基底 Encoder 加一个单层 Decoder 组成。Encoder 端以 30% 比例 mask 原文取最后一层 [CLS] 位置向量作为句向量Decoder 端以 50% 比例 mask 原文结合 Encoder 句向量做重建——自编码预训练让句向量同时承载内容与语义信息PromptBERT以 BERT 为基底选择合适 prompt“This sentence: [X] means [MASK]”取最后一层 [MASK] 位置向量作为句向量不经额外 finetune 即可取得很好的效果PromptEOL CSE LLM语言模型使用 OPT 与 LLaMA构造新 prompt “This sentence: [X] means in one word:”以下一个生成 token 的隐层状态作为 text embedding并引入 in-context learning为每个语言模型找到最佳 demonstration 引导其生成符合要求的 embedding还可进一步用对比学习 finetune 提升性能。8.7 非对称检索的工程形态混合检索非对称 query:text 场景下纯向量检索常受“词汇不匹配”困扰工程上常用“向量 关键词”的混合检索。Langchain-Chatchat的 EnsembleRetrieverService 即是一个具体实现用 jieba 分词构建 BM25Retriever同时从向量库构造similarity_score_threshold模式的检索器以weights[0.5, 0.5]的EnsembleRetriever融合两路召回——这正是上述非对称检索理论在 RAG 系统中的典型落法。九、上下文扩展长上下文是 LLM 能力扩展的重要方向主要技术路线ALiBi线性距离偏置本身对长度外推较友好log(n) 注意力缩放对注意力 logits 按 log(n) 缩放缓解长序列下注意力分布退化Window attention局部窗口注意力降低计算量、配合全局注意力使用RoPE 改进按训练后扩展的方式分三类Interpolation插值Position Interpolation即在位置 ID 上做线性插值把长序列“压缩”回训练长度范围内Extrapolation外推NTK 感知缩放 RoPE修改 RoPE 的 base 频率、Dynamic 缩放 RoPE随序列长度动态调整缩放、以及 consistent 的 Dynamically Scaled RoPE混合Rectified RoPECRoPE结合插值与外推的优点。NBCENaive Bayes-based Context Extension只需修改解码函数中的 logits 构建方式具备即插即用、模型无关、无须微调、线性效率、实现简单的优点其主要缺点是无序性——无法识别 context 的输入顺序在续写故事等对顺序敏感的场景中表现可能欠佳。十、Prompt Engineering把推理过程写进提示原文档梳理了从单链推理到图搜索的提示技术谱系Chain of Thought思维链标志性触发语 “Lets think step by step”引导模型显式输出推导步骤Self-ConsistencyFew-shot若干带推导步骤的相似例子 {question}多次采样不同推理路径后投票提高数值/逻辑题正确率Auto-CoT自动为问题生成多条思维链样例再执行Few-shot {question} Chain-of-Thought 推导步骤样例 {问题} “给出具体思考过程”Generation Knowledge以“事实 知识”的方式组织样例最后提问并要求同时给出解释与答案Automatic Prompt EngineerAPE使用优化后的指令如 “Lets work this out in a step by step way to be sure we have the right answer”OPROOptimization by PROmpting优化提示本身。总体架构先输入 meta-prompt对优化任务的自然语言描述 few-shot 例子LLM 生成一个 solution候选指令如 “Take a deep breath and think step by step.”solution 由 objective function 评估打分(solution, score) 组合追加回 meta-prompt循环多轮后取分数最高的 solution。meta-prompt 分两部分问题描述“generate a new instruction that achieves a higher accuracy”与优化轨迹——即 (solution, score) 对组成的优化“日志”。注意轨迹不是按时间顺序排列而是按打分升序排列越靠后的样例对输出影响越大把高分 solution 排在后面有利于 LLM 向其学习Tree of ThoughtToT把推理状态建模为树两类核心提示模板——“给定当前的推理状态{state_text}生成 k 条连贯的思想来实现推理过程”扩展与“鉴于当前的推理状态{state_text}根据其实现 {initial_prompt} 的潜力悲观地将其值评估为 0 到 1 之间的浮点数”评估再利用树的遍历算法BFS、DFS、Monte-Carlo、Beam、A*搜索最佳答案Graph of ThoughtGoT将 LLM 生成的信息建模为图——节点是“LLM 的思想”边是思想间的依赖关系从而可以组合、归并、提炼任意 LLM 思想。其出发点人类解决问题时并非只走链式思维CoT或尝试多条链ToT而是在脑中构建复杂的思维网络——沿一条链推理、回溯、再尝试新方向并把之前链的优点保留、缺点剔除与当前探索方向结合生成新的解决方案。在 Langchain-Chatchat 中的对应实践平台 Agent 的系统提示词中即内置了“step-by-step”式的任务分解引导例如 settings.py 中 platform-knowledge-mode 的 SYSTEM_PROMPT 要求模型“use tools step-by-step to accomplish a given task, with each tool use informed by the result of the previous tool use”与 Self-Consistency / 分步执行的思想一脉相承。十一、应用层RAG 与 Agent技术栈文档把RAG与Agent列为大模型应用的两大落地方向而 Langchain-Chatchat 正是这两个方向的工程化实现可以逐一对应前文各节RAG 链路知识库摘要kb_summary 的 chunk 级摘要生成、向量/混合检索第八节的 EnsembleRetrieverService、中文友好的文本切分text_splitter 目录下的多种中文 splitter共同把“embedding 模型 检索器”组装为可运行的检索增强问答Agent 链路agents_registry.py 中的agents_registry工厂按agent_type分发构建 glm3 / qwen / platform-agent / structured-chat-agent / tool-calling 等多种 Agent 执行器配合 search_local_knowledgebase 等工具让模型以工具调用方式查询知识库——其默认参数top_k3、score_threshold2.0及“有结果/无结果”两套结论提示词见 settings.py 的ToolSettings.search_local_knowledgebase正是 Prompt Engineering 思想在工具提示词上的直接应用。十二、小结这份“大模型技术栈-算法与原理”知识框架沿“基础算法Tokenizer/位置编码/注意力→ 训练分布式并行/PEFT→ 压缩剪枝/量化/蒸馏→ 推理调度/分页/并行→ 表征Embedding 分类学→ 扩展长上下文/提示工程→ 应用RAG/Agent”的纵轴构成了理解 LLM 系统的一整张地图。结合 Langchain-Chatchat 仓库可以看到地图上的每个节点都不是孤立的算法名词bge-m3 的默认嵌入配置、BM25向量 0.5/0.5 的混合检索、step-by-step 的系统提示词都是相应理论在开源 RAG/Agent 工程中的具体实例。沿着 知识库样例 与仓库源码对照阅读是快速建立“算法—实现”映射的高效路径。【免费下载链接】Langchain-ChatchatLangchain-Chatchat原Langchain-ChatGLM基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考