ハイブリッド検索とマルチフォーマット対応のローカルファースト ドキュメント RAG システム
開発者ツールを構築するチームは、完全にローカルでプライバシーを保護するドキュメントインテリジェンスシステムを必要としていました。このシステムは、複数のファイル形式を取り込み、検索可能なナレッジベースを構築し、外部 API にデータを送信することなく Retrieval-Augmented Generation (RAG) を使用して自然言語クエリに回答できるものでした。
プロジェクトを相談する
課題
既存の RAG ソリューションには、プライバシーを重視する開発者向けのユースケースにおいて、以下の重要な制限がありました。
- 外部 API への依存 — ほとんどの RAG ツールは、ドキュメントコンテンツをクラウドベースの埋め込み API に送信する必要があり、プライバシー要件に違反していました
- 限定的なフォーマット対応 — ソリューションは通常、プレーンテキストまたは PDF のみを処理し、スプレッドシート、Word ドキュメント、HTML、Markdown を無視していました
- 不十分なチャンク化 — 素朴なテキスト分割は、ドキュメント構造(ページ、シート、見出し)を無視し、コンテキストが不十分なチャンクを作成していました
- キーワードの抜け — 純粋な埋め込みベースの検索では、語彙検索が捉えるであろう正確なキーワードの一致を見逃していました
- スプレッドシートへの不対応 — RAG システムは、構造化された表形式データを処理したり、フィルタリング/集計クエリに回答したりできませんでした
- 再ランキングなし — 最初の検索パスでは、2回目の品質フィルターなしでは部分的に関連性の高い結果しか得られないことがよくありました
私たちのソリューション
私たちは、マルチフォーマットのドキュメント取り込み、構造を意識したチャンク化、ローカルでの埋め込み生成、ハイブリッド検索パイプライン(セマンティック + 全文検索 + 新規性)、クロスエンコーダー再ランキング、および Web ベースの UI を備えた完全なローカルファースト RAG システムを構築しました。これらはすべてユーザーのマシン上で完全に動作します。
アーキテクチャ
- ドキュメントローダー: PDF, DOCX, XLSX, CSV, HTML, Markdown, およびプレーンテキスト用のフォーマット固有のパーサー
- チャンカー: ページ、シート、見出しの境界を維持する構造を意識した分割
- 埋め込み: Transformers.js を介したローカル埋め込みモデル(外部 API 呼び出しなし)
- ベクトルデータベース: 埋め込みストレージと類似性検索のための LanceDB(サーバーレス、ファイルベース)
- 全文検索: 語彙一致のためのトリグラムベースのインデックス作成
- 再ランキング: コンテキストを意識した結果スコアリングのためのクロスエンコーダーモデル
- クエリアナライザー: セマンティッククエリと構造化クエリ間の意図検出ルーティング
- Web サーバー: プロジェクト管理および検索エンドポイントを備えた Express.js API
- フロントエンド: ドキュメントのアップロード、管理、インタラクティブ検索のための Web ベースの UI
ドキュメント処理パイプライン
マルチフォーマットローダー
レジストリパターンは、ファイルタイプを自動検出し、適切なパーサーにルーティングします。
- PDF — ページレベルのセグメンテーションによるテキスト抽出
- Word (.docx/.doc) — ドキュメント階層を維持する見出し対応のパース
- Excel/CSV — ヘッダー検出と行レベルのコンテンツによるシートごとのパース
- HTML — 構造を保持するタグ対応の抽出
- Markdown — 見出しベースのセクションパース
- プレーンテキスト — 行ベースのセグメンテーション
各ローダーは、コンテンツとともにメタデータ(タイトル、著者、作成日、ページ/シート数、単語数)を抽出し、ソース参照付きの構造化されたセクションを生成します。
構造を意識したチャンク化
素朴なテキスト分割とは異なり、チャンカーはドキュメントの境界を尊重します。
- ページ区切り(PDF)、シート境界(スプレッドシート)、見出し階層(Word/Markdown)を保持
- 設定可能なチャンクサイズとオーバーラップを備えたトークンベースのサイズ調整
- 階層的なフォールバック: 最初にセクションで分割し、次に段落、次に文で分割
- 各チャンクは、帰属のためにソースメタデータ(ページ番号、シート名、見出し)を保持
埋め込みとインデックス作成
ローカル埋め込みモデル
- Transformers.js を介して完全にローカルで実行 — データはマシンから外に出ません
- パフォーマンス最適化のための量子化モデル
- 効率的な一括処理のためのバッチ埋め込み
- L2 正規化による単語境界での自動切り捨て
ベクトルストレージ
LanceDB はサーバーレスのベクトルストレージを提供します。
- ファイルベース(個別のデータベースサーバーは不要)
- 独立したインデックスによるプロジェクトごとの分離
- 重複排除のための SHA256 ベースのキャッシュキー
- フィルタリングされた検索のためのベクトルとともに保存されるメタデータ
ハイブリッド検索パイプライン
検索パイプラインは、単一のアプローチよりも優れた結果を得るために、3つのランキングシグナルを組み合わせます。
シグナル 1: 埋め込み検索(セマンティック)
ベクトル類似性検索は、異なる単語が使用されている場合でも関連する意味を持つチャンクを検出します。言い換え、同義語、概念的なクエリに対応します。
シグナル 2: 全文検索(語彙)
Jaccard 類似性を持つトリグラムベースのインデックス作成は、埋め込み検索では見逃される可能性のある正確なキーワード一致を捉えます。これは技術用語、名前、識別子にとって重要です。
シグナル 3: 新規性ブースト
指数減衰重み付けは、最近アクセスまたは変更されたドキュメントを優先し、最新の情報が最初に表示されるようにします。
スコアの組み合わせ
シグナルは、設定可能な重み(デフォルト: セマンティック 50%、語彙 25%、新規性 25%)で組み合わされ、正規化され、最小スコア閾値でフィルタリングされます。
クロスエンコーダー再ランキング
最初の検索の後、クロスエンコーダーモデルが上位候補を再スコアリングします。
- コンテキストを意識したスコアリングは、クエリとドキュメントのペアをまとめて考慮します(個別には考慮しません)
- 用語の重複に対するキーワードブースト計算
- ブレンドスコアリング(クロスエンコーダー + キーワードシグナル)
- 最初の検索パス単独よりも高い精度で最終的なランキングリストを生成します
構造化データサポート
スプレッドシートコンテンツの場合、システムは追加の機能を提供します。
- 列タイプ(数値、日付、ブール、文字列)の自動検出
- 自然言語フィルタリング(例:「しきい値を超える給与を持つエンジニアリング部門の従業員」)
- 集計サポート(カウント、合計、平均、最小、最大)
- クエリアナライザーは、埋め込み検索ではなく専用エンジンに構造化クエリをルーティングします
Web インターフェース
- プロジェクト管理 — ナレッジベースプロジェクトの作成、更新、削除
- ドキュメントアップロード — フォーマット自動検出機能付きのドラッグアンドドロップファイルアップロード
- ドキュメント作成 — UI でテキストから直接ドキュメントを作成
- インタラクティブ検索 — ランキング結果付きの自然言語クエリインターフェース
- 統計 — プロジェクトごとのインデックスサイズ、ドキュメント数、フォーマット分布
主な機能
- 完全ローカル — すべての処理をデバイス上で実行。埋め込みや検索のための外部 API 呼び出しなし
- 9種類の入力フォーマット — PDF, DOCX, DOC, XLSX, XLS, CSV, HTML, Markdown, プレーンテキスト
- 構造を意識したチャンク化 — ページ、シート、見出しをチャンク境界として保持
- ハイブリッド検索 — セマンティック、語彙、および新規性のシグナルを組み合わせて、より良い検索結果を実現
- クロスエンコーダー再ランキング — より高い精度を誇る結果のための2次スコアリング
- 構造化クエリ — スプレッドシートデータに対する自然言語フィルタリングと集計
- サーバーレスベクトル DB — インフラストラクチャのオーバーヘッドがない LanceDB ファイルベースストレージ
- ドキュメント書き込み — PDF, DOCX, および XLSX 作成のためのエクスポート機能
- プロジェクト分離 — 独立したインデックスを持つ独立したナレッジベース
- Web UI — ドキュメント管理とインタラクティブ検索のための完全なインターフェース
成果
技術スタック
caseStudyDetail.more ケーススタディ
その他の技術実装事例をご覧ください
マルチエージェントオーケストレーションとドキュメント間参照によるAIを活用したスプレッドシートおよびドキュメント分析
ある企業データチームは、Excel、CSV、Google Sheets、PDF、Word docsといった大量のスプレッドシートやドキュメントを自然言語で分析、クエリ、編集する必要がありました。これには、複数のファイル間でデータを相互参照し、手動でのデータラングリングなしに多段階の分析ワークフローを実行できる機能が求められました。
Catant HR & ワークフォース管理プラットフォーム
Catantは、企業が従業員、給与計算、勤怠、およびコンプライアンスを単一のダッシュボードから管理できるよう支援する、モジュラー型のHRおよびワークフォース管理プラットフォームです。
よくある質問
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 パイプラインを控えめなハードウェアで動作するように最適化しました。最小推奨構成は、32GB RAM、8 CPU コアを搭載し、オプションで高速なエンベディング生成のためのミッドレンジ GPU を備えたマシンです。GPU ハードウェアを持たない組織の場合、システムはわずかに高いレイテンシで CPU ベースのエンベディングモデルにフォールバックし、ベクトルデータベースは SSD ストレージ用にチューニングされており、最大 100 万のドキュメントチャンクのコーパスに対してクエリ応答時間を 200ms 未満に保ちます。