LangChain是一个开源框架,允许开发人员在与人工智能(AI)一起工作时将大型语言模型(如GPT4)与外部计算和数据源相结合(它提供了一套工具、组件和接口,可简化创建由LLM提供支持的应用程序)。该框架目前提供Python和Js两种版本。
Langchain的核心模块如下:
- Modules:支持的模型类型和集成,如:openai,huggingface等;
- Prompt:提示词管理、优化和序列化,支持各种自定义模板;
- Memory:内存管理(在链/代理调用之间持续存在的状态);
- Indexes:索引管理,方便加载、查询和更新外部数据;
- Agents:代理,是一个链,可以决定和执行操作,并观察结果,直到指令完成;
- Callbacks:回调,允许记录和流式传输任何链的中间步骤,方便观察、调试和评估。
到目前为止,我们都知道ChatGPT(GPT4)拥有令人印象深刻的广泛知识,我们几乎可以询问任何问题,都能得到相当不错的答案。假设想从自己的数据、自己的文档中获取特定的信息,这可能是一本书、一个PDF文件、一个带有专有信息的数据库,LangChain允许我们连接像GPT4这样的大型语言模型到自己的数据源中。这里我们不是指将文本文档的片段粘贴到ChatGPT中,而是将LLM指引到我们自己的数据源。
Langchain+LLM为无数的实际应用打开了大门,我们可以将其与数据分析领域中的数据相连接,通过LLM为我们分析数据,给出我们想要的答案。
下面是一个ChatGLM+Langchain的项目:https://github.com/chatchat-space/Langchain-Chatchat
项目实现原理如下图所示,过程包括:加载文件 > 读取文本 > 文本分割 > 文本向量化 > 问句向量化 > 在文本向量中匹配出与问句向量最相似的 top k个 > 匹配出的文本作为上下文和问题一起添加到prompt中 > 提交给 LLM生成回答。
从文档处理角度来看,实现流程如下: