大语言模型(LLM)LangChain介绍

发布于:2024-07-02 ⋅ 阅读:(12) ⋅ 点赞:(0)

LangChain是一个利用大语言模型的能力开发各种下游应用的开源框架,它的核心理念是为各种大语言模型应用实现通用的接口,简化大语言模型应用的开发难度,主要的模块示意图为:

  • Index:提供了各类文档导入、文本拆分、文本向量化存储和检索的接口,导入的文档类型除常见的 word、excel、PDF、txt 外,还包括 API 和数据库接口,向量化存储包括各类向量数据库。通过 Index 模块,非常容易处理各类型的外部数据,来提供给大模型进行推理。
  • Prompts:将用户输入和其他外部数据转化为适合大语言模型的提示词,包括提示词管理、提示词优化和提示词序列化等功能。通过调整提示词,可以让大语言模型执行各类任务,如文本生成文本(包括聊天、问答、摘要、报告等)、文本生成 SQL、文本生成代码等,另外还可以通过提示词让模型进行小样本学习,目前对各任务的提示词最优实践在如火如荼的研究中,通过提示词不断探索大语言模型的能力边界,LangChain 提供了一个易用的提示词管理工具。
  • Models:提供了对各类大语言模型的管理和集成,除闭源的大语言模型 API 接口外,还提供对多个开源模型仓库中开源大语言模型的集成接口,以及在云上部署的大语言模型接口。
  • Memory:用来保存与模型交互时的上下文状态,是实现多轮对话的关键组件。
  • Chains:LangChain 的核心组件,能对上面的各组件组合在一起以完成特定的任务,如一个 chain 可以包含 prompt 模版、大语言模型及输出处理组件,来完成用户聊天功能。对各种不同的任务,LangChain 提供不同的 chain,如问答任务提供了 Question Answering Chain,文本摘要任务提供了 Summarization Chain,文本生成 SQL 任务提供了 SQL Chain,数学计算任务提供了 LLM Math Chain 等,同时可以自定义 Chain,Chain 组件提供了不同的模型推理模式,包括 stuff、map_reduce、refine、map-rerank 等,可以根据具体的任务需求,选择合适的 Chain 以及模型推理模式来完成任务。
  • Agents:LangChain 的高级功能,能根据用户的输入来决定调用哪些工具,同时能组合一系列的 Chain 来完成复杂的任务,如提问:我的账号余额能买多少两黄金?Agents 通过 SQL chain 查询账号余额,通过调用网页查询接口的 LLM 查找实时黄金价格,通过调用 LLM Math 计算能买到的黄金数量完成最终的任务,这一系列的逻辑操作均可以在 Agents 中配置。

除 LangChain 外,目前另一个比较常用的开源大语言模型应用开发框架是 LIamaIndex。LIamaIndex 有丰富的数据导入接口,特别是对结构化数据的支持更友好,另外 LIamaIndex 的 Index 对多种模式的问答逻辑进行了封装,易于使用但缺少灵活性。LIamaIndex 支持与 LangChain 集成,2 个框架可以互相调用。