本文將探討如何利用開源的語言模型,結合檢索增強生成(RAG)技術於本地進行部署,並了解LLM與RAG的運作原理。透過結合Ollama及其他開源工具,一步一步建立一個具備實用功能的智慧資訊顧問,讓大家掌握如何運用免費資源打造屬於自己的語言模型系統。
人工智慧(AI)技術的迅速發展,語言模型成為了人們日常生活中不可或缺的工具,透過網路,就能快速取得各類知識。例如,在ChatGPT簡單地輸入問題,就能夠透過相關字檢索與快速的篩選搭配大型語言模型(LLM)技術給予符合使用者需求的回應,這樣的模式間接地改變了人類與網路之間的互動,使「搜尋」變得更具交流性與便利性。其中,Ollama提供一個簡單、輕量且可擴展的本地大型語言模型運行平台,讓使用者能在個人電腦上部署及操作語言模型,而不依賴雲端服務,確保本地資料不會向外網拋送。
透過本地部署的語言模型工具如Ollama,便能打造出專屬的智慧語言顧問,根據自身領域與使用情境進行客製化設定,既能掌握資訊安全,也能提升互動品質與效率。
越來越多的企業也開始陸續採用Ollama這類的開源語言模型工具進行本地部署,特別是在需要強化資料隱私的情境中。
金融產業與資安顧問處理大量敏感資訊,使用雲端AI工具可能面臨資料外洩風險,且無法滿足合規要求。Ollama支援完全本地部署,確保資料不須離開內部網路。本文將帶領大家了解「開源語言模型工具」的應用,以及如何利用這項工具創造一個獨一無二,屬於自己的「ChatGPT」。
背景知識說明
在實際動手之前,先介紹相關的背景知識。
何謂智慧語言模型
所謂的「智慧語言模型(Intelligent Language Model)」一般是指ChatGPT、Gemini、Claude等基於大型語言模型(LLM)所打造的AI系統。這類模型透過深度學習技術,從大量文本資料中學習語言模式、語意關聯與知識結構,進而具備以下能力:
能理解人類語言的意思與上下文,例如「我今天很累」與「我今天很開心」的情緒差異。即使有語意不清或未說明完全的情況,智慧語言模型依舊能夠藉由上下文進行解讀並給予可能的回應。
能撰寫文章、回答問題、改寫句子、翻譯語言,甚至創作詩詞或程式碼。
能根據語境進行判斷與推論,例如「如果今天下雨,我就不出門」這類條件句模型能辨識出「下雨」是條件、「不出門」是結果,並理解其因果關係。此外,當使用者輸入的語句中出現錯字或語意不完整時,模型也能根據上下文進行推敲或補全。
智慧語言模型具備記憶對話上下文(Context)的能力,能進行連貫且有邏輯的互動。例如,當使用者先說「我要吃麻辣燙!」,接著問「你想吃嗎?」模型能理解這個問句的受詞是「麻辣燙」並根據前後語境給出合理回應。這種上下文記憶能力,讓語言模型不只是單句回應而是能像人類一樣參與多輪對話,理解前後關係、情緒變化與語意指涉,提升互動的自然性與實用性,傳統語言模型與LLM的比較如表1所示。
LLM(Large Language Model)又稱「大型語言模型」,是一種基於深度學習的自然語言處理技術。可以將其視為一個看過數十億乃至數千億的文章、網頁、對話紀錄等,並且仔細分析其語句背後的邏輯概念與使用時機,加以學習、推理、運算以進行複雜語言推理與生成,使用Transformer架構,將文字切成Token並進行關聯性分析。
簡單來說,可以將一段文字想像成一串拼圖,而Token就是把文字切成一小塊一小塊的拼圖,例如「我想要吃麻辣燙!」,Token可能就是「我」、「想要」、「吃」、「麻辣燙」。而Transformer架構就是一位很厲害的作家,他會觀察這些Token之間的關係與語意,並進行排序與組合。以這個例子來說,一個句子通常由主詞、動詞、受詞構成,Transformer就能判斷出「我」是主詞、「想要吃」是動作、「麻辣燙」是受詞,進而生成一個語法正確、語意清晰的句子,流程圖如圖1所示。
圖1 Transformer與Token的概念。
Transformer架構不只能分析與Token之間的關係,還能對語句進行預測,例如使用者輸入「我想要吃」,其能預測接下來會說「麻辣燙」、「三明治」或「酸菜魚」等可能的選項。由上述可知,LLM是一個強大的語言模型,能夠自然且流暢地進行溝通、交流與回應,它具備處理語意、推理邏輯與生成文字的能力,在多種場景中展現出高度智慧。然而,LLM雖能針對問題進行回應,但若使用者所提出詢問,未能提供足夠的背景資料或參考數據,模型便可能產出缺乏實質意義的回應。這就像是一位擅長彈奏鋼琴的音樂家,若只告訴他一首歌的名稱,卻沒有提供樂譜,他也只能憑印象與經驗自由發揮,難以準確演奏原曲。
常用的大型語言框架
接下來,介紹幾種常用的大型語言框架。
簡單來說,Ollama是一個開源語言模型工具,讓使用者可以在個人電腦上輕鬆地下載與操作LLM,最重要的是不需要依賴雲端服務,今天使用者上網,內部網路與外部網路連接本身就有風險。一旦資料在傳輸過程中經由外部網路,便可能面臨被竊取或遭竄改的風險。因此,許多企業與機構為了降低資安威脅與確保法規合規,傾向採用Ollama這類可自行部署且在本機獨立運行的開源工具。
Ollama的運作方式與使用非本地部署的語言模型有所不同。當使用非本地部署的語言模型時(如ChatGPT、Copilot等),提問的提示詞(Prompt)會先送出至雲端伺服器,由遠端的語言模型進行運算與處理,然後再將結果回傳給使用者。舉例來說,當企業在進行資安防禦時,使用者向非本地部署的語言模型提出問題,那麼相關資料勢必會經由外網傳送到雲端伺服器。即使服務提供商再三保證「絕對保密、絕對安全」,也不能完全百分百地保障安全。
Llama.cpp是一個讓大型語言模型能夠在本地端高效率運行的工具。它的核心特色在於透過量化(Quantization)與最佳化運算方式,讓模型不必依賴重量級的AI框架,也不一定需要高階GPU才能執行。雖然模型仍會受到硬體規格限制,但像LLaMA、Mistral等中小型模型,通常在一般筆電或桌機的CPU上就能順利運作,甚至能在完全離線的環境中使用。
許多本地AI解決方案(例如Ollama)本身就是建立在Llama.cpp的技術上,負責載入、量化與推論模型。可以說,Llama.cpp的角色就是替大型語言模型「瘦身」並提升執行效率,讓更多人可以不依賴雲端資源,也能在自己的電腦上使用多種語言模型,Llama.cpp的相關介紹如表2所示。
GPT4All是一套能夠在個人電腦上使用開源語言模型的工具,它提供完整的桌面應用程式,不需要連網,也不必依賴高階顯卡即可運行(實際速度仍會依模型大小與硬體而定)。只要下載程式與想使用的模型,就能像ChatGPT一樣進行聊天、問答或資訊查詢,而且所有資料都留在本地端,不會外傳。它支援多種開源模型(如LLaMA、Mistral、GPT-J等),操作方式簡單,也具備圖形化介面,非常適合一般使用者或開發者做本地AI的快速測試。簡單來說,GPT4All就像是一個「本地版的ChatGPT」,主打安全、隱私與易用性,讓使用者能在離線環境中也能方便地運用AI模型。
TensorRT-LLM是NVIDIA推出的高效語言模型推理框架,專門用來加速大型語言模型(LLM)在GPU上的執行。它的主要目的,是讓LLaMA、GPT、Mistral等模型能在NVIDIA GPU上以更快速度、更低延遲、更高吞吐量的方式運作,非常適合需要高效能的應用情境,例如企業級聊天機器人、即時問答系統或多使用者併發的服務。
可以把TensorRT-LLM想像成「語言模型的超級加速器」,專門為NVIDIA GPU設計。透過量化、圖最佳化(Graph Optimization)、Kernel Fusion等多種技術,它等於替模型裝上一個效能渦輪,能大幅縮短推理時間。許多原本需要數秒才能生成的回答,在經過TensorRT-LLM加速後,延遲往往能降到非常低的程度,帶來更即時的互動體驗。常見的四大語言模型框架的比較,如表3所示。
檢索增強生成(RAG)
緊接著,介紹「檢索增強生成(RAG)」及其優缺點。
檢索增強生成(Retrieval-Augmented Generation,RAG)是一種結合「知識檢索」與「語言生成」的AI技術,讓語言模型在回答問題時能參考外部資料庫,產出更準確、有根據的回應。LLM雖然具備語言生成的能力,但倘若沒有給它足夠的背景知識,就容易造成「瞎回」的問題,也就是產生不準確、空泛甚至錯誤的回答。該如何避免這樣的事情發生?很簡單,那就是提供足夠且具體的資料給模型參考,讓它在回應時可以像Open Book一樣找資料。不再只能憑記憶或是本身預訓練的向量進行作答,而是能查閱資料、理解內容後再進行回答,大幅提升準確度與可靠度。
相信大家在使用ChatGPT時常遇到無法即時更新資訊或無法引用企業內部資料的狀況,而RAG正好能夠適度緩解了這樣的問題,可以定期投入新資料於資料庫,這樣在進行檢索時就不會有資料「資料不足」或「尚未更新」的情況。
向量資料庫是一種專門用來儲存和搜尋「語意向量」的資料庫,常見於語言模型應用中,像是語意搜尋、推薦系統或RAG架構。它的運作方式是先將文字、圖片等資料轉換成多維向量,並儲存起來,當使用者提出查詢時,系統會將問題也轉成向量,並比對資料庫中最相近的向量,找出語意最相關的內容。這種搜尋方式比傳統關鍵字更能理解語意。表4為常見的向量資料庫工具。
RAG的優點在於能有效提升語言模型的回答準確性與可信度,並降低AI幻覺的風險。它支援即時與動態的知識更新,只要更新知識庫內容,模型便能掌握最新資訊,無需重新訓練。RAG架構也能針對冷門或特定領域建立專屬知識庫,補足語言模型訓練資料的不足,並在回答時附上資料出處,方便驗證與引用,提升透明度與信任感。由於不須頻繁微調模型,只要維護知識庫即可,大幅節省時間與資源,是打造高可信度AI系統的理想選擇。
RAG的缺點在於需要整合語言模型、向量資料庫與檢索模組,因此系統部署與維護相對複雜,成本也較高。如果檢索到的資料不準確或不相關,生成的回答依然可能出現錯誤;即使具備檢索輔助,語言模型仍可能誤解內容而造成不當回應。此外,檢索與生成屬於兩個步驟,可能增加回應時間,不利於需要低延遲的應用。為了維持準確性,知識庫也需要定期更新與清理,避免過時或錯誤的資訊影響結果。
RAG、Fine-tuning和Post-training是三種讓語言模型變得更聰明的方式。RAG會在回答前先查詢資料庫,能夠即時更新知識並提升準確性,而且不需要修改模型本身。Fine-tuning則是利用特定資料重新訓練模型,使它更理解某個專屬領域,不過成本較高,知識更新也較慢。而Post-training是透過調整提示或設定輸出方式來改變模型的回答,不改動模型參數,操作簡單,適合快速調整語氣或格式。三者可以依需求單獨使用,也能搭配應用。
若用比喻來說,RAG就像「開書考」,模型回答前會先查資料。Fine-tuning像是「補習班訓練」,讓模型重新學習特定領域的知識。Post-training則像「改作文格式」,不改內容,只是調整表達方式,表5為這三種技術的差異比較。
如何建立RAG知識庫,整合可信資安情資來源
可以透過幾個常見且可信的資安情資平台,作為RAG架構的知識庫來源,讓語言模型在回答資安問題時能引用最新、標準化的資訊,像是:
OWASP是全球知名的應用程式安全非營利組織,致力於推廣開放且可被大眾信任的資訊安全指南、標準與實務。其中最廣為業界採用的內容是OWASP Top 10,其彙整最常見與風險最高的Web弱點,例如SQL Injection、跨站腳本XSS和弱身分驗證機制等。OWASP同時提供大量的教學資源、安全工具與實作者指南,協助企業與開發者提升應用程式的整體安全性。
OpenCTI是一個開源的威脅情報平台,用來整合、分析和視覺化各種資安情資。它可以彙整來自不同來源的攻擊指標(如IP、惡意程式、攻擊手法等),並建立關聯圖,幫助資安人員了解攻擊者的行為模式與威脅脈絡。簡單來說,OpenCTI就像是一個資安情報中樞,讓使用者更有系統地掌握與追蹤資安事件。
OTX是AlienVault提供的免費資安情資平台,讓全球使用者能即時分享與接收最新的網路威脅資訊。平台收集並整理惡意IP、惡意網址、可疑檔案的雜湊值等指標,並透過社群協作快速擴散威脅情資。OTX就像一個公開的資安情報交流站,使企業與研究人員能更迅速掌握攻擊線索並提前做出防護。
接下來的實作將會透過OWASP、OpenCTI、OTX等可信的資安情報平台,作為RAG架構的知識庫來源。這些平台提供標準化的攻擊處置建議、威脅指標、行為分析與惡意檔案偵測結果,有助於提升模型回答資安問題的準確性與可信度。資料可透過API或定期爬蟲方式擷取,經過清理與向量轉換後,儲存進向量資料庫,讓語言模型能夠即時引用最新的資安知識並提供可追溯的回答。這樣的流程能讓RAG架構具備動態更新、標準化與高信任度的情資資料。
情境模擬與實作
Sunny是一位軟體工程師,近期正著手開發一套專為銀行設計的資安顧問系統。這套系統的核心目標,是讓銀行內部人員在面對資安疑問時,能夠透過與智慧語言模型的對話,快速、便利地獲得正確且即時的知識支援,提升工作效率與應變能力。然而,隨著近年來駭客攻擊日益頻繁,金融產業成為高風險目標,資料外洩事件層出不窮。這也讓Sunny深刻意識到:「若將敏感問題交由非本地部署的語言模型處理,資料勢必會傳送至雲端伺服器,進而產生潛在的資安風險。」
即使網站聲稱資料「不會儲存」、「絕對保密」,對於高度重視資訊安全與風險控管的銀行而言,這樣的承諾難以令人完全信服。因此,他決定採用Ollama作為本地部署平台,安裝並運行語言模型,以打造一套安全、可控且具備即時回應能力的資安顧問系統,以下是他所執行的方式以及準備環境:
‧Anaconda Navigator:https://anaconda.org
‧Ollama:https://ollama.com
‧VScode:https://code.visualstudio.com
‧Open-Webui:https://github.com/open-webui/open-webui
安裝完成後,Sunny決定在Anaconda作業環境中建立一個專屬的虛擬環境,作為資安顧問系統的測試平台。
在執行Python專案時,建立虛擬環境是常用且重要的流程之一。它可以讓每個專案使用獨立的Python版本與套件組合,避免不同專案之間產生衝突或錯誤。像是使用Anaconda或venv工具,就能為每個專案打造專屬的執行空間,確保穩定性與可維護性。同時也能避免汙染本機系統環境,讓測試與開發更安全、可控,相關說明如表6所述。
經過操作後,Sunny成功在Anaconda中安裝其所預想的3.10.13版本,接下來的目標是測試Ollama是否能在虛擬環境中正常運作。首先,Sunny打開Ollama並安裝Mistral-7B語言模型,進行簡單的問答測試。
首先,進行測試一,問他周杰倫是誰?表7為資訊的比較。
接著,進行測試二、問他我是誰?如圖2所示。
圖2 在Ollama向mistral-7B模型詢問周杰倫是誰及其回答。
當語言模型生成回答時,會根據訓練資料或網路上的資訊進行語意推理。然而,如果某些資料來源本身就存在錯誤,或模型在語意判斷上誤解了關鍵詞(例如將「Ollama」誤認為某位音樂人、品牌或其他名詞),就可能導致錯誤的敘述出現。這類錯誤往往不是語法上的問題,而是來自模型的「合理化生成」機制,模型會根據語意邏輯自動填補空白,即使資料不準確,也會生成看似合理、語氣流暢的內容。這種現象使得錯誤不易察覺,卻可能在技術應用或知識傳遞上造成誤導。
在確認mistral-7B能夠順利啟動並自動回覆後,Sunny接下來要進行的是建立資料庫並整合RAG架構,讓語言模型在回答問題時不只依賴自身訓練知識,還能即時查詢外部資料庫,提升回覆的準確性與時效性。對Sunny而言,這代表他需要準備知識來源,例如銀行內部的資安政策、常見問答、技術文件或顧問紀錄,並透過向量化工具(如FAISS、Chroma)將這些資料轉換成可被語言模型檢索的格式。完成資料庫後,Sunny就能將Ollama與RAG架構串接,讓模型在回答使用者問題時,先從資料庫中檢索相關內容,再進行語意生成,達到「有根據的智慧回覆」。在開始之前,先在創建好的Python版本環境中點選,接著便可以開啟命令提示字元(CMD),在這裡可以自由地進行指令的執行也不需要擔心會影響到本地的系統設定。以下是Sunny操作步驟:
首先,Sunny點選Open Terminal,開啟虛擬環境中的命令列介面(CMD)。接著,透過OpenAI-webUI這個開源工具,將本地部署的Ollama模型伺服器接上WebUI介面,可部署在本地127.0.0.1:8080或其他連接埠。這樣一來,操作方式就像使用ChatGPT非常類似,但實際上是與Sunny電腦上的本地模型互動,而不是連到外部雲端環境。
當Sunny再把RAG架構串接進來,也就是讓模型在回答前能檢索本地資料庫,就能讓這個系統變成一個具備查詢能力的資安機器人,能夠回答與資安相關的問題,甚至處理事件分析,Web UI的介面如圖3所示。
圖3 Web UI介面。
當Sunny進入WebUI的「工作區」後,點擊「知識」這個選項,就可以開始匯入PDF或Word檔案,作為模型的知識來源。這些文件會被轉換成可檢索的資料,讓模型在回答問題時能引用裡面的內容,WebUI知識庫管理介面如圖4所示(本文實作情境主要利用OWASP、OpenCTI與OTX等資安資料來源,透過其中提供的威脅情報與安全知識,建構一份RAG架構作為知識庫)。
圖4 WebUI知識庫管理介面。
為了確保資訊顧問僅依照提供的RAG知識庫進行回答,將透過設計提示詞來限制Web AI的回應範圍,避免模型過度延伸或生成超出知識庫的內容。
在建構RAG系統時,資料的排版與格式對檢索效果有明顯的影響。若原始文本結構混亂、段落不清或缺乏標題與標註,容易導致向量化後的語意模糊,進而影響模型的召回準確度與回應品質。
完成RAG的知識庫匯入後,Sunny可以進行測試,確認模型是否能正確引用資料並成功運作。以下是Sunny所匯入的自我介紹檔案,檔案內容如圖5所示,而圖6為Ollama的讀取狀況。
圖5 自我介紹。
圖6 確認讀取狀況。
可以很明確地看出,模型成功讀取Sunny提供的資料,並且在回答中引用了相關內容,這證明它已正確整合知識庫。接著,Sunny匯入事先準備好的資安資料至知識庫,並進行測試,以確認模型是否能夠完成一個基礎的資安顧問機器人,資安顧問測試如圖7、圖8所示。
圖7 資安顧問測試(一)。
圖8 資安顧問測試(二)。
最後,在Sunny不懈的努力與反覆測試下,成功打造出一個結合本地模型與RAG架構的資安顧問系統。這個系統能即時查詢內部資安資料庫,並以自然語言回應使用者的提問,協助銀行快速辨識威脅、提供防禦建議,成為團隊中可靠的資安助手,也為企業導入AI技術邁出關鍵一步。
除了透過Web UI之外,也可以透過命令提示字元介面(CMD)來執行。首先,透過Anaconda開啟命令提示字元,直接執行Ollama的相關指令,以進行模型的操作與測試。接著,只須提供資料夾路徑並執行對應的匯入與檢索指令,就能夠將資料存入向量資料庫並進行查詢。後續的所有操作皆可在CMD環境中完成,無需額外介面,實作流程簡潔且具可控性,CMD的操作狀況如圖9所示。
圖9 CMD執行RAG模型並回傳資安知識。
綜合以上所述,Web UI與CMD兩者的優劣比較如表8所示。
結語
隨著語言模型、生態工具與開源社群的持續推進,結合語言理解與知識檢索的智慧系統將在未來扮演愈來愈重要的角色,無論是在企業資安、教育訓練、知識管理,乃至各種需要即時決策與資訊透明度的領域,都將成為不可或缺的技術基礎,為AI應用帶來更多深度與可能性。
<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/) 中央警察大學資訊密碼暨建構實驗室 & 情資安全與鑑識科學實驗室(ICCL and SECFORENSICS) ,1998年成立,目前由王旭正教授領軍,並致力於資訊安全、情資安全與鑑識科學、資料隱藏與資料快速搜尋之研究,以為人們於網際網路(Internet)世界探索的安全保障(https://hera.secforensics.org/)>