#03 LLM 整合

Tech Ollama, Llama 3.1, Python requests AI Claude Code

源起

向量檢索只能回傳相關片段,使用者還要自己讀。接 LLM 讓系統直接回答問題,才是完整的 RAG。

設計

LLM 選 Ollama + Llama 3.1。理由是資料安全(招標文件不能外洩)、零費用、本地部署。Prompt 模板存成獨立 Markdown 檔案,核心指令是「基於參考資料回答、找不到就說不知道、用繁體中文」。

流程:向量檢索 top 8 → 格式化成帶章節路徑的參考資料 → 塞進 prompt template → 呼叫 Ollama HTTP API → 回傳答案和來源引用。

動態模型選擇——從 Ollama API 讀可用模型列表讓使用者選,不寫死。

實現

UTF-8 wrapper 衝突。 CLI 主程式和 QA 模組都設了 sys.stdout UTF-8 wrapper,import 的時候 stdout 被關掉了再 wrap 就炸。改成只在 __main__ 才設定。

Ollama timeout。 首次查詢要載入模型到記憶體,預設 10 秒 timeout 不夠。改成 60 秒。

清屏問題。 print('\n' * 100) 把文字推到底部要往上捲。改用 ANSI escape \033[2J\033[H

所有功能整合到 rag_cli.py 統一入口:分片、向量化、查詢測試、AI 問答。

尾聲

項目結果
向量檢索~1 秒
LLM 生成~3-5 秒(首次 +10 秒載入)
端到端~4-6 秒
答案品質基於檢索內容,幾乎無幻覺

RAG 的完整流程跑通了。問「數位雙生系統的架構」能回答出四層架構設計和各層技術細節,全部來自檢索到的分片。


返回 專案首頁