【Ragflow】25.Ragflow-plus開發日志:excel文件解析新思路/公式解析適配

引言

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.pswp.cn/diannao/86061.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86061.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86061.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VS2022下C++ Boost庫安裝與使用使用

一.Boost概述 1.簡介 Boost 是一個廣泛使用的 C 庫集合&#xff0c;提供了許多高質量、可移植、高效的工具和組件&#xff0c;被視為 C 標準庫的延伸。自 1998 年成立以來&#xff0c;Boost 已成為 C 社區的核心資源&#xff0c;許多 Boost 庫通過實踐驗證后被納入 C 標準&am…

內嵌式mqtt server

添加moquette依賴 <dependency><groupId>io.moquette</groupId><artifactId>moquette-broker</artifactId><version>0.17</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>…

php執行后報502,無錯誤提示的排查和解決

文章目錄 一、闡述問題二、開始排查1.執行代碼展示2.PHP層面排查問題3.系統層面排查問題1. 分析系統日志2. core dump 分析2.1 core dump 是什么2.2 core dump 配置 并 生成 core 文件2.3 gdb 解析 core 文件 4. 問題解決 三、贈送內容四、總結 一、闡述問題 這個問題花了我起…

MySQL 核心知識點解析

最近正在復習Java八股&#xff0c;所以會將一些熱門的八股問題&#xff0c;結合ai與自身理解寫成博客便于記憶 InnoDB 和 MyISAM 的區別 特性InnoDBMyISAM事務支持支持ACID事務不支持事務鎖機制行級鎖表級鎖外鍵支持支持不支持崩潰恢復有crash-safe能力無存儲結構聚簇索引非…

CppCon 2015 學習:Comparison is not simple, but it can be simpler.

What is comparison? 這段文字是從計算機科學、編譯器設計或系統優化的角度來定義和評價“比較&#xff08;comparison&#xff09;”這個操作&#xff1a; 1. Pervasive&#xff08;無處不在&#xff09; 比較操作在編程中極為常見&#xff0c;存在于&#xff1a; 分支語句&…

RocketMQ入門5.3.2版本(基于java、SpringBoot操作)

一、RocketMQ概述 RocketMQ是一款由阿里巴巴于2012年開源的分布式消息中間件&#xff0c;旨在提供高吞吐量、高可靠性的消息傳遞服務。主要特點有&#xff1a; 靈活的可擴展性 海量消息堆積能力 支持順序消息 支持多種消息過濾方式 支持事務消息 支持回溯消費 支持延時消…

VR線上展廳特點分析與優勢

VR線上展廳&#xff1a;特點、優勢與實際應用 VR線上展廳&#xff0c;作為虛擬現實&#xff08;VR&#xff09;技術在展示行業的創新應用&#xff0c;正逐步改變著傳統的展覽方式。通過模擬真實的物理環境&#xff0c;為參觀者提供身臨其境的展覽體驗&#xff0c;成為展示行業…

QT 5.9.2+VTK8.0實現等高線繪制

項目下載鏈接&#xff1a;QT5.9.2VTK8.0實現等高線繪制資源-CSDN文庫 示例如下&#xff1a; 主要代碼如下&#xff1a; #include "vtkRenderer.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkPo…

MySQL:忘記root密碼

修改配置文件&#xff1a; vi /etc/my.cnf## 修改配置文件 ##[mysqld] skip - grant - tables## 重啟 ##/etc/init.d/mysqld restart ## 或service mysqld restart## 登錄mysqld -u root -p -h 127.0.0.1USE mysql; UPDATE user SET Password password(123456) WHERE User r…

JSP、HTML和Tomcat

