在過去幾天,我們已經完成了 文件解析、向量檢索、Hybrid Search、Rerank 等功能。
今天我們要先思考 如何把這些功能整合成一個模組。後面我們則會介紹一下我們選擇作為前端呈現的工具 Streamlit ,讓使用者能直觀操作整個流程。
一個完整的 RAG架構,通常包含以下幾個核心模組:
而我們最後目標是AgenticRAG,所以後面還會有Agent Flow的模組,處理複雜任務(例如 Query Expansion、MRKL 等)。
👉 在這樣的設計裡,Streamlit 只負責前端呈現,真正的檢索、嵌入與生成都在後端服務處理。把前後端分離,這樣能讓系統更容易維護與擴充。
到目前為止的內容,我們其實只需要四個模組:
RAG_base/
│
├── indexer/ # 文件上傳與嵌入
├── retriever/ # 檢索與問答
├── model/ # 模型管理(Embedding, Rerank, LLM)
└── frontend/ # Streamlit 前端
在開始實作之前,我們先來認識一下 Streamlit。
Streamlit 是一個專為 資料科學家與機器學習工程師 設計的開源框架,讓你可以只用 Python 快速建立互動式 Web 應用。
它的最大特色是 簡單直觀:你不用寫前端程式碼(如 HTML、CSS、JavaScript),就能直接把 Python 變數、資料框、模型輸出等轉換成漂亮的網頁元件。
今天我們的重點不是程式碼,而是 架構設計,因為後續我們會一步一步擴充功能,如果沒有做好系統架構,那做到後面很可能需要把前面寫的程式打掉重練。
而我們也把 前端 (Streamlit) 和 後端模組 清楚分開,這樣可以:
本來想在這篇就先做 基本版 Streamlit Demo,但我想先把架構講清楚是非常重要的! 我們明天再來建立第一個可互動的 RAG 應用吧!