LangChain 入门和一些基本名词概念

LangChain 入门和一些基本名词概念

langChain 简介

langchain 是一个用于构建基于大语言模型(LLM)的应用程序的框架。它提供了一些工具和组件,可以帮助开发者更轻松地创建和管理与LLM交互的应用程序。



LangChain 的一些特性

LLM 和 提示(Prompt)

LangChain 对所有LLM 进行了API抽象, 统一了接口, 使得不同的LLM 可以无缝切换。 提示(Prompt) 是与 LLM 交互的关键部分, LangChain 提供了一个提示模板系统, 使得提示的创建和管理变得更加简单和灵活。

链(Chain)

链(Chain) 是 LangChain 的核心概念之一, 它允许将多个组件组合在一起, 形成一个完整的工作流。 例如, 可以将 LLM、提示、数据源和其他组件组合在一起, 创建一个复杂的应用程序。 LangChain 提供了多种内置的链类型, 例如序列链、条件链和并行链等, 使得创建复杂的工作流变得更加简单。

LCEL (LangChain Expression Language)

LCEL 是 LangChain 的表达式语言, 允许用户使用简单的语法来定义和操作数据。 LCEL 可以用于创建动态提示、条件逻辑和其他复杂的操作, 使得应用程序更加灵活和可扩展。 LCEL 的语法类似于 JavaScript, 使得开发者可以轻松上手。

数据增强生成(RAG)

RAG 全称为 Retrieval-Augmented Generation, 是一种结合了信息检索和生成模型的技术。 它允许在生成文本时使用外部数据源, 提高生成文本的准确性和相关性。 LangChain 提供了对 RAG 的支持, 使得开发者可以轻松地将外部数据源集成到应用程序中。

简单来讲就是用户可以通过检索外部数据来增强生成的文本, 使得生成的文本更加准确和相关。 例如, 在回答问题时, 可以先检索相关的文档,然后再使用 LLM 生成答案。 这样可以提高生成文本的准确性和相关性。

代理(Agent) 又叫智能体

代理(Agent) 是 LangChain 中的一个重要概念, 它允许用户创建可以自主决策和执行任务的智能体。 代理可以根据环境和输入动态调整其行为, 使得应用程序更加灵活和智能。 LangChain 提供了多种内置的代理类型, 例如基于规则的代理、基于模型的代理等, 使得创建智能体变得更加简单。

Agent 的关键时不但能够调用 LLM 生成文本, 还可以调用其他工具和 API 来执行任务。 它有自主决策和执行任务的能力!

例如, 可以创建一个代理, 它可以根据用户的输入调用 LLM 生成文本,然后根据生成的文本调用外部 API 来获取数据。 这样可以创建一个更加智能和灵活的应用程序。

市面上常见的Agent:

  • Siri: 苹果的语音助手, 可以执行各种任务, 例如发送短信、设置闹钟等。
  • Google Assistant: 谷歌的语音助手, 可以执行各种任务, 例如搜索信息、播放音乐等。
模型记忆 (Memory)

模型记忆是 LangChain 中的一个重要概念, 它允许用户在与 LLM 交互时保持上下文信息。 这对于需要多轮对话或上下文感知的应用程序非常重要。 LangChain 提供了多种内置的记忆类型, 例如短期记忆、长期记忆等, 使得创建具有上下文感知能力的应用程序变得更加简单。



LangChain 的框架

如图:
在这里插入图片描述

LangSmith

LangSmith 是 LangChain 的一个重要组成部分, 它提供了一个可视化的界面, 使得开发者可以轻松地创建、管理和调试应用程序。 LangSmith 提供了多种工具和功能,例如可视化工作流、调试工具、性能分析等, 使得开发者可以更加高效地开发和维护应用程序。

Template

LangChain 提供了多种内置的模板, 使得创建和管理提示变得更加简单。 模板可以用于创建动态提示、条件逻辑和其他复杂的操作, 使得应用程序更加灵活和可扩展。 LangChain 的模板系统支持多种格式,例如文本、JSON、XML 等, 使得开发者可以根据需要选择合适的格式。

LangServe

具体来说,LangServe 提供了以下功能:

部署框架: 它提供了一个框架,用于将您使用 LangChain 构建的应用程序部署到各种环境中,例如本地、云端等。

API 服务: 它允许您将您的 LangChain 应用程序转换成 RESTful API,使其可以通过 HTTP 请求访问。

管理和监控: 它提供了一些工具和功能,用于管理和监控您的已部署应用程序,例如负载均衡、监控等。

LangChain 库(Libraries)
  • langchain-core: 基础抽象和LCEL
  • langchain-community: 第三方集成
  • langchain

下面再详细介绍

LangChain

包含上面提到的3个主要组件, Chains, Agents, RAG

LangChain-Community

LangChain-Community 是 LangChain 的一个社区驱动的扩展库, 它提供了许多额外的功能和组件, 使得开发者可以更加灵活地创建应用程序。 LangChain-Community 包含了许多第三方集成、工具和示例, 使得开发者可以轻松地使用各种外部数据源和服务。

常见的扩展包有

Model I/O

通常由Model 提供商编写,
例如 OpenAI、Hugging Face 等。 这些扩展包提供了对特定模型的支持, 使得开发者可以轻松地使用这些模型。

Retrieval

