為什麼選擇 OceanRAG
跟市面上其他方案比較,OceanRAG 的核心差異:
| 比較面向 |
一般 AI 方案 |
OceanRAG |
| 資料安全 |
機密文件上傳雲端,有外洩風險 |
可完全私有化部署,資料不離開公司 |
| 回答品質 |
無法驗證,可能產生錯誤資訊 |
三道品質關卡自動把關,信心不足不回答 |
| 權限管控 |
全公司看同樣內容,或只有簡單分類 |
文件等級 × 部門 × 角色,精確到每份文件 |
| 稽核追蹤 |
查詢紀錄可刪改,或根本沒有紀錄 |
所有操作不可竄改,隨時可匯出 |
| 外部依賴 |
需安裝多種外部服務才能運作 |
零外部依賴,裝完就能用 |
| 使用成本 |
按人頭按月收費,規模越大越貴 |
AI 模型運行近乎零成本 |
費用優勢: 使用開源模型在公司機器上運行,AI 運行費用接近零。即使搭配雲端 API,品質把關機制也能攔截不必要的查詢,整體費用比傳統方案省 50%~70%。
系統如何運作
員工只需要「問問題」,系統在背後自動完成所有搜尋、驗證和回答的工作。
員工提問
→
理解意圖
→
搜尋知識庫
→
品質把關
→
回答 + 出處
(圖片:系統查詢主畫面截圖)
自動文件處理
上傳檔案後,系統自動完成解析、切割、品質檢測和入庫,不需要人工整理。支援 PDF、Word、Excel 等常見格式。
品質把關機制
OceanRAG 設了三道關卡,確保不該回答的問題不會回答、品質不夠的答案不會送出:
1
問題過濾
跟公司知識庫無關的問題(閒聊、寫程式等)直接攔截。約 10%~15% 的查詢在這裡就被擋住,節省系統資源。
2
搜尋品質檢查
系統檢查搜尋到的資料是否足夠。品質不夠好時會嘗試其他方式;真的找不到就告訴員工「資訊不足」,不硬掰答案。
3
回答驗證
AI 回答後自動評估可信度:高信心直接送出、中等信心標示提醒、信心不足直接擋掉。六成以上查詢一次通過,只有低信心回答才觸發更深入的來源溯源比對。
每個回答都會附上一段人看得懂的信心說明,讓員工知道 AI 為什麼有信心回答,不是黑箱作業。
安全防護
假設你的公司有 30 位員工,分成業務部、人資部、研發部。以下是 OceanRAG 在日常營運中如何保護你的企業:
「公司機密文件會不會外洩?」
不會。系統完全部署在公司自己的機器上,所有文件、對話紀錄、搜尋索引都存在本地。即使 AI 模型也可以選擇跑在本地,完全不需要把資料傳到外部服務。符合台灣個資法對資料在地化的要求。
「人資的薪資單會不會被業務看到?」
不會。每份文件都有機密等級(L1~L5)和部門歸屬。業務部的員工搜尋時,人資的薪資文件根本不會出現在搜尋結果裡 — 不是搜到後才隱藏,而是連搜都不搜。即使有人嘗試直接用連結存取,系統也會擋回來。
「有人一直猜密碼怎麼辦?」
系統自動保護。連續輸錯密碼會自動鎖定帳號,同一 IP 短時間內太多登入嘗試直接擋回。外部 IP 登入自動標記為可疑,管理員會收到通知。而且攻擊者無法從回應速度判斷帳號是否存在。
「AI 會不會亂講話影響決策?」
三道品質關卡:第一關攔截與公司知識庫無關的問題,第二關確認搜尋到的資料品質夠好,第三關驗證 AI 回答的可信度。信心不足就不回答。每個回答都附上出處和一段人看得懂的信心說明。
「員工短時間下載大量文件?」
系統自動偵測。每一次文件預覽和下載都有紀錄,短時間大量下載、跨部門存取、高機密文件存取都會自動標記,即時通知管理員。系統還會持續追蹤每位員工的行為風險分數。
「員工離職要怎麼處理?」
管理員一鍵強制登出,所有登入狀態即時撤銷。但操作紀錄永久保留,不會因帳號停用而消失。角色或部門變更也會立刻讓舊的登入狀態失效。
「還有哪些安全措施?」
OceanRAG 採用「多層防禦」設計 — 每一層各自獨立,就算某層被突破,其他層還是照擋:通訊加密、檔案用特徵碼驗真偽、AI 有指令注入防護、網頁有安全標頭防護、所有操作紀錄用密碼雜湊鏈串連防竄改。
權限管理
同樣以 30 人的公司為例,「誰能看什麼」是最常被問的問題。用三個實際場景來說明:
場景一:新進業務員工報到
管理員建帳號時設定:角色「一般員工」、部門「業務部」、機密等級「L2」。從此這位員工只能搜到業務部 L2 以下的文件。人資的薪資單(L4)和研發的專利文件(L3)完全看不到。
場景二:業務主管需要看跨部門資料
系統管理員可以授權特定員工看指定部門的指定等級文件。授權範圍精確控制,不是「全部打開」。
場景三:員工調部門或離職
管理員修改部門或角色後,該員工所有正在使用的登入狀態即時失效。重新登入後自動套用新權限,舊部門的文件立刻看不到了。
(圖片:權限管理後台截圖)
三級角色
- 系統管理員:看得到所有資料、管得到所有人。通常是 IT 主管或老闆。
- 部門管理員:只管自己部門的文件和員工。
- 一般員工:只能查詢,只看得到被授權的文件。
稽核日誌
當稽核人員來訪,或懷疑有資料被不當存取時,OceanRAG 能提供完整的追溯紀錄。
場景:稽核人員要看操作紀錄
管理員直接從後台匯出 CSV 或 JSON,內容包含:誰、什麼時候、做了什麼、從哪個 IP 登入。這些紀錄不可刪除、不可竄改 — 資料庫層級自動擋掉所有刪除操作,每筆紀錄用密碼雜湊鏈串連,改一筆就整條鏈驗證失敗。
場景:懷疑有人不當存取機密文件
管理員可查詢特定員工的所有紀錄:問了什麼、AI 怎麼回答、引用了哪些文件、信心分數、文件下載紀錄和行為風險分數,全部一目了然。
兩套互補的紀錄
- 對話紀錄:每一筆 AI 查詢的完整過程 — 問題、回答、引用文件、信心分數。
- 操作紀錄:登入登出、上傳文件、審閱通過、權限變更等所有管理操作。
部署方式
環境需求
- 作業系統:Windows / macOS / Linux 都可以
- 推薦硬體:Mac Mini(最新升級版,約兩萬台幣起)是最推薦的選擇,效能與性價比兼具
- 外部依賴:零。不需要額外安裝資料庫或其他服務
怎麼上線
- 辦公室內架機器:最簡單,Docker Compose 一鍵啟動,前面放一個入口就好。
- 私有雲部署:如果公司有多個據點,可以把後端放在私有雲,前端透過 VPN 連。
發展藍圖
v0.6 已推出下列功能:
MCP 伺服器
讓各種 AI 工具(如 Claude、ChatGPT)都能直接查詢公司知識庫,把 OceanRAG 變成企業的「知識中樞」。
技能系統(Skill)
定義可重複執行的工作流程,讓 AI 按照步驟完成重複性任務,例如固定格式的報表彙整、資料摘要等。
文件代理(Document Agent)
AI 主動協助整理、摘要、歸檔新進文件,減少人工處理負擔,讓知識庫始終保持最新狀態。
方案比較
跟市面上其他 RAG 方案比較,OceanRAG 的差異化在哪裡?
| 比較面向 |
一般 RAG 方案 |
OceanRAG |
| 查詢理解 |
單輪關鍵字搜尋 |
意圖辨識 + 查詢改寫 + 多輪持久化對話 + 事實萃取 |
| 精確檢索 |
純向量搜尋 |
混合搜尋(語意向量 + BM25 關鍵字)+ 季度級時間篩選 |
| 答案驗證 |
沒有(直接輸出) |
Source Grounding:規則式三態判定,<5ms 即時回應 |
| 幻覺防護 |
沒有 |
統一信心管線 + 三道門控 + 繁中信心解釋,信心不足直接擋 |
| 找不到答案時 |
回「我不知道」 |
自動觸發聯網搜尋(快速搜尋 + 深度研究代理) |
| 文件處理 |
要人工整理 |
丟檔案就好,自動跑 ETL + 語料增強 + 品質評分 |
| 權限控管 |
全公司看得到或簡單 ACL |
RBAC 搜尋前過濾,向量 + BM25 雙通道同步管控 |
| 要裝哪些東西 |
多種外部服務 |
嵌入式資料庫,零外部依賴 |
| 登入安全 |
localStorage(有 XSS 風險) |
安全 Cookie + 非對稱加密簽章 |
| 稽核日誌 |
可以刪、可以改 |
資料庫 trigger 保護 + 密碼雜湊鏈,刪不掉改不了 |
| LLM 費用 |
主流模型按量計費 |
高效推論引擎 + 門控攔截省 50%~70% |
費用優勢: 地端模式的 LLM 費用可壓到主流方案的 5%~10%。即使用雲端 API,三道門控攔截不必要的查詢 + Source Grounding 自動分類,整體費用比傳統方案省 50%~70%。
系統架構(六子系統設計)
OceanRAG v0.6 將系統重構為六個子系統,各自職責明確,子系統之間用服務驗證令牌通訊,搭配 IP 白名單 + 限流保護。
S1 Data Refinery
ETL 9 階段 + SWIP 語意增強,自動解析、切塊、增強、向量化、品質檢測、入庫
S2 Cortex Memory
L0 知識圖譜 + L1 向量檢索 (LanceDB + tantivy BM25) + L2 原始存檔
S3 Recall Engine
混合檢索 + CRAG 三級路由 + RRF 融合排序 + RBAC 過濾
S4 LLM Gateway
多模型路由 + 容錯切換 + Token 計量 + 備援鏈
S5 Gen Core
Prompt 組裝 + Source Grounding 三態判定 + 來源歸因
S6 API Gateway
FastAPI + JWT + RBAC + SSE 串流 + 稽核日誌
為什麼用嵌入式資料庫? 在一千人以下的公司,嵌入式資料庫就很夠用了,完全不需要額外部署資料庫服務。向量資料庫也是同樣概念 — 用本機檔案存向量,不需要另外架雲端向量服務。如果公司規模變大,架構設計有預留升級空間。
查詢管線(完整流程)
當員工按下「送出」後,系統在背後跑了以下步驟:
配額檢查
→
Session 載入
→
意圖分類 ∥ Embedding
→
A 門控
→
查詢改寫
→
向量 ∥ BM25
→
去重 + 精排
→
B 門控
→
LLM 生成
→
C 門控
→
Session 存檔
→
稽核記錄
- 配額檢查 — 確認部門 / 員工的查詢額度還夠不夠,超額直接回 429。
- Session 載入 — 撈最近 5 輪對話紀錄,包含之前萃取出的重點。
- 並行:意圖分類 ∥ Query Embedding — 同時跑 Router 意圖辨識和查詢向量化,不浪費時間。
- A-layer 意圖門控 — 跟公司知識庫無關的問題在這邊就擋掉(閒聊、寫程式等),大約擋 10%~15%。
- 查詢改寫 — 根據前幾輪對話改寫查詢,讓搜尋更精準。改寫信心達標時會重新做 embedding。
- 並行:向量搜尋 ∥ BM25 搜尋 — 兩路同時跑,語意搜尋抓意思相近的、BM25 抓精確關鍵字,最後用融合排序合併。
- 版本去重 + 精排 — 移除舊版重複的段落,精排模型對候選結果做精準排序。
- Chunk 打包 + 時間衰減 — 舊文件自動降權,優先呈現最新版本。
- B-layer 檢索門控 + CRAG 路由 — 加權綜合評分(向量分 + 精排分),根據 CRAG 三級路由決定下一步:
- 信心 ≥ 0.85 → 直接 RAG 回答(0 工具呼叫)
- 0.50 ≤ 信心 < 0.85 → RAG + 工具可用(LLM 決定是否呼叫)
- 信心 < 0.50 → 工具優先(自動觸發聯網搜尋)
- LLM 生成 — 把通過的文件段落餵給 R2 Generator (Qwen3-14B),SSE 串流即時回傳到前端。
- C-layer 信心評分 — 對回答打信心分數,Source Grounding 以 3 個布林條件判定回答品質(<5ms),詳見信心管線。
- Session 更新 — 自動從回答中萃取 top-5 重點事實,存回對話紀錄給下一輪用。
- 稽核記錄 — 整條查詢鏈路(含檢索分數)寫入稽核日誌,留底備查。
混合檢索
v0.6 同時用「語意搜尋」和「關鍵字搜尋」兩路並行,合在一起排名,讓精確數字和專有名詞的命中率大幅提升。
Dense 語意通道
語意向量搜尋
擅長:「公司去年的營收表現如何」
Sparse 關鍵字通道
BM25 + 中文分詞
擅長:「合約編號 A-2301」「Q3 營收 1.2 億」
RRF 融合排序:語意通道 + 關鍵字通道 Reciprocal Rank Fusion(權重可調)
實際效果: 像「2024 Q3 營收」「合約編號 A-2301」這類精確數值查詢,命中率比純向量搜尋提升 25%~40%。權限過濾 (RBAC) 同時套用在兩個通道上。
三層門控機制
OceanRAG 在查詢的不同階段設了三道關卡,確保不該回答的問題不會回答、品質不夠的答案不會送出:
Router 模型判斷「這個問題跟公司知識庫有沒有關係」,閒聊、寫程式碼這類直接擋。
加權綜合評分(向量分 + 精排分),分數不夠就先
上網找;真的找不到就回「資訊不足」。
LLM 回答完後打信心分數,太低就觸發 Source Grounding 來源溯源。詳見
信心管線。
Source Grounding 信心管線
v0.6 以規則式 Source Grounding 取代舊版 NLI 模型,用 3 個布林條件即時判定回答品質,<5ms 完成,無需額外 LLM:
B-layer 評分
向量 + 精排加權
→
C-layer 評分
多維度綜合
→
Source Grounding
has_context ✓ has_citations ✓ → GROUNDED
部分缺失 → PARTIAL / UNGROUNDED
三態判定
- GROUNDED:回答有明確來源支撐,引用完整,直接送出。
- PARTIAL:部分內容有來源,部分為模型推論,標示黃色警示提醒員工再確認。
- UNGROUNDED:無法追溯來源,標記警示或直接擋掉,改回「資料不足,建議換個問法」。
判定條件
Source Grounding 以 3 個布林條件判定:has_context(是否有檢索到相關文件)、has_citations(回答是否包含引用標記)、is_refusal(LLM 是否拒絕回答)。規則式判定確保結果具確定性,不受模型隨機性影響,且不需要 GPU。
繁體中文信心解釋
每個回答都會附一段人看得懂的說明,例如:「高可信度:檢索相關性高,文件匹配度佳」。讓員工知道 AI 為什麼有信心,不是黑箱。
模型校正(Per-model Calibration)
不同 LLM 對信心的偏差不一樣,可以對每個模型設定信心校正參數。像有些模型天生偏樂觀,就設個負向偏移拉回來。
4-Role 模型策略
OceanRAG v0.6 將 AI 模型精簡為四個角色 (R1-R4),每個角色都可以獨立切換,不會互相影響:
| 角色 | 模型 | 部署位置 | 用途 |
| R1 Router |
GPT-OSS-20B |
Groq (雲端) |
意圖分類、CRAG 路由 |
| R2 Generator |
Qwen3-14B |
Ollama (地端) |
回答生成 (thinking mode) |
| R3 Worker |
Qwen3-8B |
Ollama (地端) |
SWIP 增強、摘要 |
| R4 Embedder |
BGE-M3 |
ONNX (地端) |
1024 維向量 + 重排序 |
離線備援: R1 Router 離線時自動切換至 Qwen3-14B @ Ollama (地端),確保完全斷網環境仍可運作。Source Grounding 為規則式判定,不需要額外模型。
備援鏈(Fallback Chain)
「回答生成」這個角色支援自動備援:主模型掛了就自動切到下一個,切換過程員工完全無感。每個模型定期做健康檢查,連續失敗就跳過,恢復後自動加回來。
主模型
→ 失敗 →
備選 A
→ 失敗 →
備選 B
→ 失敗 →
地端模型
核心原則是「不綁死任何廠商」。每個角色都可以獨立替換,換模型只需要調整設定,不需要改程式碼。向量化模型更換時需要重建索引。
文件 ETL Pipeline(9 階段)
上傳檔案後,系統全自動跑完以下 9 階段流程(S1 Data Refinery),不需要人工介入:
- 解析:自動偵測檔案類型(PDF / Word / Excel),用檔案特徵碼驗證不是偽裝檔案。
- 清洗:去掉多餘的格式符號和亂碼,保留文字的語意完整性。
- 切塊:按語意段落切成小段(預設 512 tokens/段,重疊 64 tokens 避免斷句)。
- SWIP 語意增強:滑動窗口注入法(h_prev=2, h_next=1, 4 chunks ≈ 2000 字),由 R3 Qwen3-8B 解決代名詞、注入實體上下文,消除「語意孤兒」chunk。
- 摘要:幫每個小段落產生語意摘要,讓後面的精排序更準。
- 語料增強:自動抓出公司名、日期、金額等重要資訊,加到段落前面當索引,提高搜尋命中率。
- 向量化:透過 R4 BGE-M3 (ONNX) 把文字轉成 1024 維向量。
- 品質檢測:5 個維度打分(滿分 100),品質不過關不入庫。
- 入庫:向量存到 LanceDB,同時建 tantivy BM25 關鍵字索引,metadata 存到 SQLite。整個過程是 atomic 的,不會只做一半。通知管理員審閱。
SWIP 語意增強
SWIP(Sliding Window Injection Prompting)是 v0.6 新增的關鍵技術。傳統切塊方式容易產生「語意孤兒」— 段落失去上下文後,代名詞(他、該公司)無法被正確解析。SWIP 用滑動窗口把前後相鄰的 chunk 一起送給 R3 Worker 模型,自動注入實體名稱和上下文,讓每個 chunk 都能獨立被理解。
Cortex Memory 三層記憶
處理完的文件存入 S2 Cortex Memory 的三層架構:
- L0 知識圖譜:SQLite 儲存實體、關係與別名,支援實體解析與關聯查詢。
- L1 混合檢索:LanceDB 向量索引 + tantivy BM25 關鍵字索引,雙通道同時搜尋再 RRF 融合排序。
- L2 原始存檔:原始文件存檔 + 完整 metadata,供溯源和稽核使用。
Excel 處理
Excel 會自動轉成 Markdown 表格格式入庫,保留表頭和 sheet 名稱。單一 sheet 最多處理一萬行,超過的部分會截斷並記錄警告。
聯網搜尋
公司文件找不到答案(B-layer 被擋)而且管理員有開啟聯網搜尋的時候,系統會自動上網找。
快速搜尋模式
透過開源搜尋引擎送查詢,抓回前幾筆結果,用語意評分過濾相關段落,合併進 LLM 的參考資料。適合簡單的事實性問題。
深度研究模式
兩層 AI 代理:第一層用 Chain-of-Thought 把問題拆成子問題,第二層用 ReAct 模式反覆搜尋、閱讀、推理。適合需要比對多個來源的複雜問題。
資安防護
上網抓資料有 SSRF 防護:自動擋掉內部網路位址(私有網段、迴環位址等),防止被利用來探測公司內網。
縱深防禦設計
OceanRAG 的資安架構分為五層,每層各自獨立運作。以一間 30 人的中小企業為例,即使某一層被突破,其他層仍能有效防禦。
五層安全架構
L1 傳輸層
HTTPS 強制、安全 Cookie(httpOnly + SameSite=strict)、安全標頭
L2 認證層
三通道認證(Cookie / Bearer Token / 內部服務令牌)→ 非對稱加密簽章驗證
L3 授權層
RBAC 角色 → 機密等級 → 部門歸屬 → 功能權限矩陣
L4 輸入驗證
Schema 型別驗證 → 參數化查詢 → 資料庫約束檢查
L5 稽核監控
不可變安全事件 + 雜湊鏈完整性驗證 + 風險評分 + 異常偵測
傳統 Web 安全防護
以下是針對中小企業常見攻擊面的防護措施:
| 防護措施 | 實作方式 | 防禦目標 |
| 資料不出境 |
嵌入式資料庫跑在公司機器,原始文件不傳出去 |
資料外洩 |
| 認證安全 |
非對稱加密簽章 + 安全 Cookie(httpOnly, SameSite=strict) |
Token 偽造、XSS、CSRF |
| RBAC + 部門隔離 |
三級角色 + L1~L5 機密等級 + 部門歸屬,搜尋前過濾 |
越權存取 |
| 登入防護 |
帳號鎖定 + IP 限流 + 等時回應(防列舉)+ 設備追蹤 |
暴力破解、帳號列舉 |
| 權限即撤銷 |
角色或等級一改,舊 Session 立刻失效 + IDOR 防護 |
殘留存取、冒用 |
| 稽核防竄改 |
資料庫 trigger 禁刪 + 雜湊鏈串連 + 定期完整性驗證 |
稽核合規 |
| 檔案驗證 + 限流 |
Magic number 驗真偽 + IP 限流 + SSRF 防護 |
偽裝上傳、內網探測 |
| 安全標頭 |
CSP + X-Frame-Options: DENY + nosniff + strict-origin |
XSS、Clickjacking |
LLM / RAG 特有安全風險
除了傳統 Web 安全,RAG 系統還面對 AI 模型特有的攻擊面。以下是 OceanRAG 的防護策略:
| 風險類型 | 攻擊方式 | 防護措施 |
| 直接指令注入 |
使用者在查詢中嵌入惡意指令 |
輸入長度限制 + Schema 驗證 + delimiter 隔離使用者輸入與系統指令 |
| 間接指令注入 |
惡意內容藏在文件中,被 RAG 檢索後注入 LLM |
RBAC 過濾 + 來源標記 + 輸出消毒 |
| 幻覺 / 虛假引用 |
AI 生成不存在的資訊或錯誤引用 |
Source Grounding 來源溯源 + 統一信心管線 + 來源連結驗證 |
| 跨權限資料洩漏 |
透過 LLM 輸出取得無權限的文件內容 |
RBAC 在搜尋前過濾(LLM 完全看不到無權限的段落)+ 通用錯誤訊息 |
| 外部 MCP 回傳攻擊 |
惡意 MCP Server 回傳含注入的資料 |
Schema 驗證 + 內容消毒 + 來源標記 + timeout 限制 |
登入安全
以 30 人中小企業為背景,登入安全涵蓋:暴力破解防護、異常偵測、Session 管理。
暴力破解防護
- 帳號鎖定:連續失敗達門檻自動鎖定(持久化在資料庫,重啟不解除),鎖定時間可由管理員調整。
- IP 限流:同一 IP 每分鐘登入請求數有上限,超過直接擋回。
- 等時回應:帳號不存在也做等時處理,攻擊者無法推斷帳號存在與否。
- 密碼政策:最少 8 字元,需含大小寫 + 數字,不可逆雜湊儲存。管理員重設密碼會記錄為高風險事件。
異常登入偵測
系統自動判斷 IP 來源(內部 / VPN / 外部),外部 IP 登入標記可疑。記錄每次登入的裝置指紋,短時間多裝置登入觸發警示。所有登入事件(成功、失敗、登出、撤銷)完整留底。
Session 管理
Session 存在資料庫中(含登入時間、裝置、IP),不是純無狀態 Token。管理員可一鍵強制登出個人或全員,撤銷後 Token 立即失效。Session 歸屬嚴格驗證(IDOR 防護),閒置超時自動過期並定期清理。
風險評分與異常偵測
以 30 人公司為背景,OceanRAG 持續追蹤每位使用者的行為模式,在異常發生時即時警告管理員。
風險評分模型
系統用時間衰減模型計算每位使用者的風險分數(0~100),越近期的異常權重越高。評估維度包含:登入失敗次數、可疑登入(外部 IP / 新裝置)、高風險事件(權限變更、文件下架等)、異常查詢行為、短時間多裝置登入。
≥ 80:嚴重 → 自動通知管理員(含冷卻時間)
≥ 60:警告 → 標記異常,儀表板可檢視
< 60:正常 → 僅記錄
文件存取異常偵測
每一次預覽和下載都記錄,自動偵測四種異常:大量下載(同人/IP 短時間超量)、高機密存取(機密等級達門檻)、跨部門存取(非所屬部門文件)、存取拒絕(被擋的嘗試也完整記錄)。全部標記為高風險資安事件。
資安事件分類
系統定義 25+ 種資安事件類型,分為四大類:帳號類(建立、修改、重設密碼、強制登出)、權限類(權限變更、安全參數修改)、文件類(下架、大量存取、跨部門存取)、系統類(ETL 失敗、雜湊鏈斷裂、API 金鑰操作)。每個事件有唯一編號、前後狀態差異、雜湊鏈保護。
API 金鑰加密
儲存的 API 金鑰使用對稱加密保護,每次加密用隨機初始向量,即使資料庫被盜也無法解出明文。管理介面僅顯示前後幾碼做辨識。
權限與 RBAC
每一筆查詢都要過四關,確保沒有權限的資料「根本不會被搜到」:
- 身份驗證:Cookie + Session 確認你是誰,沒登入直接回 401。
- 角色檢查:你是一般員工、部門管理員、還是最高管理員?角色不對回 403。
- 機密等級比對:你的機密等級要大於等於文件的機密等級。不夠就搜不到(空值會強制處理,沒辦法繞過)。
- 部門歸屬 + 功能權限:你是哪個部門的?有沒有被授權看跨部門資料?功能權限矩陣一項一項查。
這四關在向量搜尋和 BM25 搜尋「之前」就先跑完了,確保兩路搜尋結果都經過權限過濾,沒有漏網之魚。
稽核日誌系統
OceanRAG 有兩套互補的紀錄系統,隨時可以查、隨時可以匯出給稽核用:
1. 對話紀錄
每一筆查詢的完整鏈路:原始問題、改寫後的問題、AI 回答、信心分數、引用了哪些文件段落。用對話識別碼串起來,一個對話一條線。
- 標記是不是被 B-layer 或 C-layer 擋過。
- 記下檢索分數(向量分、精排分、融合排名),方便 MIS 調整參數。
2. 系統操作紀錄
登入登出、上傳文件、審閱通過、下架文件、改權限⋯⋯全部都有紀錄。
- 刪不掉:資料庫 trigger 會自動擋掉所有刪除操作,就算最高管理員也沒辦法。
- 改不了:每筆紀錄的雜湊值串著上一筆,改一筆就整條鏈驗證失敗。
- 可匯出:管理員可透過管理介面匯出 CSV 或 JSON,直接交給稽核或法遵。
3. 對話 Session 持久化
每一輪對話的摘要、意圖、萃取事實、信心分數都存在對話紀錄裡,提供完整的多輪對話追溯能力。
部署方式
環境需求
- 作業系統:Windows / macOS / Linux 都可以
- Python:3.10 以上
- 推薦硬體:Mac Mini M2/M4(16-32GB RAM,約兩萬台幣起)是最推薦的選擇,效能與性價比兼具
- GPU:Source Grounding 為規則式判定,不需要 GPU。Ollama 地端模型在 Apple Silicon 上即可運行
怎麼上線
- Docker 單機部署:最簡單,Docker Compose 一鍵啟動所有子系統,適合 Mac Mini M2/M4 單機運行。
- 私有雲部署:如果公司有多個據點,可以把後端子系統放在私有雲,前端透過 VPN 連。
開發藍圖
1. MCP 伺服器
讓 OceanRAG 變成任何 AI 工具的知識來源。各種 AI 助理可以透過 MCP 協定直接查 OceanRAG 的文件庫,不用自己重新處理文件。
2. 技能系統(Skill)
定義可重複執行的工作流程,讓 AI 按照企業定義的步驟完成特定任務。例如:固定格式的報表彙整、合約摘要、客訴分類等,每個技能都受 RBAC 和稽核控管。
3. 文件代理(Document Agent)
AI 主動協助處理新進文件:自動摘要、分類歸檔、標記關鍵資訊。減少人工處理負擔,讓知識庫始終保持最新。每個代理行為都記錄在稽核日誌中。