为你的下一个RAG系统准备的10个有用的LangChain组件

10 Useful LangChain Components for Your Next RAG System

为你的下一个RAG系统准备的10个有用的LangChain组件
图片来源:编辑 | Midjourney

LangChain 是一个强大的框架,旨在简化开发 LLM(大型语言模型)驱动的应用程序。其多功能组件允许将 LLM 集成到各种工作流程中,包括检索增强生成 (RAG) 系统。RAG 系统将 LLM 与外部文档库相结合,通过从文档库检索最新的相关信息,从而提供更准确、上下文相关且事实正确的响应。

本文概述了 LangChain 中 10 个最受欢迎的构建块,如果您有兴趣使用这个强大的框架构建 RAG 系统,可以考虑使用它们。从数据摄取到检索方法,再到与 LLM 的编排,我们将介绍一些值得关注的关键组件。

1. 文档加载器

文档加载器是 LangChain 用于从 TXT 或 PDF 文件、网页或 CSV 文件等各种来源摄取数据的组件。它们还支持连接器,通过 API 从存储系统或数据库加载文件。文档加载器的具体示例包括PyPDFLoaderUnstructuredFileLoaderWebBaseLoader

2. 文本分割器

文本分割器负责将大型文本分解成更易于管理的部分,通常称为块 (chunks),以便在加载文档后进行高效处理和快速索引。LangChain 的文本分割器支持自定义块大小,甚至支持块之间的重叠,以避免上下文丢失。常见的文本分割器类型包括RecursiveCharacterTextSplitterTokenTextSplitter

3. 嵌入

嵌入是一种将文本数值化编码的同时保留其语义属性的有效方法,通常通过密集向量表示来实现。在 RAG 系统中,嵌入是执行基于相似度的搜索的基石:彼此靠近的嵌入向量应表示相似的文本。LangChain 支持通过其 API 与 OpenAI 模型等常用嵌入模型集成,并通过 Hugging Face 实现句嵌入。对应的类是OpenAIEmbeddingsHuggingFaceEmbeddings

4. 向量存储

向量存储是用于在基于相似度的搜索过程中存储和检索嵌入的组件。LangChain 提供了一些特定的组件来管理向量数据库,例如PineconeChromaFAISS

5. 检索器

检索器是 RAG 系统的核心组件,负责在向量存储中搜索并检索与输入查询最相关的块嵌入。在 LangChain 中,它们可以针对混合检索方法进行调整,例如结合稀疏和密集搜索。用于实现 LangChain 检索器的示例组件包括SimilarityRetrieverHybridRetriever

6. LLM 包装器

LLM 包装器是 RAG 系统与 LLM 的接口,专注于文本生成。通过 API,它可以调用广泛的模型,如 OpenAI 的 GPT 模型、Anthropic 的 Claude 模型,以及 Hugging Face 的本地预训练模型(类HuggingFaceHub)。

7. 链

是 LangChain 整体的关键要素,链是一个将多个 NLP 组件组合在一起的工作流程。我们稍后将看到的示例是问答链,它可以将检索器与 LLM 连接起来,以基于检索到的知识生成答案。LangChain 提供了各种类来支持针对不同场景的特定类型链,例如RetrievalQAConversationalRetrievalChain

8. 内存管理

内存管理组件有助于跨交互控制对话的状态和上下文,在基于聊天的 RAG 系统中是必不可少的。它们通过ConversationBufferMemoryVectorStoreMemory 等抽象进行控制。

9. 交互工具与代理

交互工具和代理是这些高级组件,使 RAG 系统中的 LLM 能够与外部系统进行交互,以基于代理来处理更具挑战性的任务,代理会动态地为每个特定问题选择最合适的工具。ToolZeroShotAgent 类用于此目的。

10. 评估

LangChain 中的评估是指评估 RAG 管道的性能,而QA Eval Chain 等 LangChain 组件允许迭代地调整检索和生成机制及其基准测试。

示例:将它们(几乎)全部整合起来

为了在 Python 代码中进行简单的演示,下面是一个非常简化的问答 RAG 工作流程的完整示例,它整合了一些我们讨论过的 LangChain 组件。

为确保代码顺利执行,有几个重要方面需要注意

  • 如果您在笔记本电脑上运行,需要先安装 LangChain 的社区版,方法是运行:!pip install -U langchain-community
  • 您需要准备一个自己的示例文档 .txt 文件
  • 您还需要 OpenAI API 密钥才能使用OpenAIEmbeddings等类

总结

本文介绍了 LangChain 广泛而强大的框架中的 10 种必需组件类型,这些组件在构建有效的 RAG 系统时值得考虑,涵盖了知识检索、文本嵌入、与 LLM 和外部系统的交互等元素和流程。通过一个示例,我们说明了如何将其中一些组件组合起来,定义一个简化的基于 RAG 的问答工作流程。

10 个有用的 LangChain 组件,助力您的下一个 RAG 系统的 4 条回复

  1. Glenda Hayden 2025年2月11日 上午11:28 #

    这太令人兴奋了!迫不及待地想看到这些家伙扩展起来!!!

  2. Carlos Afonso 2025年2月16日 上午12:37 #

    我认为如果代码更新到 Langchain 的更新版本会很有用。

  3. Rahul Saini 2025年2月16日 下午4:23 #

    这些是否也适用于 LangChain4J?

    • James Carmichael 2025年2月17日 上午7:16 #

      你好 Rahul……我们还没有研究过。您是否正在处理某个特定问题,这可以帮助我们更好地理解您需要什么帮助?

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。