编者注:这篇文章是与 Docugami 团队合作撰写的。我们最近与他们以及 Rechat 举办了一次网络研讨会,讨论将 LLM 应用程序投入生产实际需要什么。您可以在 此处 找到网络研讨会的录像——这篇文章概述了他们讨论的内容,并更深入地探讨了他们的经验。
在 Docugami,多年来我们一直在使用、训练或微调语言模型,以实现我们将文档转换为数据的使命。我们最初开始使用较小的模型进行文本补全和 OCR 校正,以及用于序列标记任务的预训练。随着这些模型在规模和复杂性上呈爆炸式增长,我们继续在该领域进行投资,利用我们独特的文档 XML 知识图方法进行问答和检索增强生成 (RAG)。
从一开始我们就选择将语言模型托管在我们的云端,以确保客户数据的机密性。
我们很早就开始使用 LangChain,对其富有表现力的 API 和充满活力的社区印象深刻。LangChain Docugami 加载器 于 5 月份添加,LangChain 团队不断采纳社区反馈并持续扩展 LangChain 框架的响应速度令我们惊叹。
昨天,我们非常高兴在 LangChain 主办的 教育性网络研讨会 中与社区分享了我们的经验。我们的目标是分享我们在生产中使用 LLM 时遇到的一些实际挑战,以及我们如何在 LLMOps 流程中使用 LangChain,特别是新的 LangSmith (beta) 工具。
如果您错过了网络研讨会,没问题!以下是我们涵盖的要点摘要
1. 真实文档不仅仅是扁平文本: 我们详细描述了 Docugami 如何结构化地分块文档(扫描 PDF、数字 PDF、DOCX、DOC),并将复杂的阅读顺序(包括表格和多列布局)拼接在一起。我们讨论了人类如何创建文档以供其他人阅读,包括包含语义意义的视觉和结构线索,而这些线索通常会被纯文本系统忽略。
2. 文档是知识图谱: 我们简要展示了 Docugami 生成的分层文档 XML 知识图谱的一些示例。它包含深层层次结构、节点上的自定义语义标签以及可以使用 XML 数据模型以语义方式表达的所有复杂关系。我们通过代码展示了使用 Docugami 的 XML 知识图谱进行 RAG 如何产生更准确的结果,而这是简单的线性分块无法实现的。
3. 使用 LangChain 表达式语言构建复杂链: 现实世界的链可能会变得复杂,包括并行分支、输出解析器、少量示例、条件子链等等。我们通过一个使用 SQL 生成的快速示例进行了演示,其中使用了类似代理的修复程序来处理无效 SQL。我们讨论了如何在 LangSmith 工具中逐步调试这些复杂链,并分享了一些示例跟踪。
4. 调试生产环境中复杂链的故障: 当 LLM 部署到生产环境时,由于各种原因会出现问题。这可能像上下文长度溢出那样简单,也可能像输出解析器在某些边缘情况下抛出异常那样微妙。我们分享了一些技巧,使您在 LangSmith 中的运行跟踪更易于调试。
5. Docugami 基于 LangChain + LangSmith 的端到端 LLM 运维: 最后,我们总结了部署模型、在真实客户使用情况下监控模型、识别问题运行,然后修复这些运行(手动以及在其他 LLM 离线帮助下)的整体流程。这是一个新兴领域,鉴于我们之前运行类似模型运维(针对其他非 LLM 机器学习模型)的经验,我们很高兴与 LangSmith 合作改进工具。
幻灯片(包括代码示例和 LangSmith 跟踪的链接)在此。
您也可以在此处观看网络研讨会。
我们很高兴看到您使用 LangChain 和 Docugami 构建的产品。在 Twitter 上 @docugami 标记我们以分享您的结果和经验,或者直接联系我们: https://www.docugami.com/contact-us