LangChain、ReAct、LangGraph、RAG与大模型基础问答指南
图 1:LangChain 篇 - 快速入门与底层逻辑正文
本文讨论了 LangChain 的快速入门与底层逻辑,涵盖其概述、框架组成、核心特性和应用场景等内容。
一、LangChain 概述
1. LangChain 简介
LangChain 是一个开源的 Python AI 应用开发框架,它提供了构建基于大模型的 AI 应用所需的模块和工具。通过 LangChain,开发者可以轻松地与大型语言模型(LLM)集成,完成文本生成、问答、翻译、对话等任务。LangChain 降低了 AI 应用开发的门槛,让任何人都可以基于 LLM 构建属于自己的创意应用。
2. LangChain 特性
LLM 和提示(Prompt):LangChain 对所有 LLM 大模型进行了 API 抽象,统一了大模型访问 API,同时提供了 Prompt 提示模板管理机制。
链(Chain):Langchain 对一些常见的场景封装了一些现成的模块,例如:基于上下文信息的问答系统,自然语言生成 SQL 查询等等,因为实现这些任务的过程就像工作流一样,一步一步的执行,所以叫链(chain)。
LCEL:LangChain Expression Language(LCEL),langchain 新版本的核心特性,用于解决工作流编排问题,通过 LCEL 表达式,我们可以灵活的自定义 AI 任务处理流程,也就是灵活自定义链(Chain)。
数据增强生成(RAG):因为大模型(LLM)不了解新的信息,无法回答新的问题,所以我们可以将新的信息导入到 LLM,用于增强 LLM 生成内容的质量,这种模式叫做 RAG 模式(Retrieval Augmented Generation)。
图 2:ReAct 模式正文
LLM Agent 第一文,发表于 2022 年 10 月,现在看起来特别简单,但当时 ChatGPT 还没有面世,能够提出让 LLM 学会使用工具,具有一定的开创性。
ReAct 原理
没有 ReAct 之前,Reasoning 和 Act 是分别开来的。
举个例子,你让孩子帮忙去厨房里拿一个瓶胡椒粉,告诉 ta 一步一步来(COT 提示词策略):
先看看台面上有没有
再拉开灶台底下抽屉里看看
再打开油烟机左边吊柜里看看
没有 ReAct 的情况就是:不管在第几步找到胡椒粉,ta 都会把这几个地方都看看(Action)。
有 ReAct 的情况是:
Action1:先看看台面上有没有 → Observation1:台面上没有胡椒粉,执行下一步
Action2:再拉开灶台底下抽屉里看看 → Observation2:抽屉里有胡椒粉
Action3:把胡椒粉拿出来
是的,就是这么简单,人类智能的一项能力就是 Actions with verbal reasoning,即每次执行行动后都有一个 “碎碎念 (Observation)”:我现在做了吗?是不是已经达到了目的。
这相当于让 Agent 能够维持短期记忆。
ReAct 实现 (通过代码理解原理)
在看过几个人的开源代码后,拿出一个最容易被产品经理理解的代码来解。
图 3:LangGraph 原理正文
LangGraph 以图的方式构建语言代理。
官方文档地址:https://langchain-ai.github.io/langgraph/
LangGraph 是一个用于构建具有 LLMs 的有状态、多角色应用程序的库,于创建代理和多代理工作流。与其他 LLM 框架相比,它提供了以下核心优势:循环、可控性和持久性。
LangGraph 允许您定义涉及循环的流程,这对于大多数代理架构至关重要。作为一种非常底层的框架,它提供了对应用程序的流程和状态的精细控制,这对创建可靠的代理至关重要。此外,LangGraph 包含内置的持久性,可以实现高级的 “人机交互” 和内存功能。
LangGraph 是 LangChain 的高级库,为大型语言模型(LLM)带来循环计算力。它超越了 LangChain 的线性工作流,通过循环支持复杂的任务处理。
状态:维护计算过程中的上下文,实现基于累积数据的动态决策。
节点:代表计算步骤,执行特定任务,可定制以适应不同工作流。
边:连接节点,定义计算流程,支持条件逻辑,实现复杂工作流。
langgraph 主要功能
循环和分支:在您的应用程序中实现循环和条件语句。
持久性:在图中的每个步骤之后自动保存状态。在任何时候暂停和恢复图执行以支持错误恢复、“人机交互” 工作流、时间旅行等。
“人机交互”:中断图执行以批准或编辑代理计划的下一个动作。
流支持:在每个节点产生输出时流式传输输出(包括令牌流式传输)。
图 4:RAG vs 微调正文
优化技术的差异
RAG 类似于为模型提供教科书,使其能够根据特定查询检索信息。适用于模型需要回答特定查询或处理特定信息检索任务的场景。微调则类似于让学生通过广泛学习来内化知识,适用于模型需要复制特定结构、风格或格式的情况。
适用场景
RAG:适用于需要回答具体查询或特定信息检索任务的场景。
微调:适用于强调基础模型中的现有知识,为模型提供复杂指令的场景。
互补性
RAG 和微调不是相互排斥的,而是可以相互补充,从不同层面增强模型的能力。在某些情况下,结合这两种技术可以实现最佳的模型性能。
原始 RAG、高级 RAG 和模块化 RAG
原始 RAG 是最早的研究范式,主要包括以下几个步骤:
建立索引:这一过程通常在离线状态下进行,包括数据清理、提取,将不同文件格式(如 PDF、HTML、Word、Markdown 等)转换为纯文本,然后进行文本分块,并创建索引。
检索:使用相同的编码模型将用户输入转换为向量,计算问题嵌入和文档嵌入之间的相似度,从向量数据库中检索最相关的文档块。
图 5:入门大模型必知的 100 个基础问题正文
什么是大模型?答案:大模型是指具有数十亿或数千亿参数的深度学习模型,通常是通过大规模的预训练数据进行训练的语言模型,如 GPT、BERT 等。这些模型通过自监督学习来理解和生成自然语言。
大模型的工作原理是什么?答案:大模型通过多层神经网络进行深度学习,使用自注意力机制(Transformer 架构)来捕捉输入文本的上下文关系,并生成相应的输出。
Transformer 模型的核心组件是什么?答案:核心组件包括自注意力机制(Self-Attention)、多头注意力(Multi-Head Attention)、前馈神经网络(Feed-Forward Neural Network)、层归一化(Layer Normalization)。
自注意力机制的公式是什么?答案:自注意力的公式为:
其中,Q(查询)、K(键)、V(值)是输入矩阵,$d_k$ 是键的维度。
大模型为什么需要预训练?答案:预训练使得模型可以在大量无标签数据上学习通用的语言表示,减少对标注数据的依赖,并为下游任务提供良好的初始化。
什么是微调(Fine-tuning)?答案:微调是将预训练模型在特定任务的数据上进行进一步训练,使得模型能够更好地适应任务。
大模型的训练流程是怎样的?答案:训练流程包括:数据准备、模型初始化、前向传播、损失计算、反向传播、参数更新。
大模型如何处理长文本输入?答案:通过分块(chunking)、长短期记忆机制(LSTM)、递归神经网络(RNN)扩展机制,或更先进的长文处理 Transformer 结构如 Longformer 等。
大模型的输入输出如何编码?(注:图中该问题未显示完整答案)
需要我把这些内容整理成一份可直接复制的 Markdown 文档吗?
(注:文档部分内容可能由 AI 生成)