「社内の仕様書をRAGで検索できるようにしたい」——そう思って試してみたら、PDFの図表が無視された、Excelの数値が文脈なく切り出された、スキャン画像は丸ごとスキップ……という経験、ありませんか?
テキスト抽出ベースのRAGには明確な壁があります。現実のドキュメントは、テキストだけで成り立っているわけではないからです。財務報告書には表とグラフがあり、技術マニュアルには図解があり、研究論文には数式が並んでいます。それらを「テキスト以外は捨てる」という方針で処理すれば、当然ながら回答の質は落ちます。
そこに登場したのが、香港大学DS Labが開発した RAG-Anything です。GitHubスター数は約2万(2025年時点)、「あらゆる形式を丸ごとRAG化する」をコンセプトにしたAll-in-Oneフレームワークです。本記事では、その仕組み・使い方・副業への活用方法まで徹底解説します。
RAGとは?まず基本をおさらい
RAG(Retrieval-Augmented Generation)とは、LLM(大規模言語モデル)が回答を生成する前に、関連ドキュメントを検索して文脈として渡す技術です。ChatGPTのような生成AIは学習済みの知識しか持っていませんが、RAGを使えば「社内ドキュメント」「最新資料」など、モデルが知らない情報を動的に参照させることができます。
構成はシンプルで、①ドキュメントをチャンク(断片)に分割 → ②ベクトル化してDBに保存 → ③質問に近いチャンクを検索 → ④LLMに渡して回答生成、という流れです。この仕組みのおかげで「幻覚(ハルシネーション)」が減り、根拠のある回答が得やすくなります。RAGの活用は社内検索・カスタマーサポート・技術文書Q&Aなど幅広く、エンジニアが副業や社内ツールとして構築するケースも増えています(副業に使えるOSSツールも参考にどうぞ)。
ただし従来型のRAGは、前述のとおりテキスト以外の要素に弱いという課題を抱えています。
RAG-Anythingとは:マルチモーダル対応のAll-in-One RAGフレームワーク
RAG-Anythingは、HKUDS/RAG-Anything として公開されているOSSです。内部的には LightRAG(グラフ構造ベースのRAGエンジン)と MinerU(高精度なドキュメント構造抽出ライブラリ)を組み合わせており、テキスト・画像・表・数式・図表を統一的な知識グラフとして管理します。
最大の特徴は、VLM(視覚言語モデル)との統合です。画像や図表を含むドキュメントは、テキスト抽出だけでなくVLMによる視覚的な分析も行われ、「グラフが示すトレンド」「図中のラベル」なども検索対象になります。これはテキスト抽出ベースのRAGでは実現できなかった領域です。
また、エンティティ抽出とクロスモーダルな関係発見により、マルチモーダル知識グラフを自動構築します。「表Aの数値」と「本文の説明」と「図Bのビジュアル」が同一コンテキストとして紐づくイメージです。
対応ファイル形式と主な機能
RAG-Anythingが対応しているファイル形式は以下のとおりです:
| カテゴリ | 形式 |
|---|---|
| オフィス文書 | PDF、Word(.docx)、Excel(.xlsx)、PowerPoint(.pptx) |
| 画像 | BMP、TIFF、GIF、WebP、PNG、JPG |
| テキスト | Markdown(.md)、テキスト(.txt) |
主な機能をまとめると:
- マルチモーダル統合インデックス:テキスト・画像・表・数式を単一のRAGパイプラインで管理
- MinerU統合:PDFのレイアウト解析・数式のLaTeX変換・表の構造的抽出を高精度で実施
- VLM強化クエリ:画像を含むドキュメントへの質問でVLMが画像内容を分析
- LightRAGベースのグラフRAG:エンティティ間の関係を保持したまま検索できるため、単純な類似検索より文脈理解が深い
- 非同期処理:
asyncioベースで設計されており、大量ドキュメントの並列処理に対応
なお、PDFや画像をMarkdown形式に変換して前処理したい場合は、MarkItDownでドキュメントをMarkdown化というアプローチも組み合わせると便利です。
RAG-Anythingのセットアップと基本的な使い方
インストール
# 基本インストール
pip install raganything
# 全機能(MinerUのフル依存関係を含む)
pip install 'raganything[all]'
Pythonは3.10以上を推奨します。VLM機能を使う場合はOpenAIのAPIキー(またはOllamaなどのローカルLLM)が必要です。
基本的なコードサンプル
import asyncio
import os
from raganything import RAGAnything
async def main():
# 作業ディレクトリとAPIキーの設定
working_dir = "./rag_storage"
os.makedirs(working_dir, exist_ok=True)
# RAGAnythingの初期化
rag = RAGAnything(
working_dir=working_dir,
llm_model_func=None, # Noneの場合はデフォルトのOpenAIモデルを使用
vision_model_func=None, # VLM(画像解析用)
)
# PDFドキュメントをRAGに登録(テキスト・画像・表すべてを処理)
await rag.process_document_complete(
file_path="technical_manual.pdf",
metadata={"source": "technical_manual", "version": "v2.1"}
)
# Excelファイルも同じインターフェースで処理可能
await rag.process_document_complete("financial_report.xlsx")
# 質問する(マルチモーダルな回答が返ってくる)
result = await rag.query(
"第3章の性能比較表において、最も高速なアルゴリズムはどれですか?"
)
print(result)
# 複数のモードで検索(local: 局所的, global: 大域的, hybrid: 両方)
result_hybrid = await rag.query(
"売上トレンドと主な要因をまとめてください",
mode="hybrid"
)
print(result_hybrid)
asyncio.run(main())
このコードだけで、PDFの図解・Excelの数値表・本文テキストを統合したインデックスが構築されます。process_document_completeは内部でMinerUを使ったドキュメント解析、VLMによる画像記述生成、知識グラフへの登録をすべて自動で行います。
より複雑なワークフロー(複数エージェントの連携など)が必要な場合は、OpenAI Agents SDKでマルチエージェント構築と組み合わせる設計も有効です。
副業・業務効率化への活用ユースケース3選
ユースケース1:社内技術文書の横断検索システム
製品マニュアル・API仕様書・障害報告書など、図表込みの技術ドキュメントが散在している企業に向けた社内検索ツールを構築できます。RAG-Anythingを使えば、PDFの図解や仕様表もインデックス化されるため、「配線図の○○端子の仕様は?」のような質問にも画像情報を踏まえた回答が得られます。
副業案件として「既存ドキュメントをRAG化して社内Slack Botと接続する」というスコープは、数週間で納品できる現実的なプロジェクトです。
ユースケース2:財務・投資レポートの自動分析ツール
決算資料や有価証券報告書はPDFが多く、グラフや表が豊富です。RAG-Anythingで複数期分の資料をインデックス化し、「前年比で最も利益率が改善したセグメントは?」「キャッシュフロー計算書の傾向を要約して」といった質問を投げると、表の数値と本文説明を統合した回答が返ってきます。投資リサーチの効率化や、FP向けSaaSの構築に応用できます。
ユースケース3:マルチモーダル対応ドキュメント検索SaaS
「自社ドキュメントをアップロードするだけで使えるQ&AサービスをSaaSとして提供する」という副業モデルです。RAG-Anythingをバックエンドに使い、フロントエンドをOpen WebUIをセルフホストする方法で構築するアプローチが低コストで実現しやすいです。
サーバー運用には、コストパフォーマンスの高いVPSが欠かせません。RAGシステムの常時稼働には ConoHa VPS(月額最安クラスのVPS) がおすすめです。メモリ2GB〜のプランでRAGサーバーを動かし、月額固定コストを抑えながらサービス提供できます。
まとめ
RAG-Anythingは、「テキスト以外は捨てる」という従来型RAGの限界を正面から解決するフレームワークです。
- PDF・Word・Excel・PowerPoint・画像をすべて統一インデックス化できる
- MinerU + VLMの組み合わせで、図表・数式・画像も検索対象になる
- LightRAGベースの知識グラフにより、コンテキストを保った深い検索が可能
pip install raganythingだけで始められ、非同期APIで使いやすい
特に「社内ドキュメントにPDFの図表が多い」「Excelの数値も含めて横断検索したい」「副業でドキュメント系SaaSを作りたい」というエンジニアにとって、試す価値の高いOSSです。スター数2万を超えた勢いはまだ続いており、開発も活発なので今から触っておくのがおすすめです。
よくある質問(FAQ)
Q. ローカルLLMと組み合わせて使えますか?
A. はい。RAG-AnythingはOpenAI APIだけでなく、OllamaなどのローカルLLMとも組み合わせ可能です。llm_model_funcとvision_model_funcに任意のモデル呼び出し関数を渡せます。
Q. MinerUは別途インストールが必要ですか?
A. pip install 'raganything[all]'でMinerUを含む全依存関係がインストールされます。基本インストール(pip install raganything)でも動作しますが、PDF解析の精度はMinerUありの方が大幅に高くなります。
Q. 日本語ドキュメントにも対応していますか?
A. LLMとVLMが日本語対応であれば問題ありません。ただし、MinerUのレイアウト解析は英語ドキュメントで最も精度が高い傾向があります。日本語PDFでは縦書きや特殊レイアウトで崩れるケースもあるため、まず手元の資料で動作確認することをおすすめします。
Q. 大量ドキュメントの処理にはどのくらいのスペックが必要ですか?
A. 小規模(数十ファイル程度)ならメモリ8GB程度のマシンで動作します。VLMを使う場合はGPU(VRAM 8GB以上)があると快適です。本番運用ではVPS上でDockerコンテナとして動かすのが管理しやすいです。
Q. 既存のRAGパイプラインと統合できますか?
A. RAG-Anythingは独立したフレームワークとして設計されていますが、LightRAGのインターフェースを通じて他のシステムと連携することは可能です。ただし、LangChainやLlamaIndexとの直接統合は現時点(2025年5月)では公式サポートされていないため、アダプター層の実装が必要になります。


コメント