【Ragflow】25.Ragflow-plus开发日志:excel文件解析新思路/公式解析适配

article/2025/6/8 19:41:11

引言

RagflowPlus v0.3.0 版本中,增加了对excel文件的解析支持,但收到反馈,说效果并不佳。

以下测试文件内容来自群友反馈提供,数据已脱敏处理。

示例数据节选

经系统解析后,分块效果如下:

v0.3.0版本解析效果

可以看到,由于该文件包含很多列信息,导致表格被截断,同一行信息完全错位,分散到了不同的chunk中。

表格解析新思路

其实问题就出在对表格文件的处理上,直接套用MinerU的文件处理管线,会先通过LibreOffice将文件转成pdf的形式,再进行表格区域识别。

其实,excel本身就是格式化的表格,这样的处理方式,就像是拿尼康八百定去拍人物写真,上重装备,还拍不好。

既然excel已经是格式化的文件,只需要用pandas去逐行读取就行了。

考虑一般表格都会有表头,每一行内容需要和表头关联,因此,每个chunk根据表头+当前行的形式划分即可,示例代码如下:

import pandas as pddef parse_excel(file_path):# 读取Excel文件df = pd.read_excel(file_path)# 获取表头headers = df.columns.tolist()blocks = []for _, row in df.iterrows():# 构建HTML表格html_table = "<html><body><table><tr>{}</tr><tr>{}</tr></table></body></html>".format("".join(f"<td>{col}</td>" for col in headers), "".join(f"<td>{row[col]}</td>" for col in headers))block = {"type": "table", "img_path": "", "table_caption": [], "table_footnote": [], "table_body": f"{html_table}", "page_idx": 0}blocks.append(block)return blocksif __name__ == "__main__":file_path = "test_excel.xls"parse_excel_result = parse_excel(file_path)print(parse_excel_result)

将这个解析逻辑融合进解析模块,再次解析,效果如下:

修正后的excel文件解析结果

关键词编辑技巧

虽然已经把表格格式处理好了,但进行检索测试,发现效果不好,关键词相似度为0。

直接检索的效果

上篇文章,已经详细分析过关键词相似度的计算方式。由于表格实际上是html格式的数据,这会间接导致原始关键词的提取存在问题。

实际上,ragflow原本就提供了一种为chunk块编辑关键词的方式。

双击chunk,可以对关键词进行自定义设置。

比如,我设定该chunk的关键词为某学员姓名,再次检索此关键词,关键词相似度就变成了100。

编辑完关键词后的检索效果

用对话模型进行测试,模型能正确检索回答。

公式解析适配

之前有群友问过:为什么解析文件时,会过滤公式的chunk。

我当时给出的回答是这样:公式都是由数学符号组成,本身和问题不会具备相似性。比如,正常问题通常会问xx公式,但不会把公式原本的形式当成问题去问。这就会导致将公式变成解析块会毫无意义,因为压根不会被检索出来。

但是利用关键词编辑,就可以让公式chunk具备实际意义,因此将公式chunk添加进解析结果。

以下是一个包含公式的文件解析结果:

2-3公式(假设作为一个公式的具体名字)为测试文本进行检索,是得不到任何结果的。

利用关键词编辑,为其添加关键词:

再次检索,就可以顺利检索出来。

用问答模块测试,也可以正常显示。

总结

本文对表格和公式两类元素进行调优测试,不难发现,对于rag系统来说,检索是至关重要的环节。

想要效果好,就需要对每一个块进行精调。

因此,在进行对话测试前,检索测试是必要环节:如果检索不出来,那就要排查chunk块的类型和关键词设定;如果能检索到,模型回答不出来,那就是模型本身的性能问题。


http://www.hkcw.cn/article/xUxWToHWYG.shtml

相关文章

SoloSpeech - 高质量语音处理模型,一键提取指定说话人音频并提升提取音频清晰度和质量 本地一键整合包下载

