多文档RAG|一个结构化数据提取工具:Knowledge Table

多文档RAG|一个结构化数据提取工具:Knowledge Table

多文档RAG|一个结构化数据提取工具:Knowledge Table

原创 Johntill  2024年10月18日 11:50 北京

多文档提取和检索是一项艰巨的任务。将信息以结构化的方式进行映射以便于检索,其实比听起来要复杂得多。构建适用于多个文档的 RAG 系统尤为困难,尤其是当你希望确保 LLMs 返回的答案具有一定的细粒度,而不仅仅是QFS(查询聚焦摘要)任务时。为解决这一问题,找到一个基于表格的多文档提取和图谱创建工具:KnowledgeTable

点关注

公众号

www.zeeklog.com  - 多文档RAG|一个结构化数据提取工具:Knowledge Table

介绍 KnowledgeTable(知识表)

KnowledgeTable(知识表)是一款 WhyHow.AI 开源软件包,旨在简化从非结构化文档中提取和探索结构化数据(图结构)的过程。通过自然语言查询界面实现创建表格图表结构化知识表示。凭借可定制的提取规则精细的格式选项以及在用户界面中显示的数据来源追溯功能,KnowledgeTable能够适应很多应用场景。

www.zeeklog.com  - 多文档RAG|一个结构化数据提取工具:Knowledge Table
KnowledgeTable的目标是为商业用户提供类似电子表格的熟悉界面,同时为开发者提供灵活且高度可配置的后端支持。无论您处理的是几个文件还是上百份文档,都确保了与现有RAG应用无缝集成

为什么选择KnowledgeTable(知识表)?

一个优秀的RAG应用系统需要将非结构化数据转换为表格或图表等结构化格式。WhyHow.AI 开源了用于整理文档内容及元数据的工具:KnowledgeTable。这款工具界面友好,无论是技术人员还是非专业用户都能方便地使用它来探索和管理数据。

作为一款开源项目,KnowledgeTable可以根据实际具体需求进行调整。支持整合自定义模型工作流程设定提取规则,其灵活特性均能促进创新,并满足个性化要求。通过恰当的数据结构化处理,简化了数据提取步骤,帮助用户从非结构化信息中快速获取有价值的信息。

功能特性

具备额外的查询和记忆功能

块链接 - 将原始源文本块链接到答案,以便追踪和溯源。

自然语言提取 - 使用自然语言查询从非结构化文档中提取结构化数据。

自定义提取规则 - 定义规则来指导提取过程,并确保数据质量。

自定义输出格式 - 控制提取数据的输出格式。

过滤 - 根据元数据或提取的数据筛选文档。

导出为CSV或三元组 - 以CSV或图三元组的形式下载提取的数据。

链式提取 - 在提取问题中使用花括号引用先前的列,例如“{疾病}的治疗方法是什么?”。

产品优势

多文档准确性提升:相比ChatGPT 4.0(网页版)在多文档检索上的表现,我们的准确性提升了2.5倍,同时超越了Text2Cypher两倍,并优于GraphRAG。

基于规则的提取:通过提取规则和类型对开源多文档提取过程进行细致控制。

基于本体的查询引擎:提供直观的查询引擎,允许用户直接调用特定工具和列,从而无缝结合结构化和非结构化的检索。

基础概念

表格

www.zeeklog.com  - 多文档RAG|一个结构化数据提取工具:Knowledge Table

像电子表格一样,表格是一系列存储结构化数据的行和列。每一代表一个文档,而每一则代表通过一个问题提取并格式化的实体

表格的价值体现在几个方面:

对于商业用户而言,它是从大量文档集合中进行结构化信息提取的一种简便方法。

对于开发者而言,它是在KG-RAG系统中的一个中间步骤,用来解析一系列规则及文档中实体类型的本体控制值,这些都可以转化为图谱。

用于多文档RAG流程的后端处理,帮助创建易于在RAG系统中查询的结构化表示。

文档

每个文档是一个上传至KnowledgeTable中的非结构化数据源(如合同、论文或报告)。当您上传文档时,它会被分割成块,这些块会被向量化并打上元数据标签,然后存储在向量数据库中。

问题

问题是引导提取的核心机制。它定义了您希望从文档中提取哪些数据。

生成表、动作表和知识表是什么?

