CM979B AI 協作研究|文獻架構建立與知識庫工具授課心得
CM979B AI 協作研究|文獻架構建立與知識庫工具授課心得

我想要談的是,為什麼今天需要在 DBA 博士班帶 RAG?我認為這有很深刻的時代意義。在這個年代,我們不太可能擺脫生成式 AI 了。在許多研究論壇或期刊上,都已經看到許多學者提到,現在投稿有一大堆都是生成式 AI 做出來的,連審稿也是一樣。我自己也是,我自己所做的研究與個案寫作,無處不讓生成式 AI 介入。

但是我總是很清楚知道它的邊界能力在哪裡,也很清楚在它所生成的文字裡面,有哪些核心的內容、原則跟資訊是我所供給的;我更清楚知道自己在什麼情況下將它視為能力的延伸,而在什麼情況下得向它擷取知識。然而,這些都還是很內隱的,所以我很感激在元智大學有機會可以帶這樣具獨創性的課程。

我在設計這一次 RAG 的課程時,思考怎麼做出一個低失敗率的練習,讓 DBA 的學生可以看到不同 RAG 策略會產生的結果,以及看出在 Gemini Notebook 策略為什麼可能仍然不夠、無法支持同學們的學術研究。

甚至我也想多談一點,為什麼學這件事情對事業經營也是重要的。畢竟大家都在組織裡面工作,既然在組織裡推動數位化,就不得不處理大量文件的數位化。處理完之後呢?要怎麼檢索?怎麼讓生成式 AI 有效地去使用這些資料?

所以無論是站在研究者的研究角度,或是在組織經營上的需要,我認為理解 RAG 都是非常重要的一件事。雖然它的技術門檻有點高,但也有賴於現在生成式 AI 的能力,幾乎可以用 one-shot 的方式就做出完整的提示詞,也可以讓 Codex 或 Claude Code 去執行 RAG 資料庫的建置,連長期維運也不是什麼太大的麻煩事。

在這種情況下,我們就不應該有心理罣礙,覺得這是自己能力所不及的。唯一的障礙,只在於理不理解到底這玩意兒是怎麼一回事,以及到底要怎麼有效應用在我們的工作歷程中。

只要打開了這一層心理罣礙,說真的,剩下的都是應用。而應用正是我們的價值所在:正是因為我們有不一樣的思考方式、有不一樣想試錯的案子,這時在一個較為可靠的基礎上去使用生成式 AI,我們就能期待得到更好的結果,不是嗎?

先讓同學反過來問 Gemini:你到底怎麼讀我的文件?

這堂課我沒有從技術名詞開始,而是先請同學打開自己的 Gemini Notebook,挑一份比較長、自己也比較熟的文件,然後反過來問 Gemini:你現在是用什麼方法切分這份文件的?

這個小練習很有意思。大家得到的回答都不一樣。我用付費版得到的說明很細,提到它會先保留原始頁面影像、把雙欄文件解析成 Markdown 標題、依大標題再往下切段落、圖表另外處理;同學用免費版多半只得到幾句概略的描述;也有人得到的是根據文件內容在回答問題,而不是在說明它自己的處理機制,這時就得換個說法重問。差異來自文件類型,也來自調用的模型。

我想讓同學親眼看到兩件事。第一,Google 在單篇文件的處理上確實成熟,雙欄、表格都有一套做法,它在極短時間內做的事情,其實就是我們上週練習的「先清理、再轉成 Markdown 保留結構」。第二,這一切都發生在一個我們看不見、也調不動的黑盒子裡。

我也拿自己的經驗給大家看。我在準備升等時,曾經把過去所有的歷程資料,總共 427 個來源,全部放進一本筆記本。當我請它從某個大類別裡找出一份特定研究案的文件並做分析時,結果幾乎不能用:錯誤很多,而且會鬼打牆,一直在同一份文件裡打轉,明明有好幾份相關文件就是找不到。課堂上也有同學分享他的做法:一次只勾選四篇,先各自產出結果,再把幾份結果合併。這個策略是可行的,但即使縮小範圍,它有時仍只讀其中一篇,你永遠不知道為什麼,也沒有任何調整的空間。

後來在 Colab 上實際建索引時,光是一種切法,三本書的索引就跑了 308 秒;四種切法全部建完約 19 分鐘。對照我們丟資料給 Gemini 幾乎是秒回,大家就能理解:硬體有它的極限,我推測,速度那麼快,多半是用降低精度換來的。少量文件用 Gemini Notebook 沒有問題;文件一多,就必須理解底層在做什麼。這正是要懂 RAG 的理由:問題出在提問被轉成語意的那一步、出在向量空間的比對,還是出在切分,只有看得見流程,才調得動。

切分,是 RAG 裡最容易被忽略、卻最關鍵的一步

RAG 的本質很簡單:先找,再回答。難的是「找對」。而找不找得對,很大一部分取決於文件怎麼被切分。

我用一個企業客服的例子說明。一份退貨規範裡,片段 A 寫的是「商品送達七日內可申請退貨」,片段 B 寫的是「依客戶需求製作的客製商品,不適用一般退貨程序」。如果系統切分時把兩段拆開,而檢索只帶回 A,那麼當客人詢問客製商品時,AI 客服就會很有禮貌地告訴他:七日內歡迎退貨。這就出包了。

切得太細,語意會散落在不同片段,AI 抓哪一段帶有很大的隨機性,而且檢索成本高;切得太粗,又會超過模型一次讀得進去的上限,或只讀前後段。所以永遠是在兩者之間取得平衡。課堂上我也請同學想想:如果是一篇商管論文,該怎麼切?論文本身是高度結構化的東西,從基本資料、摘要、緒論、文獻回顧、研究方法、結果到結論,每一節幾乎都可以獨立成段;如果還要再往下切,就讓相鄰片段之間保留一些重疊。這個討論的目的,是讓同學理解:切分策略取決於文件本身的邏輯,沒有一體適用的答案。

