jolibrain/colette
Multimodal RAG to search and interact locally with technical documents of any kind
Colette – 自主托管視覺-RAG平台
是什麼 – Colette 是一個開源、自主托管的檢索增強生成(RAG)系統,讓您能在不將任何資料傳送至外部API的情況下,索引與查詢技術文件。其獨特之處在於 視覺-RAG:文件的每頁皆被視為影像,因此表格、圖表、示意图與版面皆能完整保留,並可透過基於視覺的嵌入進行搜尋。
核心功能
- 視覺-RAG(V-RAG) – 使用視覺嵌入模型(例如
gme-Qwen2-VL)與多模態大語言模型(例如Qwen3-VL)對頁面級影像進行嵌入與檢索。 - 混合檢索 – 同時運行向量搜尋引擎(ChromaDB/ColDB)與BM25詞法引擎(Tantivy),適用於產品代碼、零件編號等情境。
- HyDE(假設文件嵌入) – 可選地,使用LLM生成一段簡短的「假設答案」,並以該答案而非原始問題進行嵌入,進而提升技術性查詢的召回率。
- 純文字RAG – 使用
unstructured+langchain的傳統流程,適用於無需基於影像處理的文件。 - 多後端LLM支援 – 支援HuggingFace、vLLM、Ollama,以及自訂的
vllm_client。 - 影像生成 – 透過
diffusers集成Stable Diffusion,支援視覺輸出。 - 版面偵測 – 自動將頁面裁切為
text、figure、table或full_page區域,實現對結果的細粒度過濾。 - Docker化部署 – 提供即用鏡像(
colette_gpu、colette_gpu_server、colette_ui)與用於建構/發布的CI流程。
架構快照 – README包含一張圖,展示三個主要組件:(1) 攝入(PDF → 影像裁切 → 視覺/文字嵌入),(2) 儲存(向量資料庫 + BM25索引),(3) 推論(LLM使用檢索到的上下文生成答案)。所有組件皆可透過JSON檔案配置。
典型工作流程
- 安裝 – 推薦使用Docker或Python虛擬環境。需Python ≥ 3.12、CUDA ≥ 12.1,以及至少24GB VRAM的GPU(或透過設定使用輕量模型)。
- 索引 –
colette_cli index …指向PDF資料夾;系統將建立影像裁切,執行視覺/文字編碼器,並儲存嵌入。 - 查詢 –
colette_cli chat …或Python API(JSONApi、APIData)送出問題;系統檢索相關影像/文字區塊(嵌入、BM25或混合),並輸入LLM,回傳文字答案與來源影像。
技術堆疊
- 語言:Python(核心邏輯、CLI、API)與Bash(Docker包裝器)。
- 視覺模型:Qwen風格的多模態編碼器。
- LLM後端:HuggingFace Transformers、vLLM、Ollama。
- 向量儲存:ChromaDB或自訂
coldb。 - 詞法搜尋:Tantivy(基於Rust的BM25)。
- 容器化:Docker + Docker-Compose;CI透過Jenkins執行。
- 可選GPU加速影像生成:Diffusers(Stable Diffusion)。
安裝難度 – 中等至高。Docker鏡像抽象了大部分相依性,但預設設定需要高階GPU。倉儲提供適用於x86、ARM與DGX機器的虛擬環境設定指令碼,以及詳細的CLI範例與用於除錯的Jupyter筆記本。
適用對象
- 需要查詢專有技術手冊、航太文件、示意图等PDF,且視覺版面至關重要、資料不能離開內部環境的企業或研究團隊。
- 需要嚴格保密性的內部知識庫助理開發團隊。
- 正在實驗多模態RAG流程,並希望使用即開即用、可配置堆疊的開發者。
成熟度 – 項目由Jolibrain、CNES與Airbus支援,包含CI流程、Docker鏡像與相當完整的文件網站。對於自托管使用已具備生產就緒狀態,但硬體需求(≥24GB VRAM)使其僅限於工作站級或伺服器級GPU。
快速開始(Docker)
# 拉取鏡像
docker pull docker.jolibrain.com/colette_gpu:latest
# 建立資料夾
mkdir -p models app_colette docs/pdf
# 索引PDF
docker run --gpus all -v $(pwd):/rag -v $(pwd)/docs/pdf:/data -v $(pwd)/models:/app/models \
docker.jolibrain.com/colette_gpu \
bash -c "colette_cli index --app-dir /rag/app_colette --data-dir /data --config-file src/colette/config/vrag_default_lite.json --models-dir /app/models"
# 提問
docker run --gpus all -v $(pwd):/rag -v $(pwd)/app_colette:/app/app_colette -v $(pwd)/models:/models \
docker.jolibrain.com/colette_gpu \
bash -c "colette_cli chat --app-dir app_colette --models-dir /models --msg \"What are the identified sources of errors of a RAG?\""
資源
相關
- 專案
- 專案