视频教程&#xff1a; 一个强大的语音分离和降噪软件 SoloSpeech 是由约翰霍普金斯大学、香港中文大学、南洋理工大学、清华大学及布拉格理工大学等多所高校共同主导开源的一个创新的语音处理项目&#xff0c;旨在解决在多人同时说话的环境中&#xff0c;准确提取并清晰呈现特定…

解锁Java多级缓存:性能飞升的秘密武器

一、引言 文末有彩蛋 在当今高并发、低延迟的应用场景中&#xff0c;传统的单级缓存策略往往难以满足性能需求。随着系统规模扩大&#xff0c;数据访问的瓶颈逐渐显现&#xff0c;如何高效管理缓存成为开发者面临的重大挑战。多级缓存架构应运而生&#xff0c;通过分层缓存设…

WinRAR 6.24 (64-bit) 的详细安装步骤(适用于 Windows 系统)

1. 下载安装文件 WinRAR下载链接&#xff1a;https://pan.quark.cn/s/7cc02bd4ebb5 2. 运行安装程序 双击下载的 WinRAR-6.24-final-x64.exe 文件。 若出现 用户账户控制&#xff08;UAC&#xff09; 弹窗&#xff0c;点击 “是” 允许安装。 3. 设置安装选项 ① 选择安装路…

YOLO12 改进|融入 Mamba 架构:插入混合模块Hybrid Module 像素和补丁双层面进行交互学习,提升小目标 多尺度

图像修复需平衡局部纹理还原与全局语义连贯。传统 CNN 受限于感受野&#xff0c;难以建模长程依赖&#xff1b;Transformer 虽能捕获全局交互&#xff0c;但二次计算复杂度使其在高分辨率场景效率低下&#xff0c;且分块处理易丢失细节。Mamba 作为高效序列模型&#xff0c;可线…

LangChain4j之AiService源码分析

这一节我们主要理解的逻辑为&#xff1a; 代理对象的创建流程代理对象的方法执行流程 代理对象的创建流程 创建代理对象是通过AiServices.create(Coder.JavaCoder.class, model)进行的&#xff0c;由于AiServices是一个抽象类&#xff0c;源码中有一个默认的子类DefaultAiSer…

多合一箱变保护测控装置,助力箱变实现“无人值守,少人值班”

箱式变压器&#xff08;简称“箱变”&#xff09;将传统变压器集中设计在箱式壳体中&#xff0c;因其结构紧凑、安装简单、运行稳定等优势被广泛应用于光伏及风电系统。但是&#xff0c;由于箱变安装位置偏远且分散、运行环境恶劣&#xff0c;箱内设备种类多、需要实时掌握运行…

国际Modelica协会主席Dirk Zimmer博士到访同元软控,共话Modelica技术未来

5月28日&#xff0c;国际Modelica协会主席Dirk Zimmer博士到访同元软控苏州总部&#xff0c;双方围绕Modelica技术未来发展与开放生态建设&#xff0c;展开了深入的探讨与交流。 左&#xff1a;Modelica协会主席Dirk Zimmer博士 右&#xff1a;同元软控董事长周凡利 01 Dirk …

【论文笔记】High-Resolution Representations for Labeling Pixels and Regions

【题目】&#xff1a;High-Resolution Representations for Labeling Pixels and Regions 【引用格式】&#xff1a;Sun K, Zhao Y, Jiang B, et al. High-resolution representations for labeling pixels and regions[J]. arXiv preprint arXiv:1904.04514, 2019. 【网址】…

Redis:常用数据结构 单线程模型

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Redis &#x1f525; 常用数据结构 &#x1f433; Redis 当中常用的数据结构如下所示&#xff1a; Redis 在底层实现上述数据结构的过程中&#xff0c;会在源码的角度上对于上述的内容进行特定的…

HTTP连接管理——短连接,长连接,HTTP 流水线

连接管理是一个 HTTP 的关键话题&#xff1a;打开和保持连接在很大程度上影响着网站和 Web 应用程序的性能。在 HTTP/1.x 里有多种模型&#xff1a;短连接、_长连接_和 HTTP 流水线。 下面分别来详细解释 短连接 HTTP 协议最初&#xff08;0.9/1.0&#xff09;是个非常简单的…