一個低失敗率的練習,以及數字告訴我們的事

為了讓同學真的能走完一次,我把 Colab 筆記本改了好幾版,也事先用自己清理好的書目資料庫當練習資料,讓同學只要在雲端硬碟新增捷徑、依序執行儲存格,就能從讀檔、前處理、切分、建索引,一路走到檢索與評估。

課堂版用三本研究方法書、三題黃金問題。結果很有教學效果:四種切分策略在三種檢索方式下,命中率全部都是 67%。漏掉的那一題,是用中文去問一本英文書。加上譯文重新檢索之後,那一題在四種切法下都從找不到變成找得到,三題全中。這一步讓同學很直接地看到:語言沒有統一,再好的切分策略都救不回來。

我在課前另外跑了一組比較完整的實驗:7 本研究方法書、20 題逐題回原文確認頁碼的黃金問題、7 種切分策略乘上 3 種檢索方式(關鍵字 BM25、向量、兩者混合)。幾個結果值得記下來:

  • 一頁一塊的切法表現最差,向量檢索只有 60%。原因是書稿平均一頁約 562 tokens,有 61% 的頁面超過向量模型 512 tokens 的上限,後半頁其實根本沒被讀到,送給模型的字數卻是遞迴切分的 2.6 倍。
  • 遞迴切分在向量檢索下達到 80%;「小塊檢索、命中後整頁交給模型」與語意切分,在混合檢索下也都是 80%。
  • 重疊並沒有幫上忙:片段多了 25%,向量檢索反而從 75% 掉到 70%。在混合檢索下,語意切分只比遞迴切分多中一題,卻多花約六分鐘計算。
  • 前處理的影響最大:簡體、繁體沒有統一時,關鍵字檢索從 75% 掉到 45%。
  • 跨語言題加上譯文之後,「小塊檢索加整頁」的整體命中率從 80% 提高到 100%。

我也特別提醒同學,這些數字不能拿來當通用排名:只有 20 題,一題就是 5 個百分點;題目由我審定,只測了一種向量模型。它的價值不在排名,而在示範一套評估方法。更重要的是,黃金問題之所以設計得出來,是因為這些書我讀過,我知道答案在哪一頁。研究者對文獻的掌握,正是用來檢驗 AI 的那把尺。

上下文、壓縮與交接:在一串對話裡寫完論文的風險

講到 AI 為什麼會「越用越笨」,我花了一些時間說明上下文視窗。每一次追問,模型都會把前面所有的問與答一起帶進來再回答;如果過程中反覆修正、部分對部分不對,到了第七、八輪,模型腦中塞滿的是互相矛盾的指令。我用父母教小孩來比喻:原則不一致時,你只能期待孩子夠聰明,自己分辨什麼情況適用什麼規則。

更需要留意的是工具的「壓縮記憶」。當內容快要超過上限,工具會自動摘要前面的對話,而它記住的可能正是錯的東西。很多人遇到的「怎麼跟你講過又忘了」,往往就發生在壓縮之後。

我看到不少老師試著在同一串對話裡,從文獻回顧、研究發現一路寫到全文。我給他們的建議很簡單:在第七、八輪時,請模型找出它某個觀點的出處,多半它會老實承認找不到,只是根據上下文推論。我自己的做法是,一個主題告一段落就請 AI 寫交接文件,或寫成規格書;要把同一套方法用到新主題時,就先寫交接,再用分支開出新的對話。

對組織經營的意義:不懂,就容易被吃定

回到組織。我和一家顧問公司正在合作內部知識管理與行政流程的專案,第一步就是先釐清他們有哪幾種資料。流程類資料(整理成報表、輸入系統的案件資料)結構清楚,依結構切分大概就夠;但會議紀錄、業務和客戶洽談的逐字稿,內容是混成一大塊的,就得用遞迴切分,或小塊檢索再看全貌,讓系統多花一點時間。

我也分享了一個讓我很感慨的例子。另一位客戶找廠商建 RAG,大量的表格資料卻用語意切分,切得亂七八糟,怎麼問都不準;廠商的回應是:可以,依你們想要的方式重做一次,再報價數萬。這就是不懂的代價。經營者不需要自己寫程式,但要懂到能判斷文件屬性、能追問切分策略、能要求一組黃金問題來驗收。

這堂課讓我想調整的地方

坦白說,這堂課的前段花了不少時間在排除環境問題:線上會議的權限、學校帳號與個人帳號的差異、Colab 筆記本要先複製到自己的雲端硬碟才能修改、捷徑要放在「我的雲端硬碟」第一層才找得到、資料讀取需要授權。到了生成階段,我自己的 API 額度用完,也剛好讓大家看到 API 費用和訂閱月費是兩筆不同的錢。下一次我會把這些前置檢查做成課前步驟,讓課堂時間更多留給策略比較與討論。

另外,原本規劃的 Wiki 化這次沒有時間講。我會在下一次課程補上:用 Obsidian 建立索引優先、每句主張附頁碼的文獻 Wiki,並示範把檢索做成同事也能使用的前端介面。講義裡我寫了一句話,也是我希望同學帶走的:RAG 負責找,Wiki 負責記。到了學期中,我會帶大家把自己的研究資料庫完整建起來,而且是真的可以跑、可以支持自己研究題目的資料庫。

說到底,這不是在學一項多厲害的技術。我們要的,是把論文好好寫完,讓自己的研究裡沒有亂七八糟的 AI 幻覺。知識工作者接下來面對的都是同樣的處境,差別不在知識存了多少,而在於我們怎麼用它。