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

引言

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

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

示例数据节选

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

v0.3.0版本解析效果

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

表格解析新思路

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

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

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

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

import pandas as pd


def 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 blocks


if __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块的类型和关键词设定;如果能检索到,模型回答不出来,那就是模型本身的性能问题。

### 如何在 Windows 系统上安装 Ragflow-Plus 要在 Windows 上成功安装并运行 Ragflow-Plus,可以按照以下方法操作。以下是详细的说明: #### 1. 准备工作 为了能够在 Windows 环境中部署 Ragflow-Plus,需要先确认已安装 Docker Desktop 并配置好 WSL2 (Windows Subsystem for Linux)[^3]。 Docker 是一种容器化技术工具,能够帮助开发者轻松创建、部署以及管理应用程序环境。WSL2 提供了一个兼容的 Linux 子系统来支持 Docker 运行于 Windows 中[^4]。 #### 2. 安装 Docker Desktop 下载并安装最新版本的 Docker Desktop for Windows。确保启用 WSL2 后端支持,在安装过程中勾选 “Use WSL 2 based engine” 选项[^5]。 完成安装后重启计算机以使更改生效,并验证 Docker 是否正常工作: ```bash docker version ``` 如果命令返回有关客户端和服务端的信息,则表明 Docker 已经正确安装。 #### 3. 获取 Ragflow-Plus 镜像 假设 Ragflow-Plus 可通过官方镜像仓库获取或者由开发团队提供私有镜像地址。这里我们假定存在公开可用的 `ragflow-plus` 镜像名称为例演示拉取过程: ```bash docker pull ragflow/plus:latest ``` 此命令会从远程仓库下载最新的 Ragflow-Plus 版本到本地缓存区以便后续使用[^6]。 #### 4. 创建并启动 Ragflow-Plus 容器实例 定义必要的参数如端口映射、数据卷挂载路径以及其他特定需求设置之后执行如下指令初始化服务: ```bash docker run -d \ --name ragflow_plus_instance \ -p 8080:8080 \ # 替换实际使用的主机访问端口号 -v C:\path\to\data:/data \ # 将宿主目录绑定至容器内部指定位置存储持久化文件资料 -e ENV_VAR_NAME=value \ # 设置环境变量(如果有) ragflow/plus:latest ``` 以上脚本片段解释了如何基于先前所提到的基础之上进一步扩展功能特性的同时保持灵活性适应不同场景下的定制化要求[^7]。 最后一步非常重要的是检查新建立起来的服务状态是否健康在线运转良好: ```bash docker ps | grep ragflow_plus_instance ``` --- ### 注意事项 由于具体实现细节可能因项目迭代而有所调整,请始终参照官方文档或联系技术支持人员获得最权威指导建议[^8]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zstar-_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值