大模型开发基础知识

LangChain

LangChain 中文入门教程_langchain中文教程-CSDN博客

1. 基本概念

定义:

LangChain 是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。

github: https://github.com/langchain-ai/langchain

中文文档:https://www.langchain.asia

官方文档:https://python.langchain.com/docs/get_started/introduction

使用:

要使用 LangChain,开发人员首先要导入必要的组件和工具,例如 LLMs, chat models, agents, chains, 内存功能。这些组件组合起来创建一个可以理解、处理和响应用户输入的应用程序。

主要包含组件:
Model I/O:管理大语言模型(Models),及其输入(Prompts)和格式化输出(Output Parsers)

Data connection:管理主要用于建设私域知识(库)的向量数据存储(Vector Stores)、内容数据获取(Document Loaders)和转化(Transformers),以及向量数据查询(Retrievers)

Memory:用于存储和获取 对话历史记录 的功能模块

Chains:用于串联 Memory ↔️ Model I/O ↔️ Data Connection,以实现 串行化 的连续对话、推测流程

Agents:基于 Chains 进一步串联工具(Tools),从而将大语言模型的能力和本地、云服务能力结合

Callbacks:提供了一个回调系统,可连接到 LLM 申请的各个阶段,便于进行日志记录、追踪等数据导流

2. 核心模块介绍

2.1 Model I/O

模型接入 LLM 的交互组件,用于和不同类型模型完成业务交互,LangChain 将模型分为 LLMS、Chat Model两种模型方式,分别通过不同template操作完成三种模型的业务交互。

LLMs

是指具备语言理解和生成能力的商用大型语言模型,以文本字符串作为输入,并返回文本字符串作为输出。LangChain 中设计 LLM 类用于与大语言模型进行接口交互,该类旨在为 LLM 提供商提供标准接口,如 OpenAI、Cohere、Hugging Face。

Chat

聊天模型是语言模型的一个变体,聊天模型以语言模型为基础,其内部使用语言模型,不再以文本字符串为输入和输出,而是将聊天信息列表为输入和输出,他们提供更加结构化的 API。通过聊天模型可以传递一个或多个消息。LangChain 目前支持四类消息类型:分别是 AIMessage、HumanMessage、SystemMessage 和 ChatMessage 。

  1. SystemMessage:系统消息是用来设定模型的一种工具,可以用于指定模型具体所处的环境和背景,如角色扮演等;
  2. HumanMessage:人类消息就是用户信息,由人给出的信息,如提问;使用 Chat Model 模型就得把系统消息和人类消息放在一个列表里,然后作为 Chat Model 模型的输入
  3. AIMessage:就是 AI 输出的消息,可以是针对问题的回答
  4. ChatMessage:Chat 消息可以接受任意角色的参数

2.2 Prompts

提示(Prompt)指的是模型的输入,这个输入一般很少是硬编码的,而是从使用特定的模板组件构建而成的,这个模板组件就是 PromptTemplate 提示模板,可以提供提示模板作为输入,模板指的是我们希望获得答案的具体格式和蓝图。LangChain 提供了预先设计好的提示模板,可以用于生成不同类型任务的提示。当预设的模板无法满足要求时,也可以使用自定义的提示模板。

      在 LangChain 中,我们可以根据需要设置提示模板,并将其与主链相连接以进行输出预测。此外,LangChain 还提供了输出解析器的功能,用于进一步精炼结果。输出解析器的作用是指导模型输出的格式化方式,以及将输出解析为所需的格式。

2.3 Data connection

打通外部数据的管道,包含文档加载,文档转换,文本嵌入,向量存储几个环节,此模块包含用于处理文档的实用工具函数、不同类型的索引,以及可以在链中使用这些索引

LangChain 可以将外部数据和 LLM 进行结合来理解和生成自然语言,其中外部数据可以是本地文档、数据库等资源,将这些数据进行分片向量化存储于向量存储数据库中,再通过用户的 Prompt 检索向量数据库中的相似信息传递给大语言模型进行生成和执行 Action。

2.3.1 Document loaders 文档加载器

顾名思义,这个就是从指定源进行加载数据的。比如:

  • 文件夹 DirectoryLoader
  • Azure 存储 AzureBlobStorageContainerLoader
  • CSV文件 CSVLoader
  • 印象笔记 EverNoteLoader
  • Google网盘 GoogleDriveLoader
  • 任意的网页 UnstructuredHTMLLoader
  • PDF PyPDFLoader
  • S3 S3DirectoryLoader/S3FileLoader
  • Youtube YoutubeLoader

2.3.2 Document transformers 文档转换器

当使用loader加载器读取到数据源后,数据源需要转换成 Document 对象后,后续才能进行使用。

2.3.3 Text embedding models 文本嵌入

LangChain 中的 Embeddings 基类公开了两种方法:一种用于嵌入文档,另一种用于嵌入查询。前者采用多个文本作为输入,而后者采用单个文本。将它们作为两种单独方法的原因是,某些嵌入提供程序对文档(要搜索的)与查询(搜索查询本身)有不同的嵌入方法。

2.3.4 VectorStores 向量存储

2.3.5 Retrievers 查询
检索器是一个接口,它根据非结构化查询返回文档。它比矢量存储更通用。检索器不需要能够存储文档,只需返回(或检索)它。矢量存储可以用作检索器的骨干,但也有其他类型的检索器。

检索器接口是一种通用接口,使文档和语言模型易于组合。LangChain 中公开了一个 get_relevant_documents 方法,该方法接受查询(字符串)并返回文档列表。

    重点关注数据压缩,目的是获得相关性最高的文本带入 prompt 上下文,这样既可以减少 token 消耗,也可以保证 LLM 的输出质量。

向量数据库、RAG检索、智谱清言开发者平台、基于文档的大模型问答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值