【LangChain系列文章】1. LangChain:一个可以让你变强大的开源框架

LangChain No.1

目录

  • 为什么?
  • 一、LangChain介绍
  • 二、LangChain原理
      • 1. 向量数据库
      • 2. 与LLM合作
  • 三、LangChain组件
  • 四、学习路径

为什么?

最最最最重要的一点,LangChain是基于JavaScript语言编写的,只需要学会TypeScript的使用,学习LangChain框架就不是问题,这无疑利好于前端开发同学。

其次,很多前端开发同学在工作中会觉得存在感低,工作年限越久焦虑感越强!那么,在当下大模型如此火热的时候,学习LangChain开始大语言模型的使用,是前端开发同学一个非常不错的选择。

下面从LangChain的基本介绍开始本专栏的第一篇文章。

一、LangChain介绍

LangChain是一个开源框架,它提供了PythonJavaScript(TypeScript)两个包。它可以把一些大语言模型(LLM,如ChatGPT-4等)和外部数据结合起来(让模型链接自定义的知识库),也就是说,它可以让你的LLM在回答问题时参考整个库。

更简单的方式,你可以将它理解为:一个链接用户应用程序和LLM之间的中间层,更方便的让用户和LLM之间进行交互。

那么,LangChain可以干什么呢?你可以将它用在聊天、翻译、文档检索、总结等等多个场景中。

二、LangChain原理

LangChain原理只需要对两方面的内容进行掌握:向量数据库和与LLM的合作。

1. 向量数据库

它的工作原理理解起来其实并不复杂,把一个大的文件分割成很多个小块,并将它们存进向量数据库(Vector Store)里,然后用于进行数据检索。

【LangChain系列文章】1. LangChain:一个可以让你变强大的开源框架_第1张图片

理解向量数据库,还需要掌握一个核心概念:Embedding

Embeddings类是一个设计的用于与文本嵌入模型交互的类。Embedding对输入的文本创建一段文本的矢量表示(就是一种对文本数据的数字表示),这样我们就可以考虑在向量空间中的文本语义搜索,在向量空间中寻找最相似的文本片段。

LangChain中的Embeddings类公开了两个方法:一个用于嵌入文档,另一个用于嵌入查询。前者接受多个文本作为输入,后者接受单个文本作为输入。

2. 与LLM合作

有了向量数据库对大文档的向量化表示,我们就可以用它和LLM一起工作,来检索我们需要的信息。

配合大语言模型进行信息检索的流程为:用户提供一个提示语Prompt进入向量数据库中进行查询,检索出相关信息后,将它和提示语一起喂给大语言模型,经过大语言模型的处理给出我们需要的回答。它的工作过程如下所示:

【LangChain系列文章】1. LangChain:一个可以让你变强大的开源框架_第2张图片

三、LangChain组件

LangChain提供了很多个组件,具体包括以下几种。

它为各个模块提供了标准的、可扩展的接口和外部集成。其中,以下模块的复杂度从上到下依次递增。

  • 模式:包括在整个库中使用的接口和基类。
  • 模型:包括与LLM、聊天模型、嵌入模型的集成。
  • 提示符:各种Loader,如输出解析器、示例选择器等。包括提示符和与提示符一起使用的功能;
  • 索引:包括用于处理自定义数据的模式和功能,并使其准备好与LLM交互。包括包括文档加载程序、向量存储器、文本分割器和检索器等。
  • Memory:链之间的状态保持,也即连续对话。
  • Chains:将modelsprompt templates进行连接,或将多个chain进行链接。
  • Agent:allow a language model to interact with its environment(语言模型与自己的环境交互)

四、学习路径

LangChain是基于规范的TypeScript编写,可以查看它的官方API,也可以在GitHub下载它的源代码学习,相关使用问题还可以在其上进行提问。

你可能感兴趣的:(LangChain,大语言模型LLM,前端进阶,langchain)