LangChain框架

核心目标:简化的将 LLM 、知识库、外部工具 和计算资源连接起来,构建基于大语言模型(LLM)的更强大、更灵活的应用。

你可以把它想象成一个"胶水"和"工具箱"。

通过 串联步骤、用代理 实现决策、靠记忆 维持对话、借外部工具 扩展能力、以标准化的接口兼容多平台。让开发者快速构建复杂应用。

一、核心功能

1、连接知识库:将非结构化数据(如文档、网页)转换为向量索引,实现语义搜索(如 FAISS、Chroma 向量数据库)。

2、模型连接:支持 OpenAI、Hugging Face、Azure 等多厂商 LLM,统一调用接口。

3、检索+生成:检索文档内容+调用LLM生成回答,实现智能问答。

4、历史对话管理:能基于历史对话上下文生成连贯回复。

5、工具调用:如查询天气、发送邮件(调用外部 API)。

6、链(Chains):将多个 LLM 调用、组件或工具调用串联,流程编排,多个任务步骤链式调用,形成工作流(如 "检索→摘要→问答")。

7、代理(Agents):允许 LLM 根据输入自主决定调用哪些工具(如搜索引擎、计算器)和执行任务。

二、核心概念

1、链 Chains (串联 LLM 与任务步骤)

  • 核心抽象:将多个组件(模型调用、数据检索、代码执行、其他工具调用)按特定顺序组合起来完成一个复杂任务。

  • 提供预构建链(如常见的QA问答链),也支持自定义链。

  • 例如:用户提问 -> 检索相关文档 -> 将文档和问题组合成提示词 -> 发送给 LLM -> 返回答案。

2、代理 Agents (让 LLM 自主决策与工具调用)

  • 更高级的抽象,让 LLM 能够主动决定使用哪些工具(如搜索引擎、计算器、数据库、API)以及按什么顺序使用,来解决问题。

  • LLM 充当"大脑",根据用户输入和当前状态推理需要执行的动作(Action),调用工具(Tool),观察结果(Observation),并循环直至得出最终答案。

  • 实现动态决策能力(如"帮我查一下最近的新闻,然后总结一下")。

3、记忆 Memory (管理对话上下文与历史)

  • 存储历史会话:为链或代理提供短期或长期的"记忆"能力,使其能在对话或多次交互中记住上下文(如之前的对话历史、中间结果)。

  • 支持简单的内存(记住最近几条消息)和更复杂的持久化内存。

4、工具集成 Tools (连接外部系统与能力)

  • 核心功能之一:使 LLM 能够访问外部数据源(如你自己的文档、数据库、API)。

  • 包含文档加载器、文本分割器、向量数据库集成(如 Chroma, Pinecone, FAISS, Milvus)和检索器。

  • 实现"基于你提供的文档回答问题"的功能。

5、标准化组件 (统一接口与跨平台兼容)

  • 提供与各种 LLM 供应商(OpenAI, Anthropic, Hugging Face 等)交互的统一接口

  • 简化了提示词(Prompt)的模板化、管理和优化。

  • 处理模型的输入输出。

适用于:

需要整合外部数据、工具或 实现多步骤逻辑 的场景(如 RAG 系统、智能工作流);复杂应用(需记忆、检索、工具调用)等场景使用。

劣势:

学习门槛高;由于组件间的层层封装,复杂的链或 Agent 可能引入额外的性能开销(如多次 LLM 调用、冗余的数据处理),在高并发场景下需要额外优化,否则可能出现响应延迟;简单场景可能得不偿失,简单应用可直接调用 LLM API。

和LlamaIndex对比:

  • LangChain通用的 LLM 应用开发框架,目标是提供一套 "乐高积木",帮助开发者快速拼接出复杂的 LLM 应用工作流。它不局限于某一特定场景(如 RAG),而是覆盖从 "数据输入→模型调用→逻辑处理→输出交互" 的全流程。
  • LlamaIndex专注于 "数据与 LLM 连接" 的工具,核心目标是解决 "LLM 如何高效理解和使用私有数据(如文档、数据库)" 的问题,本质是为 RAG 场景提供 "数据处理→索引构建→智能查询" 的完整解决方案。

