免費全文 RAG 檢索增強 進階

PDF 進 RAG 前的清洗:頁首頁尾、表格與換行

RAG 效果差,有很高比例的原因出在 PDF 抽取階段就已經爛了。

RAG 檢索增強教程封面

抽取後的文字如果每頁都夾著「機密文件 第 12 頁 共 40 頁」,這些雜訊會進入每一個片段,稀釋語意也污染檢索。

四個必做的清洗

  1. 移除重複頁首頁尾:統計每頁的第一行與最後一行,出現頻率過高的直接刪。
  2. 修復斷行:PDF 常在行尾硬斷,把不是以句號結尾的換行接回去。
  3. 處理連字符:英文單字被斷成 develop-\nment,要合併。
  4. 表格另外處理:表格轉成純文字後幾乎不可讀,建議轉成 Markdown 表格或逐列敘述句。
import re, collections

def strip_running_heads(pages):
    first = collections.Counter(p.split('\n')[0].strip() for p in pages)
    noise = {t for t, c in first.items() if c > len(pages) * 0.6 and t}
    return ['\n'.join(l for l in p.split('\n') if l.strip() not in noise) for p in pages]

def fix_wraps(text):
    text = re.sub(r'(\w)-\n(\w)', r'\1\2', text)        # 連字符
    return re.sub(r'(?<![。!?:;\n])\n(?![\n])', '', text)  # 硬斷行

表格轉敘述句

表格最實用的處理是把每一列展開成一個完整句子,例如「月卡的開通天數為 30 天,金額為 NT$240」。這種形式在向量檢索與生成引用上都遠優於保留欄位對齊。

清洗完務必抽樣人工看十份。抽取工具在不同版面上的行為差異很大,統計指標看不出「整份文件順序錯亂」這種問題。
下一步

這個主題還有更深入的實戰教程

VIP 專區收錄 50 篇進階內容:架構設計、生產環境取捨、成本與合規。 每週五新增 3 篇。

看訂閱方案 → 先逛逛 VIP 專區