LangChain+LLM实战---Langchain-Chatchat概述

LangChain介绍

LangChain是个开源的框架,它可以让AI开发人员把像GPT-4这样的大型语言模型(LLM)和外部数据结合起来。可以简单认为LangChain是LLM领域的Spring,以及开源版的ChatGPT插件系统。

LangChain的强大之处不仅能通过API调用语言模型,还可以执行如下功能:

  • 数据感知:将语言模型连接到其他数据源
  • 具有代理性质:允许语言模型与其环境交互

例如:GPT模型是用到2021年的数据训练的,这可能会有很大的局限性,如果能让GPT模型连接到自定义的数据和计算,就就会产生更多的可能性。LangChain可以让LLM在回答问题时参考整个数据库,可以让GPT模型访问最新的数据,比如报告、文档和网站信息。

LangChian可以将LLM 模型、向量数据库、交互层 Prompt、外部知识、外部工具整合到一起,进而可以自由构建 LLM 应用。

LangChain组件

LangChain提供了各种不同的组件来帮助使用LLM。其核心组件有Models、Indexes、Chains、Memory、Prompts以及Agent,如图所示:

LangChain+LLM实战---Langchain-Chatchat概述_第1张图片

将LangChain的核心组件按照逐渐增加的复杂性排列如下:

  • 模型(models):LangChain支持的各种模型类型以及模型集成。
  • 提示(prompts):LangChain提供了PromptTemplates,允许可以根据用户的输入来动态地更改提示。包括提示管理、提示优化和提示序列化。
  • 记忆(memory):内容记忆。记忆是在链/代理调用之间保持状态的概念。LangChain提供了标准的记忆接口、记忆实现及使用记忆的链/代理示例。
  • 索引(indexes):索引是指对文档进行结构化的方法,以便 LLM 能够更好的与之交互。该组件主要包括:Document Loaders(文档加载器)、Text Splitters(文本拆分器)、VectorStores(向量存储器)以及Retrievers(检索器)。
  • 链(chains):链不仅仅是单个LLM调用,还包括其他系列调用(无论是调用LLM还是不同的实用工具)。LangChain提供了标准的链接口、许多与其他工具的集成。LangChain提供了用于常见应用程序的端到端的链调用。
  • 代理(agents):代理涉及LLM做出行动决策、执行该行动、查看观察结果,并重复该过程直到完成。LangChain提供了标准的代理接口,许多可供选择的代理,以及端到端代理的示例。

LangChain实现原理

  • 通过将大文档进行向量化表示,然后就可以用它和LLM一起工作,只检索需要引用的信息,来创建相关的提示-完成(prompt-completion)对。
  • 当把提示输入到新的聊天机器人里,LangChain就会在向量存储里查询相关的信息,然后将信息和提示一起提供给LLM,生成需要的答案。

Langchain-Chatchat实现原理 

  • LangChain-Chatchat:基于Langchain与ChatGLM等大语言模型的本地知识库问答应用实现。
  • 其实现流程:加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> query问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答,如图所示:

从文档处理角度来看,实现流程如下: 

LangChain+LLM实战---Langchain-Chatchat概述_第2张图片

Docker虚拟磁盘文件迁移

使用Docker来实现LangChain+LLM的功能时,通常所使用的镜像比较大,即Docker虚拟磁盘文件ext4.vhdx会比较大。在Windows本地安装Docker Desktop时,ext4.vhdx默认在C盘下,随着docker run项目的增多会变得更大,所以往往会需要迁移到其他盘符,过程如下:

  • 打开Windows CMD
    • 查看docker状态和版本:wsl -l -v
    • 其中docker-desktop-data需要迁移到其他盘
  • wsl --shutdown
  • 导出docker-desktop-data
    • wsl --export docker-desktop-data D:\docker_data\docker-desktop-data.tar
  • 注销 docker-desktop-data
    • wsl --unregister docker-desktop-data
  • 重新导入docker-desktop-data
    • wsl --import docker-desktop-data E:\docker_data\data\ E:\docker_data\docker-desktop-data.tar --version 2 

你可能感兴趣的:(LangChain-LLM,langchain,人工智能,自然语言处理,bert,gpt)