快轉到主要內容

Ollama + Open WebUI設定RAG,建立知識庫強化語言模型能力,讀取PDF文件生成回應

· 民國113年甲辰年
· ·
分類   開源AI應用 大型語言模型
標籤   RAG Ollama LLM
目錄
Open WebUI與Ollama教學 - 點選展開系列文
6: 現在位置

檢索增強生成 (RAG) 是能夠擴充語言模型知識量的技術,在Open WebUI裡面這個功能叫做知識庫(Knowledge Base)

如果你已經玩過Open WebUI,應該會發現網頁界面是能夠上傳單個檔案叫語言模型分析的。

除了在對話的時候即時上傳檔案請語言模型分析之外,你也可以預先準備一些資料,上傳到Open WebUI的知識庫,並新增以該知識庫為主的語言模型,擴充它的腦容量。這樣語言模型在與你問答的時候,便會自動參考知識庫的檔案內容,有助於產生更精確的答案。

例如問:「游良福是誰?」預設情況下LLaMA 3模型沒有收錄他的資料,就會無法回答,或者產生幻覺亂生成答案。

但在Ivon準備幾份有關他事蹟的檔案給他掃描後,語言模型便能依照該檔案內容回答,還會指出他參考了哪些文件。

RAG跟上網搜尋有什麼差呢?雖然Open WebUI是能讓語言模型整理搜尋結果,但是參差不齊,撈到的資料可能會是道聽塗說。而你自己準備的資料,就是已經篩選過,精度較高又品質好的資訊。

1. 準備RAG資料的前提
#

Open WebUI接受許多檔案格式,舉凡txt、markdown、pdf、parquet都可以,為了方便處理我們以txt為例。

準備檔案前要注意文字長度。上下文(context length)越長,佔用資源越大。Ollama預設的上下文長度是2048個token,跑LLaMA 3 8B的模型運算的時候大約會佔4GB VRAM和8GB RAM。所以這限制了輸入檔案的長度,所有檔案總計不能超過1024個中文字元,否則語言模型會無法吸收。即使你用支援128K token的LLaMA 3模型,也會被Ollama的上下文限制住。

除非你在Open WebUI的網頁 → 管理員控制台 → 模型 → 進階參數,修改「上下文長度」,強制指示Ollama使用超過預設2048個token,才能夠搜尋更長的文本。

相應的VRAM與RAM佔用會上升,請注意你的系統是否能負荷。

2. 設定Open WebUI的RAG
#

  1. 以Docker架設Open WebUI

  2. 以Docker架設內容擷取引擎Apache Tika NER

  3. Open WebUI內建的嵌入模型不好用,點選Open WebUI左下角,切換到管理員設定 → Ollama模型,下載嵌入模型mxbai-embed-large

  4. 切換到文件頁面,設定嵌入模型引擎為Ollama,將嵌入模型改為mxbai-embed-large。內容擷取引擎設定為連線到Apache Tika伺服器。

  5. 再來注意查詢參數Top K的數值,代表一次最多能搜尋幾個檔案,預設是3個。若你需要強制語言模型查看所有檔案請設定跟你的檔案數目相同,否則搜尋時可能會跳過一些檔案導致不準確。

3. 新增知識庫與自訂語言模型
#

  1. 到Open WebUI主畫面,左上角工作區 → 知識,點選新增知識庫

  2. 在這裡上傳你要的txt檔案。上傳的檔案會經過處理後,儲存到向量資料庫。這裡的知識庫是可以隨時變動的,日後上傳到知識庫的新檔案都能讓語言模型取用。

  3. 接著切換到模型頁面,點選新增自訂語言模型,以現有的模型為基礎,這裡使用LLaMA 3。

  4. 在下面選取使用剛剛建立的知識庫。

  5. 嘗試與自訂語言模型問答,它就會優先搜尋知識庫的內容來回答。

  6. 如果你希望搜尋更長上下文,點選側邊的Ollama設定,調高上下文長度。

參考資料
#

Open WebUI與Ollama教學 - 點選展開系列文
6: 現在位置

相關文章

Linux用docker-compose部署Open WebUI + Ollama語言模型網頁界面
分類   開源AI應用 大型語言模型
標籤   Ollama LLM RAG Nvidia
Linux系統Ollama安裝教學,快捷部署AI大型語言模型到你的電腦,離線執行
分類   開源AI應用 大型語言模型
標籤   Ollama LLM RAG
Android手機用Termux Ollama跑任意大型語言模型
分類   開源AI應用 大型語言模型
標籤   Ollama LLM Android Termux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。