Press "Enter" to skip to content

Tag: structured data

使用Langchain构建半结构化数据的RAG管道

介绍 检索增强生成(Retrieval Augmented Generation)已经存在一段时间了。许多工具和应用程序围绕这个概念进行了构建,比如向量存储、检索框架和LLMs,使得处理自定义文档尤其是具有Langchain的半结构化数据变得方便。处理长、密集的文本从未如此轻松而有趣。传统的RAG对于不结构化的文本重型文件(如DOC、PDF等)效果良好。然而,这种方法对于嵌入在PDF中的半结构化数据(如嵌入式表格)效果不佳。 在处理半结构化数据时,通常有两个问题。 传统的提取和文本分割方法无法处理PDF中的表格。它们通常会破坏表格,从而导致信息的丢失。 嵌入表格可能无法转化为精确的语义搜索。 因此,在本文中,我们将使用Langchain构建一个用于处理半结构化数据的检索生成(Retrieval Generation)流水线,以解决这两个半结构化数据的问题。 学习目标 了解结构化、非结构化和半结构化数据之间的区别。 对检索增强生成和Langchain进行简要回顾。 学习如何使用Langchain构建一个用于处理半结构化数据的多向量检索器。 本文作为数据科学博文马拉松的一部分发表。 数据类型 通常有三种类型的数据:结构化数据、半结构化数据和非结构化数据。 结构化数据:结构化数据是标准化的数据,遵循预定义的模式,例如行和列。SQL数据库、电子表格、数据帧等。 非结构化数据:与结构化数据不同,非结构化数据没有数据模型。数据是随机的,例如PDF、文本、图像等。 半结构化数据:它是前两种数据类型的结合。与结构化数据不同,它没有严格的预定义模式。然而,数据仍然基于某些标记保持着分层次的顺序,这与非结构化类型形成了对比。例如CSV、HTML、嵌入式PDF中的表格、XML等。 什么是RAG? RAG代表检索增强生成(Retrieval Augmented Generation)。这是为大型语言模型提供新信息的最简单方法。现在,让我们对RAG进行一个快速介绍。 在典型的RAG流程中,我们有知识来源,如本地文件、网页、数据库等,一个嵌入模型,一个向量数据库和一个LLM。我们从各种来源收集数据,拆分文档,获取文本块的嵌入并将它们存储在向量数据库中。现在,我们将查询的嵌入传递给向量存储,从向量存储中检索文档,最后使用LLM生成答案。 这是传统RAG的工作流程,适用于如文本等不结构化数据。然而,当涉及到半结构化数据时,例如嵌入在PDF中的表格,它通常无法表现良好。在本文中,我们将学习如何处理这些嵌入式表格。…

Leave a Comment