1、优先选 LlamaIndex 的场景

  • 核心需求是 RAG:如果你的应用本质是 "让 LLM 基于私有文档回答问题"(如企业知识库、文档问答机器人),且需要处理复杂文档(如长文档、多格式文档、嵌套结构),LlamaIndex 是更优选择。它的索引优化和查询策略能显著提升回答的准确性(如减少 "幻觉"、提高相关性)。
  • 追求 "开箱即用":如果你希望快速搭建 RAG 原型,不想手动设计数据处理流程(如文档分割、索引构建),LlamaIndex 的默认流程能节省大量时间(几行代码即可完成从文档到查询的全流程)。
  1. 优先选 LangChain 的场景
  • 需要构建复杂多步骤应用:如果你的应用涉及多轮逻辑(如 "用户提问→调用工具查询实时数据→结合私有文档→生成回答")、需要 Agent 自主决策(如自动判断是否需要调用工具),或需要记忆功能(如记住对话历史),LangChain 的 "链""代理""记忆" 组件能更高效地实现这些逻辑。
  • 应用场景不限于 RAG:如果你的应用包含非 RAG 模块(如纯对话机器人、代码生成工具、多模态处理),LangChain 的通用性可以避免你为不同模块引入多个工具。
  • 需要高度自定义:如果你的场景需要深度定制流程(如自定义提示词模板、修改工具调用逻辑),LangChain 的模块化设计更适合灵活调整。

3、混合使用

复杂 LLM 应用会同时使用两者:

先通过 LlamaIndex 处理企业文档的数据索引和查询(发挥其 RAG 优势),

再用 LangChain 编排整体流程 ,构建一个 Agent**(如将 LlamaIndex 的查询结果接入 LangChain 的链或 Agent 中,结合工具调用、记忆等功能)**,使其既能调用 LlamaIndex 的查询接口获取文档信息,又能调用外部 API 获取实时数据,最终整合结果生成回答。

维度 LangChain LlamaIndex
核心能力 提供 "链(Chains)""代理(Agents)""记忆(Memory)" 等组件,支持多步骤逻辑编排(如 "调用工具→处理结果→生成回答")。 提供 "数据加载→文档解析→索引构建→查询优化" 的全链路数据处理能力,专注于让 LLM 高效访问私有数据。
数据处理 提供基础的数据加载器(Loaders)和分割器(Splitters),但不深入优化索引结构,更多是 "能用" 而非 "最优"。 深耕数据索引技术,提供多种索引类型(向量索引、树索引、列表索引等),支持复杂文档结构(如嵌套文档、表格)的解析,且内置查询优化策略(如子问题分解、多步推理)。
应用场景覆盖 覆盖 RAG、聊天机器人、智能代理(如 AutoGPT 类应用)、工具调用(如调用 API、数据库)等几乎所有 LLM 应用场景。 主要聚焦 RAG 场景,是处理 "LLM + 私有数据" 的专用工具,对非 RAG 场景(如纯对话、工具调用)支持较弱。

为什么用 LlamaIndex?

  • 支持多种索引结构(如向量索引、关键词索引、树状索引、知识图谱索引)
  • 多种检索策略(混合检索、子查询、多步检索、路由检索)
  • 生成链路优化,减少手动拼接

使用LangChain的场景

需要组合多种工具(如调用 API、数据库查询)、有其他非检索类步骤(如数据清洗、格式转换);

三、常见的几种AgentType

1、ZERO_SHOT_REACT_DESCRIPTION

简单工具调用(1-2 步) ,通过 "思考 - 行动 - 观察" 循环来处理任务。依赖 "工具描述", 直接选择工具(零样本)。适用于需要多步推理和动态工具调用的通用场景,如智能助理。

2、CONVERSATIONAL_REACT_DESCRIPTION

增加了「对话记忆(Memory)」能力,支持多轮对话的。适合需要长期交互和上下文跟踪的对话任务,如客服机器人或持续性助手

3、SELF_ASK_WITH_SEARCH

复杂问题 逐步拆解多个 "中间子问题",分步解决 的场景,并通过搜索工具获取答案。用于需要外部知识验证的问答系统、复杂的 "多步推理" 任务。

相关推荐
蛇皮划水怪17 小时前
深入浅出LangChain4J
java·langchain·llm
、BeYourself18 小时前
LangChain4j 流式响应
langchain
、BeYourself18 小时前
LangChain4j之Chat and Language
langchain
qfljg20 小时前
langchain usage
langchain
kjkdd1 天前
6.1 核心组件(Agent)
python·ai·语言模型·langchain·ai编程
渣渣苏1 天前
Langchain实战快速入门
人工智能·python·langchain
小天呐1 天前
01—langchain 架构
langchain
香芋Yu1 天前
【LangChain1.0】第九篇 Agent 架构设计
langchain·agent·架构设计
想你依然心痛1 天前
ModelEngine·AI 应用开发实战:从智能体到可视化编排的全栈实践
人工智能·智能体·ai应用·modelengine
kjkdd1 天前
5. LangChain设计理念和发展历程
python·语言模型·langchain·ai编程