【Typst】1.Typst概述

概述 Typst是一种用于排版文档的标记语言&#xff0c;可以用于排版各种精美的论文、文章、书籍、报告和作业等。它是LaTex的精神续作&#xff0c;但是运行环境和编译速度都要更简单、更快捷。 它设计了一种脚本结合简单的标记语法实现复杂的排版效果。并且支持模板创建、文件…

预警功能深度测评:系统如何降低设备突发故障率?

在设备密集型行业中&#xff0c;设备突发故障不仅会导致生产停滞&#xff0c;还可能引发安全事故&#xff0c;给企业带来巨大损失。设备管理系统凭借其强大的预警功能&#xff0c;成为众多企业降低设备突发故障率的选择工具。本文将深度测评该系统的预警功能&#xff0c;探讨其…

ABAP设计模式之---“高内聚,低耦合(High Cohesion Low Coupling)”

“高内聚、低耦合”是面向对象编程中非常重要的设计原则&#xff0c;它有助于提高代码的可维护性、扩展性和复用性。 1. 初衷&#xff1a;为什么会有这个原则&#xff1f; 在软件开发中&#xff0c;随着业务需求的复杂化&#xff0c;代码难免会变得越来越庞大。如果开发者将一…

贪心算法应用:边着色问题详解

贪心算法应用&#xff1a;边着色问题详解 贪心算法是一种在每一步选择中都采取当前状态下最优的选择&#xff0c;从而希望导致结果是全局最优的算法策略。边着色问题是图论中的一个经典问题&#xff0c;贪心算法可以有效地解决它。下面我将从基础概念到具体实现&#xff0c;全…

基于 Amazon Q Developer CLI 和 Amazon Bedrock Knowledge Bases 实现智能问答系统

1. 引言 传统企业通常将常见问题&#xff08;FAQ&#xff09;发布在网站上&#xff0c;方便客户自助查找信息。然而&#xff0c;随着生成式 AI 技术的迅速发展与商业渗透&#xff0c;这些企业正积极探索构建智能问答系统的新途径。这类系统不仅能显著提升客户体验&#xff0c;…

ElasticStack对接kafka集群

背景 在当代数字化浪潮中&#xff0c;日志数据的高效处理对于企业运维监控和数据分析至关重要。本博文聚焦于ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;技术栈与Kafka集群的深度对接&#xff0c;旨在探讨如何通过这一架构优化&#xff0c;实现高效、可靠且可…

【云计算】基础篇,含云测试

一、云计算中的底层原理 1.1 数学原理 云计算的高效运行依赖于多种数学原理的协同支撑,其核心数学原理: 1.1.1、分布式计算的数学基础 ​分治与并行模型​ ​MapReduce​:将大数据集分割为独立子任务(Map阶段),通过哈希函数分发到分布式节点并行处理,再聚合结果(Redu…

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验

高效易用的 MAC 版 SVN 客户端&#xff1a;macSvn 使用体验 下载安装使用总结 最近有个项目要使用svn, 但是mac缺乏一款像 Windows 平台 TortoiseSVN 那样全面、高效且便捷的 SVN 客户端工具, 直到博主找到了该工具本文将结合实际使用体验&#xff0c;详细介绍 macSvn工具的核心…

从0到1认识EFK

一、ES集群部署 操作系统Ubuntu22.04LTS/主机名IP地址主机配置elk9110.0.0.91/244Core8GB100GB磁盘elk9210.0.0.92/244Core8GB100GB磁盘elk9310.0.0.93/244Core8GB100GB磁盘 1. 什么是ElasticStack? # 官网 https://www.elastic.co/ ElasticStack早期名称为elk。 elk分别…

TDengine 的 AI 应用实战——运维异常检测

作者&#xff1a; derekchen Demo数据集准备 我们使用公开的 NAB数据集 里亚马逊 AWS 东海岸数据中心一次 API 网关故障中&#xff0c;某个服务器上的 CPU 使用率数据。数据的频率为 5min&#xff0c;单位为占用率。由于 API 网关的故障&#xff0c;会导致服务器上的相关应用…