9x9上三角乘法表 乘法表的實現 <% page contentType"text/html;charsetUTF-8" language"java" %> <!DOCTYPE html> <html> <head><title>99 上三角乘法表</title><style>body {font-family: monospace;padding…

常用枚舉技巧:基礎(一)

文章目錄 常用枚舉技巧&#xff1a;基礎&#xff08;一&#xff09;LeetCode 1. 兩數之和思路Golang 代碼 LeetCode 2441. 與對應負數同時存在的最大正整數思路Golang 代碼 LeetCode 1512. 好數對的數目思路Golang 代碼 LeetCode 2001. 可互換矩形的對數思路Golang 代碼 LeetCo…

從混亂到秩序:探索管理系統如何徹底改變工作流程

內容摘要 在許多企業與組織中&#xff0c;工作流程混亂是阻礙發展的“絆腳石”。員工們常常被繁瑣的步驟、模糊的職責和溝通不暢等問題搞得焦頭爛額&#xff0c;工作效率低下&#xff0c;錯誤頻發。而與之形成鮮明對比的是&#xff0c;一些引入了先進管理系統的團隊&#xff0…

使用SSE解決獲取狀態不一致問題

使用SSE解決獲取狀態不一致問題 1. 問題描述2. SSE介紹2.1 SSE 的工作原理2.2 SSE 的事件格式規范2.3 SSE與其他技術對比2.4 SSE 的優缺點 3. 實戰代碼 1. 問題描述 目前做的一個功能是上傳多個文件&#xff0c;這個上傳文件是整體功能的一部分&#xff0c;文件在上傳的過程中…

華為×小鵬戰略合作:破局智能駕駛深水區的商業邏輯深度解析

當中國智能電動車競爭進入下半場&#xff0c;頭部玩家的合縱連橫正在重構產業格局。華為與小鵬汽車近日官宣的“戰略合作”&#xff0c;表面看是技術互補的常規操作&#xff0c;實則暗藏改寫行業游戲規則的深層商業邏輯。 一、技術破壁&#xff1a;從“單點突破”到“全棧協同”…

Tailwind CSS 實戰:基于 Kooboo 構建 AI 對話框頁面(六):圖片上傳交互功能

在 《Tailwind CSS 實戰&#xff1a;基于 Kooboo 構建 AI 對話框頁面&#xff08;五&#xff09;》 中&#xff0c;完成了語音交互功能的優化。本文作為該系列教程的第六篇&#xff0c;將聚焦于圖片上傳功能的開發。通過集成圖片上傳與預覽能力&#xff0c;我們將進一步完善 AI…

40. 自動化異步測試開發之編寫異步業務函數、測試函數和測試類(類寫法)

40. 自動化異步測試開發之編寫異步業務函數、測試函數和測試類&#xff08;類寫法&#xff09; 一、類結構設計解析 1.1 基類設計 class Base:async_driver None # &#x1f697; 存儲瀏覽器驅動實例async def get(self, url: str http://secure.smartbearsoftware.com/.…

面向開發者的提示詞工程④——文本推斷(Inferring)

文章目錄 前言一、情感&#xff08;正向/負向&#xff09;二、識別情感類型三、識別憤怒四、從客戶評論中提取產品和公司名稱五、一次完成多項任務 前言 面向開發者的提示詞工程——導讀 在這節課中&#xff0c;你將從產品評論和新聞文章中推斷情感和主題。 舉了個商品評論的例…

java day15 (數據庫)

進入數據庫的學習 DB 因為數據太多了&#xff0c;方便統一管理的軟件 操作就不用改代碼了&#xff0c;直接改數據庫則可&#xff1b; 命令就是sql語句 這些都是關系型數據庫&#xff0c;sql可以控制全部&#xff0c;至于具體的環境我以前就有安裝過了&#xff1b; 理解&am…

國標GB28181設備管理軟件EasyGBS遠程視頻監控方案助力高效安全運營

一、方案背景? 在商業快速擴張的背景下&#xff0c;連鎖店門店數量激增&#xff0c;分布范圍廣。但傳統人工巡檢、電話匯報等管理方式效率低下&#xff0c;存在信息滯后、管理盲區&#xff0c;難以掌握店鋪運營情況&#xff0c;影響企業效率與安全。網絡遠程視頻監控系統可有…

Python 字典(dict)的高級用法與技巧

今天我們繼續深入講解 Python 字典的 高級用法與技巧&#xff0c;包括&#xff1a; defaultdict&#xff1a;帶默認值的字典Counter&#xff1a;快速統計工具字典排序&#xff1a;按鍵或值排序合并字典&#xff08;傳統方式和 Python 3.9 新語法&#xff09;嵌套字典的安全訪問…