jolibrain/colette

Multimodal RAG to search and interact locally with technical documents of any kind

Colette – オンプレミス型ビジュアルRAGプラットフォーム

何であるか – Coletteはオープンソースでオンプレミス型の検索拡張生成(RAG)システムであり、外部APIにデータを送信せずに技術文書をインデックス化・検索できます。特徴的なのは「ビジュアルRAG(V-RAG)」:ドキュメントの各ページを画像として扱うため、表、図、図面、レイアウトが完全に保持され、ビジュアル埋め込みで検索可能になります。

主な機能

  • ビジュアルRAG(V-RAG)gme-Qwen2-VLなどのビジョン埋め込みモデルと、Qwen3-VLなどのマルチモーダルLLMを使用して、ページ単位の画像を埋め込み、検索します。
  • ハイブリッド検索 – ChromaDB/ColDBのベクトル検索エンジンとTantivyのBM25語彙検索エンジンを並列で実行し、製品コードや部品番号などに有効です。
  • HyDE(仮想文書埋め込み) – LLMで短い「仮想的な回答」を生成し、元の質問ではなくその回答を埋め込みます。これにより、技術的な質問でのリコール率が向上します。
  • テキストのみRAG – 画像処理が不要な文書向けに、unstructured + langchainを使用した従来のパイプライン。
  • 複数バックエンドLLM対応 – HuggingFace、vLLM、Ollama、およびカスタムvllm_clientに対応。
  • 画像生成diffusersを介してStable Diffusionと統合し、視覚的出力を可能にします。
  • レイアウト検出 – ページを自動的にtextfiguretablefull_pageの領域に切り分け、結果の細かいフィルタリングを可能にします。
  • Docker化デプロイcolette_gpucolette_gpu_servercolette_uiの実行可能イメージと、ビルド・公開用のCIパイプラインを提供。

アーキテクチャの概要 – READMEには、3つの主要コンポーネントを示す図があります:(1) インジェスト(PDF → 画像切り取り → ビジョン/テキスト埋め込み)、(2) ストレージ(ベクトルDB + BM25インデックス)、(3) 推論(LLMが取得したコンテキストを使って回答を生成)。すべてのコンポーネントはJSONファイルで構成可能です。

一般的なワークフロー

  1. インストール – Docker(推奨)またはPython仮想環境。Python ≥ 3.12、CUDA ≥ 12.1、24GB VRAM以上のGPU(または設定で軽量モデルを使用可能)が必要。
  2. インデックス作成colette_cli index …でPDFフォルダを指定。システムは画像切り取りを行い、ビジョン/テキストエンコーダーを実行し、埋め込みを保存します。
  3. クエリcolette_cli chat …またはPython API(JSONApiAPIData)で質問を送信。システムは関連する画像/テキストチャンク(埋め込み、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ノートブックも提供されています。

誰が使うべきか

  • 自社の技術マニュアル、航空宇宙文書、図面など、視覚的レイアウトが重要で、データを外部に漏らしてはならない企業や研究グループ。
  • 極めて厳格な機密性を守らなければならない社内知識ベースアシスタントを開発するチーム。
  • マルチモーダル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?\""

リソース

関連

  • プロジェクト
  • プロジェクト