RAG 入门教程:LangChain 框架 v0.2 介绍
1. 概述
LangChain 是一个开源框架,旨在简化使用大型语言模型 (LLM) 创建应用程序的过程。可以将其想象成一套使用高级语言工具进行搭建的乐高积木。它对于想要构建复杂的基于语言的应用程序而又不必管理直接与语言模型交互的复杂性的开发人员特别有用。它简化了将这些模型集成到应用程序中的过程,使开发人员能够更加专注于应用程序逻辑和用户体验。
2. 基础概念
2.1 大型语言模型 (LLMs)
'LLM'代表'大型语言模型',这是一种旨在大规模理解、生成和与人类语言交互的人工智能模型。这些模型在大量文本数据上进行训练,可以执行各种与语言相关的任务。
这些模型最初通过识别和解释单词与更广泛概念之间的关系来建立基础理解。这一初始阶段为进一步的微调奠定了基础。微调过程涉及监督学习,其中使用有针对性的数据和特定反馈对模型进行微调。此步骤可提高模型在各种情况下的准确性和相关性。
2.2 Transformer 架构
训练数据通过一种称为 Transformer 的专门神经网络架构进行处理。这是大型语言模型 (LLM) 开发的关键阶段。
从非常高层次的概述来看,编码器处理输入数据(例如一种语言的句子)并将信息压缩为上下文向量。然后解码器获取此上下文向量并生成输出(例如将句子翻译成另一种语言)。
编码器和解码器具有'自注意力'机制,这使得模型可以对输入数据的不同部分的重要性赋予不同的权重。自注意力机制让模型在处理特定单词或短语时能够关注输入文本的不同部分。对于每个单词,模型会评估句子中所有其他单词与其的相关性,并为这些关系分配权重。这些权重有助于模型更全面地理解句子结构和含义,从而生成更准确、更符合语境的回复或翻译。
2.3 大模型分类
- 专有模型:这些是由公司开发和控制的 AI 模型。它们通常提供高性能,并得到大量资源和研究的支持。然而,它们的使用成本可能很高,可能具有限制性许可证,并且其内部工作原理通常不透明(闭源)。
- 开源模型:相比之下,开源 AI 模型可供任何人免费使用、修改和分发。它们促进社区内的协作和创新,并提供更大的灵活性。然而,它们的性能可能并不总是与专有模型相匹配,而且它们可能缺乏大公司提供的广泛支持和资源。
这些模型之间的选择涉及性能、成本、易用性和灵活性方面的权衡。开发人员必须决定是选择可能更强大但限制更多的专有模型,还是更灵活但可能不够完善的开源替代方案。
3. LangChain 核心架构
LangChain 有助于访问和合并来自各种来源(例如网站或其他外部存储库)的数据到使用 LLM 的应用程序中。它提供了模块化组件,使得在不同应用环境中集成和管理模型变得更加容易。
3.1 核心组件详解
- 文档加载器 (Document Loaders):旨在简化从各种来源导入和处理文本数据的实用程序。
- 文档转换器 (Document Transformers):对文本数据进行各种转换,使其格式更有利于大型语言模型 (LLM) 进行分析和处理,如分割、过滤、提取元数据等。
- 文本嵌入模型 (Text Embedding Models):专注于将文本数据转换为嵌入(向量表示)。
- 向量存储 (Vector Stores):作为用于存储和管理嵌入的专用数据库。
- 检索器 (Retrievers):旨在根据给定的查询从向量存储中有效地检索相关信息。
- 工具 (Tools):执行特定任务和操作。例如,Bing 搜索工具是一个 API,用于将 Bing 搜索与 LLM 结合使用。
- 代理 (Agents):代表一种高级抽象,用于协调不同 LangChain 组件与最终用户之间的交互。它充当 LLM 和工具之间的中介,处理用户查询,使用 LangChain 中的适当模型和工具进行处理,然后将结果返回给用户。
- 记忆 (Memory):提供了一种记住和参考过去的交互或信息的机制。
- 链 (Chains):通过将 LLM 可以执行的各种任务链接在一起,有助于构建多步骤工作流或流程。此组件允许按顺序执行不同的语言任务,例如信息检索,然后是文本摘要或问答。
- 提示 (Prompts) 和解析器 (OutputParsers):简化了模型的输入和输出。