生成表:将静态数据库表转换为动态的、由AI增强的实体,能够自主生成和交互数据。

www.zeeklog.com  - 多文档RAG|一个结构化数据提取工具:Knowledge Table

生成表的schema

www.zeeklog.com  - 多文档RAG|一个结构化数据提取工具:Knowledge Table

动作表:创建用于用户提示的列,并自动生成API端点来解析和响应查询,LLM(大语言模型)生成的结果直接流向前端。

知识表:作为文档集合的存储库,形成可以集成到应用程序中的多模态上下文,并通过生成的元数据列增强检索系统的结构。

主要内容

www.zeeklog.com  - 多文档RAG|一个结构化数据提取工具:Knowledge Table

提取规则

www.zeeklog.com  - 多文档RAG|一个结构化数据提取工具:Knowledge Table

对提取内容的控制非常重要。需要了解文档中的某些信息,并希望通过尽可能多地提供上下文来改善提取过程。

目前支持的规则,以及将来会继续增加的规则包括:

Must Return:指返回的答案必须符合用户提供的值列表。例如,在医疗应用案例中,你可能已经有了一个罕见病名称列表,你希望能够加载并提取出来。给定的列表是详尽无遗的,返回的结果应该只反映列表中的内容。

May Return:可以给出一些示例,帮助大语言模型在执行提取时进行少量样本学习。提供的列表并不是详尽的,大语言模型可能会找到列表之外的例子。

Allowed of Responses:当你知道预期的响应数量时适用。例如,一个人被分配的ID数量。能够限制响应的数量有助于减少可能出现的幻觉现象。

随着该软件包的开源,你可以贡献其他类型的提取规则加入到代码库中,或者在自己的系统中运行时,调整最适合你的数据和流程的提取过程。

链式提取

你可以选择链接提取过程,这样前一列产生的值就可以定义并决定后续列的提取过程。例如,首先提取文档中提到的所有疾病,然后在随后的列中映射所需的药物。要在问题字段中引用另一列,只需标记与参考列名匹配的词即可,比如:@diseases。

如果你选择了"文本列表"或"数字列表",则可以将包含多个值的单元格拆分为单个值的多行,这使得链式提取变得更加容易。

审计性和来源引用

在RAG过程中,能够追踪提取的信息回到最初的向量信息块是非常基本的要求。对于每个单元格,可以看到答案来源的信息块。这提供了审计性,并且快速参考可以帮助必要时验证大语言模型输出的正确性。

这也是RAG系统中的一个关键步骤,需要访问底层的数据块来帮助构建最终返回给用户的答案。

应用场景

通过输入问题、规则配置和文档,KnowledgeTable就会根据输入处理数据并返回结构化输出。可能需要调整问题或规则设置以优化提取结果。

合同管理:提取关键信息,如当事方名称、生效日期和续签日期

财务报告:从年度报告或收益声明中提取财务数据

研究提取:从一系列研究报告中提取关键信息

元数据生成:通过对文件执行有针对性的问题来对文档和文件信息进行分类和标记(例如:这封电子邮件线程涉及哪个项目?)

可自定义扩展功能

KnowledgeTable构建得非常灵活和可定制,允许您根据工作流程进行扩展:

与您自己的数据库集成

创建自定义问题和规则

连接您的模型

使用自定义嵌入

扩展以处理更大负载

可选集成

非结构化API

KnowledgeTable提供了与非结构化API的可选集成,以增强文档处理能力。这种集成为多种文档类型的高级解析和提取提供了可能。

要使用非结构化API集成:

