2026-05-05 AI 學習日誌

今日最有感的事

今天從早上一路撞牆撞到中午,主軸是「我的 Zotero / 教科書 RAG,PDF 轉 Markdown 的工具能不能升級?」這個看似簡單的問題。我先對 opendataloader-pdf(現用)、MarkItDown(微軟)、Docling(IBM)、Marker(Vik Paruchuri 的 OSS 學術論文殺手)做了同一篇 PDF 的對照測試,Marker 在文字品質、heading 結構、ligature 處理(把 還原成 fi)上看起來都贏一大截。我當下太興奮,直接決定全量遷移:1,024 篇 Zotero PDF + 10 本急診教科書全部丟給 Marker 重跑,派了兩個 background agent 同時開工。

兩小時後拉進度,才發現 Marker 在 Apple Silicon 上會踩到 Surya OCR 的 MPS bugindex out of bounds),教科書 10 / 10 本全滅,Zotero 跑了 102 篇有 78 篇失敗。改 TORCH_DEVICE=cpu 強制走 CPU 倒是能跑,但時間直接 ×10——意思是要燒 16–50 小時才能換到一個還沒驗證過真的對 RAG 召回率有幫助的版本。這代表我前面那張「Marker ⭐⭐⭐⭐⭐」的表是純看 spec、沒考慮平台相容性、沒考慮 rollback 成本、也沒做 pilot。真正值得看的是現有流程已經跑完 + 已經 ingest 完,候選工具只跑了一篇樣本就被我當作勝者。

最後的解法很反高潮:直接用 5 行 Python 對現有的 1,024 篇 markdown 跑 NFKC normalize,1 秒鐘修掉 43,982 個 ligature 連字符,再驗證 ASCII 版 vs fi fl 版的 BGE-M3 embedding——top-10 召回 100% 重疊、cosine similarity 差異 0.0000。BGE-M3 模型本身就已經做了 ligature normalize,等於我前面想做的整個 re-ingest 在 RAG 端根本沒收益。更直白地說:今天我差點為了一個視覺上比較漂亮、但對下游沒影響的指標,把整個 corpus 重跑一輪,外加被 MPS bug 卡到天荒地老。

教訓寫進 feedback memory 了:以後我說「想換工具」的時候,Claude 第一輪要先給「現有 vs 候選」對照表,欄位必須包含已知 bug / 平台相容 / pilot ≥ 5 篇樣本結果 / rollback 成本 / 對下游真實指標的 delta——而且在沒跑 ablation 驗證真實指標之前,禁止出現「game-changer」「全面遷移」這種字眼。對非工程師讀者解釋一下「ablation」:就是把那個改動拔掉、跟保留改動的版本做 A/B 對照,看下游指標到底有沒有變——醫學裡的 RCT 同一套邏輯。

另外晚上看到陶韻智在 X 分享的 Anthropic prompt engineering 9 段結構(task context / tone / background / detailed task / examples / history / immediate question / thinking step by step / output format),這個的高 ROI 用法不是每次手打 prompt 套全部,而是把它寫進 Claude.ai 的 Settings → Personalization 一次設定永遠生效——這是全域 system prompt,每一次對話都會自動帶。下次整理 Personalization 時要套這個架構。

今日收集的資源

陶韻智:Anthropic Prompt Engineering 9 段結構心法

王介立醫師:兩天自學架網站 + 自架 MCP server 給 GPT 讀私密筆記

Project Dashboard(自己的儀錶板)

comments powered by Disqus