ハイブリッド検索と複数形式対応を備えたローカルファースト ドキュメント RAG システム
開発者ツールを構築するチームは、外部 API にデータを一切送信することなく、複数のファイル形式を取り込み、検索可能なナレッジベースを構築し、Retrieval-Augmented Generation (RAG) を使用して自然言語クエリに回答できる、完全にローカルでプライバシーを保護するドキュメントインテリジェンスシステムを必要としていました。
プロジェクトを相談する
課題
既存の RAG ソリューションには、プライバシーを重視する開発者向けのユースケースにおいて、重大な制約がありました。
- 外部 API への依存 — ほとんどの RAG ツールは、ドキュメントコンテンツをクラウドベースの embedding API に送信する必要があり、プライバシー要件に違反していました
- 限られた形式対応 — ソリューションは通常、プレーンテキストまたは PDF のみを処理し、スプレッドシート、Word 文書、HTML、Markdown を無視していました
- 不十分なチャンキング — 幼稚なテキスト分割は、ドキュメント構造(ページ、シート、見出し)を無視し、コンテキストに乏しいチャンクを作成していました
- キーワードの欠落 — 純粋な embedding ベースの検索では、lexical search が捉えるはずの正確なキーワードマッチが見逃されていました
- スプレッドシート対応不足 — RAG システムは、構造化された表形式データを処理したり、フィルタリング/集計クエリに回答したりできませんでした
- Reranking の欠如 — 最初の retrieval では、2段階目の品質フィルターなしでは、部分的にしか関連性のない結果しか表示されないことがよくありました
私たちのソリューション
私たちは、複数形式のドキュメント取り込み、構造を考慮したチャンキング、ローカルでの embedding 生成、ハイブリッド検索パイプライン(semantic + full-text + recency)、cross-encoder reranking、および Web ベースの UI を備えた完全なローカルファースト RAG システムを構築しました — これらすべてはユーザーのマシン上で完全に動作します。
アーキテクチャ
- ドキュメントローダー:PDF、DOCX、XLSX、CSV、HTML、Markdown、プレーンテキスト用の形式固有のパーサー
- チャンカー:ページ、シート、見出しの境界を維持する、構造を考慮した分割
- Embeddings:Transformers.js を介したローカル embedding モデル(外部 API 呼び出しなし)
- Vector Database:embedding ストレージと類似性検索のための LanceDB (サーバーレス、ファイルベース)
- Full-Text Search:lexical matching のためのトリグラムベースのインデックス作成
- Reranker:コンテキストを考慮した結果スコアリングのための cross-encoder モデル
- クエリアナライザー:semantic クエリと structured クエリ間の意図検出ルーティング
- Web サーバー:プロジェクト管理および検索エンドポイントを備えた Express.js API
- フロントエンド:ドキュメントのアップロード、管理、インタラクティブ検索のための Web ベースの UI
ドキュメント処理パイプライン
複数形式ローダー
レジストリパターンがファイルタイプを自動検出し、適切なパーサーにルーティングします。
- PDF — ページレベルのセグメンテーションによるテキスト抽出
- Word (.docx/.doc) — ドキュメント階層を維持する見出しを考慮した解析
- Excel/CSV — ヘッダー検出と行レベルのコンテンツによるシートごとの解析
- HTML — 構造を維持するタグを考慮した抽出
- Markdown — 見出しベースのセクション解析
- Plain Text — 行ベースのセグメンテーション
各ローダーは、コンテンツとともにメタデータ(タイトル、作成者、作成日、ページ/シート数、単語数)を抽出し、参照元を含む構造化されたセクションを生成します。
構造を考慮したチャンキング
幼稚なテキスト分割とは異なり、チャンカーはドキュメントの境界を尊重します。
- ページ区切り(PDF)、シート境界(スプレッドシート)、および見出し階層(Word/Markdown)を維持
- 設定可能なチャンクサイズとオーバーラップを備えたトークンベースのサイズ設定
- 階層的フォールバック:まずセクションで分割し、次に段落、そして文で分割
- 各チャンクは、帰属のためにソースメタデータ(ページ番号、シート名、見出し)を保持
Embedding とインデックス作成
ローカル Embedding モデル
- Transformers.js を介して完全にローカルで実行 — データはマシンから離れません
- パフォーマンス最適化のための量子化モデル
- 効率的な一括処理のためのバッチ embedding
- L2 正規化による単語境界での自動切り捨て
ベクターストレージ
LanceDB はサーバーレスのベクターストレージを提供します。
- ファイルベース(個別のデータベースサーバーは不要)
- 独立したインデックスによるプロジェクトごとの分離
- 重複排除のための SHA256 ベースのキャッシュキー
- フィルターされた retrieval のために、ベクトルとともに格納されるメタデータ
ハイブリッド検索パイプライン
この retrieval パイプラインは、単一のアプローチよりも優れた結果を得るために、3つのランキングシグナルを組み合わせます。
シグナル 1:Embedding 検索(Semantic)
ベクトル類似性検索は、異なる単語が使用されている場合でも、関連する意味を持つチャンクを見つけます。言い換え、同義語、概念的なクエリを処理します。
シグナル 2:Full-Text Search(Lexical)
Jaccard 類似度を持つトリグラムベースのインデックス作成は、embedding 検索が見逃す可能性のある正確なキーワードマッチを捉えます — これは専門用語、名前、識別子にとって重要です。
シグナル 3:Recency Boost
指数関数的な減衰重み付けは、最近アクセスまたは変更されたドキュメントを優先し、最新の情報が最初に表示されるようにします。
スコアの組み合わせ
シグナルは、設定可能な重み(デフォルト:semantic 50%、lexical 25%、recency 25%)で結合され、正規化され、最小スコアしきい値でフィルタリングされます。
Cross-Encoder Reranking
初期 retrieval の後、cross-encoder モデルが上位候補を再スコアリングします。
- コンテキストを考慮したスコアリングは、クエリとドキュメントのペアを(独立してではなく)まとめて考慮します
- 用語の重複のためのキーワードブースト計算
- ブレンドされたスコアリング(cross-encoder + キーワードシグナル)
- 最初の retrieval だけよりも高い精度を持つ最終的なランク付けリストを生成
構造化データサポート
スプレッドシートコンテンツの場合、システムは追加機能を提供します。
- 列タイプ(数値、日付、ブール値、文字列)の自動検出
- 自然言語フィルタリング(例:「給与がしきい値を超えるエンジニアリング部門の従業員」)
- 集計サポート(count、sum、average、min、max)
- クエリアナライザーは、構造化クエリを embedding 検索ではなく専用エンジンにルーティングします
ウェブインターフェース
- プロジェクト管理 — ナレッジベースプロジェクトの作成、更新、削除
- ドキュメントアップロード — 形式自動検出によるドラッグ&ドロップファイルアップロード
- ドキュメント作成 — UI でテキストから直接ドキュメントを作成
- インタラクティブ検索 — ランク付けされた結果を持つ自然言語クエリインターフェース
- 統計 — プロジェクトごとのインデックスサイズ、ドキュメント数、形式分布
主要機能
- 完全ローカル — すべての処理をデバイス上で実行。embedding や検索のための外部 API 呼び出しなし
- 9つの入力形式 — PDF、DOCX、DOC、XLSX、XLS、CSV、HTML、Markdown、プレーンテキスト
- 構造を考慮したチャンキング — ページ、シート、見出しをチャンク境界として保持
- ハイブリッド検索 — semantic、lexical、recency のシグナルを組み合わせて、より良い retrieval を実現
- Cross-Encoder Reranking — より高い精度結果のための2段階目スコアリング
- 構造化クエリ — スプレッドシートデータに対する自然言語フィルタリングと集計
- サーバーレス Vector DB — インフラオーバーヘッドなしの LanceDB ファイルベースストレージ
- ドキュメント作成 — PDF、DOCX、XLSX 作成のためのエクスポート機能
- プロジェクト分離 — 独立したインデックスを持つ独立したナレッジベース
- Web UI — ドキュメント管理とインタラクティブ検索のための完全なインターフェース
成果
技術スタック
caseStudyDetail.more ケーススタディ
その他の技術実装事例をご覧ください
マルチエージェントオーケストレーションとドキュメント間相互参照によるAI活用型スプレッドシート&ドキュメント分析
企業データチームは、自然言語を使用して大量のスプレッドシートとドキュメント(Excel, CSV, Google Sheets, PDF, Word ドキュメント)を分析、クエリ、編集する必要がありました。これには、複数のファイル間でデータを相互参照し、手作業でのデータラングリングなしに多段階の分析ワークフローを実行する機能が求められました。
AIを活用したOCRによる請求書処理とQuickBooks連携
毎月数百件の仕入先請求書を処理する中規模企業が、AI/OCRを使用して請求書データを自動抽出し、それを記帳と支払追跡のためにQuickBooksに直接同期させることで、手動データ入力を排除する必要がありました。
よくある質問
MicrocosmWorksは、すべてのドキュメントの取り込み、エンべディング生成、ベクターストレージ、およびLLM推論が、外部のクラウドAPIにデータを送信することなく、お客様のインフラストラクチャ上で完全に実行されるlocal-first RAGシステムを構築しました。このアーキテクチャは、データ主権の要件により、暗号化されていてもいかなるクラウド処理も禁止されている機密文書、弁護士と依頼人の間の秘匿特権のある資料、または機密性の高い知的財産を取り扱う組織にとって不可欠です。
MicrocosmWorksは、BM25キーワード検索と密なベクターセマンティック検索を並行して実行し、reciprocal rank fusionを使用して結合された結果をマージし、再ランク付けしてからLLMにコンテキストとして渡すハイブリッド検索パイプラインを実装しました。このアプローチは、セマンティック検索が見逃すような製品コードや法的引用といった完全一致のクエリを捕捉すると同時に、キーワード検索では決して見つけられない概念的に関連するコンテンツも取得します。
MicrocosmWorksは、PDF、DOCX、XLSX、PPTX、HTML、Markdown、およびプレーンテキスト用の形式固有のパーサーを構築し、スキャンされたPDFや画像ベースのドキュメントにはTesseractを使用したOCRパイプラインを備えています。システムは、PDFが選択可能なテキストを含んでいるか、OCRを必要とするかを自動的に検出し、レイアウト分析を適用してテーブル構造と読み取り順序を保持し、任意の文字制限ではなく意味的な境界を使用してドキュメントをチャンク分割することで、検索品質を向上させます。
MicrocosmWorksは、ドキュメントのチェックサムを追跡し、最後の取り込み実行以降に変更されたファイルのみを再処理する増分インデックス作成を実装しました。更新されたドキュメントは、古いチャンクが削除され、新しいチャンクがアトミックに挿入されるため、検索インデックスは一貫性のない状態になることはありません。システムはバージョン管理されたドキュメント検索もサポートしており、ユーザーは監査またはコンプライアンスの目的で必要とされる場合、ドキュメントの履歴バージョンに対してクエリを実行できます。
MicrocosmWorksは、ローカルRAGパイプラインをmodestなハードウェアで実行できるように最適化しました。最小推奨構成は、32GB RAM、8 CPUコアを搭載したマシンであり、オプションでエンべディング生成の高速化のためにミッドレンジGPUを使用できます。GPUハードウェアを持たない組織の場合、システムはわずかに高いレイテンシーでCPUベースのエンべディングモデルにフォールバックし、ベクターデータベースは最大100万ドキュメントチャンクのコーパスに対してクエリ応答時間を200ms未満に保つためにSSDストレージに最適化されています。