在 Unstructured.io (https://www.unstructured.io)注册获取API密钥

  1. .env文件中设置UNSTRUCTURED_API_KEY环境变量,或使用您的API密钥:
export UNSTRUCTURED_API_KEY=your_api_key_here
  1. 安装带有非结构化支持的项目:
pip install .[unstructured]

当设置了UNSTRUCTURED_API_KEY时,KnowledgeTable会自动使用非结构化API进行文档处理。如果没有设置密钥或遇到非结构化API的问题,系统将回退到默认的文档加载器。

注意:使用非结构化API可能会根据在Unstructured.io上的计划产生费用。

引用

https://github.com/whyhow-ai/knowledge-table

KnowledgeTable演示版本:https://knowledge-table-demo.whyhow.ai

关于我

点关注

www.zeeklog.com  - 多文档RAG|一个结构化数据提取工具:Knowledge Table

不迷路

www.zeeklog.com  - 多文档RAG|一个结构化数据提取工具:Knowledge Table

老贾探AI

专注于AI前沿技术分享,涵盖LLM、RAG、知识图谱、NLP工程实践及大数据领域。不定期发布技术文章与最佳实践。 ==> 欢迎关注,持续学习,共同成长 ~

62篇原创内容

公众号

往期推荐

Read more

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现 决策树算法介绍:原理与案例实现 一、决策树算法概述 决策树是一种基本的分类与回归方法,它基于树形结构进行决策。决策树的每一个节点都表示一个对象属性的测试,每个分支代表该属性测试的一个输出,每个叶节点则代表一个类别或值。决策树学习通常包括三个步骤:特征选择、决策树的生成和决策树的剪枝。 二、决策树算法原理 1. 特征选择 特征选择是决策树学习的核心。它决定了在树的每个节点上选择哪个属性进行测试。常用的特征选择准则有信息增益、增益比和基尼不纯度。 * 信息增益:表示划分数据集前后信息的不确定性减少的程度。选择信息增益最大的属性作为当前节点的测试属性。 * 增益比:在信息增益的基础上考虑了属性的取值数量,避免了对取值数量较多的属性的偏好。 * 基尼不纯度:在CART(分类与回归树)算法中,使用基尼不纯度作为特征选择的准则。基尼不纯度越小,表示纯度越高。 2. 决策树的生成 根据选择的特征选择准则,从根节点开始,递归地为每个节点选择最优的划分属性,并根据该属性的不同取值建立子节点。直到满足停止条件(如所有样本属于同一类,

By Ne0inhk
他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

手机拍照不够爽,带个单反又太重? 试试做个树莓派复古相机,还能自己编写处理算法的那种—— 成本不到700元。 没错,颜值很高,拍出来的照片也能打: 你也可以快速上手做一个。 如何制作一个树莓派复古相机 目前,这部相机的代码、硬件清单、STL文件(用于3D打印)和电路图都已经开源。 首先是硬件部分。 这部复古相机的硬件清单如下: 树莓派Zero W(搭配microSD卡)、树莓派高清镜头模组、16mm 1000万像素长焦镜头、2.2英寸TFT显示屏、TP4056微型USB电池充电器、MT3608、2000mAh锂电池、电源开关、快门键、杜邦线、3D打印相机外壳、黑色皮革贴片(选用) 至于3D打印的相机外壳,作者已经开源了所需的STL文件,可以直接上手打印。 材料齐全后,就可以迅速上手制作了~ 内部的电路图,是这个样子的: 具体引脚如下: 搭建好后,整体电路长这样: 再加上3D外壳(喷了银色的漆)和镜头,一部简易的树莓派复古相机就做好了。 至于软件部分,

By Ne0inhk
🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

是一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器。 集成了 SearXNG AI 搜索、开发工具集合、 市面上最流行的 AI 工具门户,以及代码编写和桌面快捷工具等功能, 通过模块化的 Monorepo 架构,提供轻量级、可扩展且高效的桌面体验, 助力 AI 驱动的日常工作流程。

By Ne0inhk
LibreChat 集成 Stripe 支付的奶妈级教程

LibreChat 集成 Stripe 支付的奶妈级教程

我们假设你已经熟悉基本的 React 和 Node.js 开发,并且正在使用 LibreChat 的默认技术栈(React 前端、Node.js 后端、Vite 构建工具,可能还有 Electron 桌面应用)。教程会特别考虑 Electron 环境下的适配问题(例如 macOS 中文路径或路由错误)。“奶妈级”带你从零开始实现支付功能(包括一次性支付和添加高级会员订阅) 教程目标 * 在 LibreChat 中添加支付页面,支持用户通过信用卡付款。 * 实现 Stripe 的一次性支付功能。 * (可选)扩展到订阅功能,管理高级会员状态。 * 解决 Electron 环境下的常见问题(如路由和路径解析)。 * 生成可公开推送的 Markdown 教程,方便社区参考。 前提条件 在开始之前,请确保你已准备好以下内容:

By Ne0inhk