LlamaIndex 和 LangChain 是两个用于创建和实施检索增强生成 (RAG) 系统的平台。LlamaIndex 旨在简化搜索和检索流程,而 LangChain 则是一个功能全面、模块化的平台,支持多种应用场景。
RAG(资源获取算法)为大型语言模型 (LLM)赋予领域特定知识,从而提高聊天机器人和其他人工智能 (AI)应用的准确性和实用性。虽然 LlamaIndex 和 LangChain 的应用场景有所重叠,但它们构建 RAG 系统的方式却不尽相同。
LlamaIndex 专注于从文本数据源进行索引、 数据摄取和信息检索 ,因此非常适合简单的工作流程和直接的 AI 应用。与此同时,LangChain 的模块化框架在构建各种自然语言处理 (NLP)和智能体 AI 应用方面表现出色。

什么是 RAG?

RAG 是一种将机器学习 (LLM) 应用与专有数据源连接起来的技术。RAG 驱动的数据检索能够扩展机器学习模型的知识库,使其超越训练数据本身。RAG 使生成式人工智能模型能够访问特定领域的知识,例如组织内部数据,而这些知识原本是它们所缺乏的。
RAG 系统通过实时从指定数据源检索相关信息来响应用户查询,然后增强 LLM 的生成能力,从而提供更优的答案。配备 RAG 的模型能够生成更准确、上下文相关性更高的答案。
当时间和成本的限制使得冗长的微调过程无法进行时,RAG 可以成为一种高效便捷的替代方案——尽管这两种技术可以结合起来以获得更强的性能。

LlamaIndex 是什么?

LlamaIndex(原名 GPT Index)是一个用于数据摄取、索引和检索的开源框架。它提供 Python 和 TypeScript 版本,使用户能够将 LLM 与大型数据集连接起来,并创建检索应用程序。
LlamaIndex 的主要应用场景是文档管理和实用工具:它利用 LLM 的强大功能,实现文档的组织、查询和摘要流程自动化 。通过将庞大的文本数据集转换为易于查询的索引,LlamaIndex 简化了基于 RAG的内容生成流程。

LlamaIndex key features

LlamaIndex 的结构围绕一组核心关键组件展开,其中包括:

  • 数据摄取和 LlamaHub

  • 数据索引

  • 查询和检索

  • 后处理

  • 响应综合

数据摄取和 LlamaHub

数据摄取是 LlamaIndex RAG 流水线的第一阶段。在 LlamaIndex 中,此阶段称为数据加载 ,并使用数据加载器或数据连接器来获取和处理数据。LlamaIndex 支持超过 160 种数据格式,并支持包括结构化、半结构化和非结构化数据在内的各种数据结构。

当使用 LlamaIndex 处理单一数据源无法涵盖的检索任务时,用户可以转向 LlamaHub:这是一个功能全面的开源数据加载器集合,可满足各种特定需求。LlamaHub 用户可以将多个数据源(例如 API 、 SQL 数据库甚至 Google Workspace)整合到单个工作流程中。部分 LlamaHub 连接器甚至支持音频和视频文件。

数据索引

所有数据源连接完毕后,LlamaIndex 工作流程的下一步是数据索引:对所有数据进行理解并整理,以便将来使用。LlamaIndex 使用嵌入将用户提供的数据转换为可搜索的、基于向量的数据索引。嵌入模型是一种人工智能算法,它将数据转换为数学向量,并将其绘制在多维向量数据库中。
嵌入过程捕捉数据点之间的语义关系,从而增强上下文感知搜索。用户的查询也会被转换成嵌入向量。查询引擎可以识别与查询含义相似的数据点,从而提高相关信息的搜索效率。

LlamaIndex 可以利用现有索引构建新的索引,从而构建复杂的流程和查询。用户无需逐个查询单独的向量存储,而是可以创建组合索引,最大限度地提高查询效率。

查询和检索

查询时,用户的查询也会被转换成一个嵌入向量。查询引擎可以识别与查询含义相似的数据点,从而帮助搜索相关信息。LlamaIndex 利用语义相似性原理,从向量存储中检索与查询最相关的数据。

LlamaIndex 的查询转换功能可以简化复杂查询,或将其拆分为更易于管理的查询。查询转换是一种优化技术,能够提高 RAG 系统找到最相关数据并生成最佳响应的概率。

后处理

在检索到相关数据后,可以对其组成片段或节点进行重新排序和筛选,以进一步优化后续响应。节点后处理能够处理检索后需要进一步结构化和转换的数据源。

响应综合

检索到的数据与查询和原始用户提示相结合,并传递给连接的 LLM,然后 LLM 生成响应。

LangChain 是什么?

LangChain 是一个智能体 AI 应用创建框架,提供一系列模块化选项,使用户能够将各个组件“链接”在一起,构建复杂的工作流程。LangChain 支持导入几乎所有类型的 AI 模型,包括 OpenAI 的 GPT 和 Anthropic 的 Claude ,并专注于端到端自动化。LangChain 支持 Python 和 JavaScript 库。

LangChain 的主要特性

LangChain 平台的核心是一套独特的功能,旨在简化智能 AI 应用(如聊天机器人和虚拟代理) 的原型设计和创建。

  • Models 模型

  • Prompt templates 提示模板

  • Indexes 指数

  • Memory 记忆

  • Tools 工具

  • Chains 链条

  • Agents 代理人

  • LangSmith and LangServe

Models  模型

LangChain 的标准化用户界面简化了与众多 LLM 进行交互和操作的过程。模型访问通常通过提供商的 API 获取,这可能需要用户付费,具体费用取决于提供商。

如果使用基于聊天的模型,LangChain 通过四种消息分类来明确模型内外的通信。HumanMessage 代表人类创建的消息, AIMessage 代表来自 AI 模型的消息。SystemMessage 用于向模型发送指令内容,而 ChatMessage 则是一种更具体的选项 , 用于角色设置。

Prompt templates 提示模板

LangChain 提供一系列提示模板,以简化与 LLM 的通信过程。用户可以根据需要自定义提示,并在应用程序之间重复使用。LangChain 的提示模板旨在使链中的 LLM 能够生成上下文相关的输出。

Indexes 指数

与其他 RAG 平台类似,LangChain 将 LLM 与外部数据源连接起来。它通过创建基于向量的索引来实现这一目标。LangChain 的文档加载器库可以从外部来源提取数据,包括 Google Workspaces、Figma 等在线协作工具、YouTube 视频等网络内容、数据库等等。

LangChain 支持超过 25 种嵌入方法,可将这些数据转换并加载到矢量存储库中。用户可以将文档拆分成“块”,从而进一步提高矢量数据库查询效率。

Memory 记忆

LangChain 的一大亮点在于其记忆功能。LangChain 允许 LLM 引用之前的交互记录,并将这些上下文信息添加到当前和未来的对话中。在 LangChain 中实现记忆管理时,用户可以选择保留完整的对话记录、总结过去的对话记录,或者仅保留最近一定数量的交流记录。

Tools 工具

LangChain 中的工具是指模型可以用来完成流程中各项任务的功能,例如搜索引擎和各种 API。例如,一个需要在其工作流程中包含天气预报的模型可以连接到气象机构提供的服务。

Chains 链条

链将语言学习模型 (LLM) 与其他工具连接起来,从而在 LangChain 中实现自主工作流程。如果将 LLM 和工具比作流程图中的对象,那么链就是连接它们的箭头和线条。用户可以在工作流程中组合不同的链,每个链都可以包含不同的提示模板、模型、工具和参数。

Agents 代理人

AI 智能体是能够根据当前状况和接收到的输入来决定行动方案的自主模型。与用户在与聊天机器人互动时需要人工提示不同,智能体能够自主地完成整个工作流程。用户可以直接部署 LangChain 预制的智能体,也可以根据需要进行自定义。

LangSmith and LangServe

LangSmith 是 LangChain 的评估套件,而 LangServe 则负责部署。LangSmith 提供一系列测试和优化功能,帮助用户评估其应用程序。用户可以手动创建测试数据集,也可以根据用户反馈编译数据集,或使用 LLM 生成数据集。

评估完成后,用户可以通过 LangServe 部署其应用,LangServe 会将区块链转换为 API。LangSmith 可以与 LangServe 结合使用,以提供长期监控,这对于遵守可解释人工智能标准至关重要。

LangChain 与 LlamaIndex:主要区别

LlamaIndex 和 LangChain 都允许用户构建支持 RAG 的 LLM 应用,但它们提供了两种截然不同的项目实现方式。LlamaIndex 在查询数据库以检索相关信息方面表现出色,而 LangChain 更广泛的灵活性使其能够支持更多样的应用场景,尤其是在将模型和工具链接成复杂的工作流程时。

何时选择 LlamaIndex

LlamaIndex 非常适合开发难度较低的简单 RAG 应用。它擅长基于语义相关性进行高效、精确的数据检索。其优势包括:

  • 搜索和检索应用: LlamaIndex 高效的数据存储和基于语义相似性的数据检索功能使其成为精简版 RAG 应用的理想选择。其应用场景包括内部组织参考系统和知识管理。

  • 速度和精度: 凭借其先进的搜索算法,LlamaIndex 针对高效数据检索进行了优化,并具有很高的准确性。

  • 极简高效的应用开发: LlamaIndex 专注于核心业务,从而实现了高效的应用创建流程。用户可以快速上手 RAG 应用并投入使用。

  • 层级文档: LlamaIndex 是文本密集型项目的理想选择,例如在企业内部实施知识管理系统,其中文档层级结构至关重要。

何时选择LangChain

LangChain 注重多用途、可定制性和多功能性,因此拥有更广泛的应用场景。用户可以将多个模型和工具串联起来,以满足项目需求,所有操作均可在单一用户界面中完成。

LangChain 的优势包括:

  • 多样化的应用场景: LangChain 是一个 LLM、工具和集成的沙盒,用户可以将它们串联起来以满足特定的项目需求。

  • 多模态数据源: 虽然 LlamaIndex 支持图像和文本,但 LangChain 的媒体支持更加灵活。使用 LangChain 创建的应用程序可以从在线视频和 API 加载数据,以及图像和 PDF 文件。

  • 精细化控制: LangChain 的分步骤应用程序创建方法使用户能够在流程中每个环节的每一步最大限度地控制功能。

  • 上下文保留: 先进的内存管理功能意味着在 LangChain 中创建的应用程序可以参考以前的交互,并在更长的对话中保持准确性。

  • 复杂查询和数据结构: LlamaIndex 专为语义相似性而构建,而 LangChain 则允许用户组合多种搜索技术,例如添加关键词搜索。凭借其模块化界面、多模态支持和众多集成,LangChain 也能够更有效地处理复杂的数据结构。