结构化输出提取
概述
大型语言模型(LLM)正在成为一种极其强大的技术,用于驱动信息提取应用。
信息提取的经典解决方案依赖于人力、(大量)手工编写的规则(例如正则表达式)以及定制的微调机器学习模型。
这类系统往往会随时间变得复杂,维护成本越来越高,增强也越来越困难。
LLM 只需向它们提供适当的指令和适当的参考示例,就能快速适应特定的提取任务。
本指南将向你展示如何使用 LLM 进行提取应用!
方法
使用 LLM 进行信息提取大致有 3 种方法:
-
工具/函数调用(Tool/Function Calling) 模式:一些 LLM 支持 工具或函数调用 模式。这些 LLM 可以根据给定的 模式(schema) 来组织输出。通常,这种方法最易于使用,并有望取得良好效果。
-
JSON 模式:一些 LLM 可以被强制输出有效的 JSON。这与 工具/函数调用 方法类似,区别在于模式是作为提示的一部分提供的。一般而言,我们的直觉是它比 工具/函数调用 方法表现更差,但别只信我们,请针对你自己的用例进行验证!
-
基于提示(Prompting Based):能够很好遵循指令的 LLM 可以被指示以所需格式生成文本。生成的文本可以下游使用现有的 输出解析器 或 自定义解析器 解析为 JSON 等结构化格式。这种方法可用于 不支持 JSON 模式或工具/函数调用模式的 LLM。这种方法适用范围更广,尽管效果可能不如针对提取或函数调用微调过的模型。
快速开始
前往 快速开始,了解如何使用 LLM 通过一个基本的端到端示例来提取信息。
该快速开始侧重使用 工具/函数调用 方法进行信息提取。
操作指南
- 使用参考示例:了解如何使用 参考示例 来提高性能。
- 处理长文本:如果文本无法放入 LLM 的上下文窗口,该怎么办?
- 处理文件:使用 LangChain 文档加载器和解析器从 PDF 等文件进行提取的示例。
- 使用解析方法:使用基于提示的方法,配合不支持 工具/函数调用 的模型进行提取。
指南
前往 指南 页面,查看一系列关于如何为提取用例获得最佳性能的独到指南。
用例加速器
langchain-extract (opens in a new tab) 是一个入门仓库,实现了一个简单的 Web 服务器,用于从文本和文件中使用 LLM 提取信息。它使用 FastAPI、LangChain 和 Postgresql 构建。你可以随意将其适配到你自己的用例。
其他资源
- 输出解析器 文档包含针对特定类型(例如列表、日期时间、枚举等)的各种解析器示例。
- LangChain 文档加载器 用于从文件加载内容。请参阅 集成 (opens in a new tab) 列表。
- 实验性的 Anthropic 函数调用 (opens in a new tab) 支持提供与 Anthropic 聊天模型类似的功能。
- LlamaCPP (opens in a new tab) 原生支持使用自定义语法进行约束解码,使得使用本地 LLM 输出结构化内容变得容易
- JSONFormer (opens in a new tab) 提供了另一种对 JSON Schema 子集进行结构化解码的方式。
- Kor (opens in a new tab) 是另一个提取库,可以向 LLM 提供模式和示例。Kor 针对解析方法进行了优化。
- OpenAI 的函数和工具调用 (opens in a new tab)
- 例如,参见 OpenAI 的 JSON 模式 (opens in a new tab)。