LangChain 旨在处理语言模型应用中常用的多种类型的数据。它主要处理非结构化文本、来自数据库或 API 的结构化数据以及代码或聊天记录等特殊格式。通过提供处理、分割和转换这些数据类型的工具,LangChain 使开发人员能够构建高效地将语言模型与不同数据源集成的工作流程。
对于非结构化文本(最常见的输入类型),LangChain 支持来自文档、网页或用户输入的原始文本。它包括使用文档加载器(例如,TextLoader
,WebBaseLoader
)从 PDF、HTML 或纯文本文件等格式加载文本的实用程序。加载后,可以将文本分成块,以便语言模型进行处理,这对于摘要或问答等任务非常有用。例如,开发人员可以将一篇 10,000 字的文章分成较小的部分,使用模型嵌入每个部分,然后查询文档的特定部分。LangChain 还处理嵌入,允许将文本转换为数值表示,用于相似性比较或检索增强生成 (RAG) 等任务。
结构化数据(例如来自数据库的表或来自 API 的 JSON)是另一个关键重点。LangChain 提供了与 SQL 数据库(通过 SQLDatabase
)、pandas DataFrames 或 REST API 交互的工具,使语言模型能够与表格或分层数据交互。例如,开发人员可以使用 LangChain 将“显示 Q3 的销售数据”等自然语言查询转换为 SQL 查询,获取结果并将其格式化为自然语言响应。这弥合了非结构化语言模型输入和结构化数据系统之间的差距。此外,LangChain 支持结构化提示的模板化,允许动态注入数据(例如,将来自数据库的用户特定值插入到提示模板中)。
最后,LangChain 处理代码片段或对话历史等特殊数据类型。对于代码,它包括解析器和工具来验证语法,从而更易于使用模型生成或调试代码。对于基于聊天的应用程序,它管理消息链(用户和 AI 交互序列),从而在多个轮次中保留上下文。例如,使用 LangChain 构建的聊天机器人可以保留对话中的最后五条消息以保持连贯性。它还通过文档对象支持自定义数据类型,允许将元数据(例如,源 URL、时间戳)附加到文本,从而在知识库等应用程序中实现更丰富的检索或过滤。通过在单个框架下统一这些数据类型,LangChain 简化了构建将语言模型与外部数据源组合的复杂管道。