什么是 🦜🔗 LangChain?

LangChain is a framework for developing applications powered by language models
如其官网所说,LangChain 是一个开发语言模型应用的框架。其设计理念在于其认为一个应用程序不应该只和模型的接口打交道,还应该:
  • Data-Aware: 将语言模型和其他数据源连接起来。
  • Agentic:允许语言模型和环境交互。

两个重要概念:组件和链

所以 LangChain 中由两类重要的概念,一个是 Components 组件,一个是 Use-Case Specific Chains 用例特定链:

  • 组件:可以与语言模型进行交互的模块抽象及其实现,可以组合起来创建应用程序。
  • 链:组合在一起完成特定任务的一系列组件或其他链,例如,一个 Chain 可能包括一个 Prompt 模板、一个语言模型和一个输出解析器,它们一起工作以处理用户输入、生成响应并处理输出。

组件

Loader 加载器

是从指定源进行加载数据,比如加载文件,加载表格,加载Youtube等,官方提供很多加载器,甚至有 Biliblili:

LangChain - 图1

Document 文档

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

Text Spltters 文本分割

顾名思义用于分割文本,为了防止 token 超长。

Vectorstores 向量数据库

数据相关性搜索其实是向量运算,需要将我们的加载进来的数据 Document 向量化才能进行向量运算搜索,转换成向量只需要我们把数据存储到对应的向量数据库中即可。

Chain 链

可以把 Chain 理解为任务,一个 Chain 就是一个任务,可以像链条一样一个一个的执行多个链。

Agent 代理

可以动态的帮我们选择和调用chain或者已有的工具:

LangChain - 图2

如何使用

参考

LangChain 完整指南:使用大语言模型构建强大的应用程序

https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide