前面提到,我希望做一個自己的知識庫,把平常看到的文章、GitHub 專案,或其他覺得有用的知識存起來。
不過我希望留下來的,不只是名稱跟網址。我更想知道這個東西可以做什麼、適合用在哪些情況,下面再有一些說明。這樣之後回來看,除了可以找資料,也可能突然想到:「這個好像可以拿來處理我現在遇到的問題。」
在摸索的過程中,我接觸到了 RAG。
當初看到 RAG 時,我以為它是透過標籤把資料分類,讓 AI 比較容易找到正確的內容,也可以減少幻覺。
這次重新了解後,才發現自己把幾件事情混在一起了。
RAG 的全名是 Retrieval-Augmented Generation,中文叫「檢索增強生成」。我現在的理解是:先讓系統找出與問題相關的資料,再把這些資料交給 AI,讓它參考內容整理回答。
例如,我存過一些 PDF 文字擷取工具,後來問知識庫:
有沒有工具可以幫我把 PDF 裡面的文字整理出來?
系統會先找相關資料,再讓 AI 根據找到的內容回答。如果只是列出幾篇文章的標題和連結,那是搜尋;接著讓 AI 參考資料整理回答,才完成這裡說的 RAG 問答流程。
這個過程不一定需要標籤,也可以透過文章內容或語意來找資料。
我後來也串接了 NotebookLM,希望替知識庫補充更多內容,讓原本比較簡短的資料有更多說明。
但實際使用後,有幾筆資料補出了完全不相關的東西。
回頭查看歷程筆記,有一個很明顯的例子:原本是 RAG 文章裡的「主要好處」,最後卻補進了規律運動、拍打功之類的養生資訊。另一個叫「運作流程」的章節,也被補成公司部門權責和交期管理。
資料是變多了,但跟原本想保存的知識沒有什麼關係。
從紀錄來看,當時補強流程只拿子章節的標題去搜尋,沒有一起帶上它屬於哪篇文章的背景。
只看到「主要好處」,其實也不知道是在講什麼的好處。原本放在 RAG 文章下面很清楚的標題,單獨拿出去搜尋,就可能跑到其他方向。
歷程筆記記錄的修改,是把母文章標題和這筆資料的摘要一起提供給補強流程,讓它知道目前在處理什麼主題。
另外也加強了相關性檢查:找到的內容如果跟原本主題對不上,就不要繼續寫進去。
依照當時的重跑紀錄,「主要好處」和「運作流程」後來都補回了 RAG 相關內容;另外兩筆找不到合適依據的資料,則被拒絕補入。
這部分實作是 AI 協助完成的,我目前還沒有逐行弄懂程式。不過這次重新看紀錄,至少讓我理解了這個調整的目的:要讓補強流程知道這筆資料的背景,也要能在資料不適合時停下來。
這幾筆結果有改善,但還不能因此認為之後都不會再補錯。
我還是希望保留。
一方面,我想自己點選標籤來瀏覽資料;另一方面,也希望系統在找資料時,可以利用標籤縮小範圍。至於目前程式有沒有完整做到這兩件事,還需要繼續確認。
現在我會把它們分開理解:
我也重新理解了「減少幻覺」這件事。當找到的資料正確、相關,而且 AI 的回答有依照資料,RAG 才有機會減少沒有根據的內容。如果補進知識庫的資料已經偏題,後面又把它拿來回答,還是可能出錯。
今天還沒有把所有技術都弄懂,但至少釐清了原本混在一起的概念。接下來除了繼續把資料存進去,我也想學會怎麼確認:存下來的內容,真的能幫助未來的自己找到需要的答案。