通常由数据提供商编写,通常包含下面的组件

  • Retriever: 用于检索数据的组件, 例如从数据库、搜索引擎等检索数据。
  • Document Loader: 用于加载数据的组件, 例如从文件、数据库等加载数据。
  • Vector Store: 用于存储和检索数据的组件, 例如向量数据库、搜索引擎等。
  • Text Splitter: 用于将文本分割成块的组件, 例如将长文本分割成短文本。
  • Embedding model: 用于将文本转换为向量的组件, 例如使用 Word2Vec、BERT 等模型将文本转换为向量。
Agent Tooling

包括

  • Tool: 用于执行任务的组件, 例如调用 API、执行命令等。
  • Toolkit: 用于管理和组织工具的组件, 例如将多个工具组合在一起, 创建一个工具包。
LangChain Core

LangChain Core 是 LangChain 的核心库, 它提供了 LangChain 的基本功能和组件。 LangChain Core 包含了 LLM、提示、链、代理等核心概念和功能, 使得开发者可以轻松地创建和管理应用程序。 LangChain Core 是 LangChain 的基础, 所有其他组件和扩展都是基于 LangChain Core 构建的。

LCEL

LCEL 是 LangChain 的表达式语言, 允许用户使用简单的语法来定义和操作数据。

功能包括

  • Parallelization: 允许用户并行执行多个操作, 提高性能和效率。
  • Fallback: 允许用户定义备用操作, 当主操作失败时执行备用操作。
  • Tracing: 允许用户跟踪和记录操作的执行过程, 便于调试和分析。
  • Batching: 允许用户将多个操作批量处理, 提高性能和效率。
  • Streaming: 允许用户实时处理数据流, 提高性能和效率。
  • Async: 允许用户异步执行操作,提高性能和效率。
  • Composition: 允许用户将多个操作组合在一起, 创建一个复杂的工作流。




langChain 的任务处理流程

  1. 用户输入: 用户通过界面或API输入请求,例如提问或命令。
  2. 预处理: 系统对用户输入进行预处理,例如清洗、分词等操作。
  3. 检索: 系统根据用户输入检索相关数据,例如从数据库、搜索引擎等检索数据。
  4. 生成: 系统使用 LLM 生成响应,例如回答问题、执行命令等。
  5. 后处理: 系统对生成的响应进行后处理,例如格式化、过滤等操作。
  6. 返回结果: 系统将处理后的结果返回给用户,例如通过界面或API返回响应。

在这里插入图片描述




langChain 的一些核心概念

  1. LLM (Large Language Model): 大语言模型, 是一种基于深度学习的自然语言处理模型, 可以用于生成、理解和处理自然语言文本。 模型接受1个文本输入, 生成1个文本输出。 例如, OpenAI 的 GPT-3、Google 的 BERT 等都是 LLM。

  2. Chat Model
    Chat Model 是一种基于 LLM 的对话模型, 可以用于生成和理解对话文本。 它可以处理多轮对话, 具有上下文感知能力。 例如, OpenAI 的 ChatGPT、Google 的 LaMDA 等都是 Chat Model。

  3. Message
    Message 是与 Chat Model 交互的基本单位, 它包含了输入文本、输出文本和其他元数据。 Message 可以用于表示用户输入、模型输出和系统状态等信息。 LangChain 提供了多种内置的消息类型, 例如文本消息、图像消息等, 使得与 Chat Model 的交互更加灵活和丰富。

也分为 HumanMessage, AIMessage, SystemMessage, FunctionMessage 和 ToolMessage

  1. Prompt
    Prompt 是与 LLM 交互的关键部分, 它是一个包含输入文本和其他元数据的模板。 Prompt 可以用于生成动态提示、条件逻辑和其他复杂的操作, 使得与 LLM 的交互更加灵活和可扩展。 LangChain 提供了多种内置的提示类型, 例如文本提示、JSON 提示等, 使得创建和管理提示变得更加简单。

  2. Output Parser
    Output Parser 是用于解析 LLM 输出的组件, 它可以将 LLM 生成的文本转换为结构化数据或其他格式。 Output Parser 可以用于处理复杂的输出,例如 JSON、XML 等, 使得与 LLM 的交互更加灵活和可扩展。 LangChain 提供了多种内置的输出解析器, 例如 JSON 解析器、XML 解析器等, 使得创建和管理输出解析器变得更加简单。

  3. Retriever
    Retriever 是用于检索数据的组件, 它可以根据用户输入从数据库、搜索引擎等检索相关数据。 Retriever 可以用于增强 LLM 的生成能力,例如在回答问题时使用外部数据源, 提高生成文本的准确性和相关性。 LangChain 提供了多种内置的检索器, 例如基于关键词的检索器、基于向量的检索器等, 使得创建和管理检索器变得更加简单。

Langchain 已经为我们封装好了 加载文件数据(Document loader), 分割数据(Text splitter), 向量化数据(Embedding model), 存储数据(Vector store), 检索数据(Retriever) 的功能, 使得我们可以轻松地将外部数据源集成到应用程序中。

  1. Vector Store
    Vector Store 是用于存储和检索数据的组件, 它可以将文本转换为向量, 并存储在向量数据库中。 Vector Store 可以用于增强 LLM 的生成能力,例如在回答问题时使用外部数据源, 提高生成文本的准确性和相关性。 LangChain 提供了多种内置的向量存储器, 例如基于向量数据库的向量存储器、基于搜索引擎的向量存储器等, 使得创建和管理向量存储器变得更加简单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nvd11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值