フェーズ 1: ドキュメントの取り込み (Ingestion)

ほとんどのRAGシステムは、動き出す前に失敗しています。

RAGシステムの構築は簡単だと思われがちです。ユーザーがPDFをアップロードし、埋め込み(embeddings)を作成すれば、回答が得られる、といった具合に。

それは間違いです。

アップロードボタンからベクトルデータベースに至るまで、そこには15の重要なステップが存在します。もし一つでも飛ばせば、システムは誤った回答を出したり、コストを無駄にしたりすることになります。

以下は、本番環境レベルのドキュメント取り込みのためのロードマップです:

• ファイル・ハッシュ化: ファイル名ではなく、実際のファイル内容をハッシュ化してください。これにより、誰かがファイル名を変更しても、同じファイルを二重に処理することを防げます。

• スマート・パース(解析): 用途に合わせて適切なツールを選択してください。

  • シンプルなテキスト: pdf-parse (無料)
  • 混合コンテンツ: Unstructured (バランス型)
  • 複雑な表やレイアウト: LlamaParse (高品質)
  • エンタープライズ向けフォーム: Azure Document Intelligence (スキャンに最適)

• テキスト・クリーニング: 不要な要素を削除します。ヘッダー、フッター、透かし、ページ番号などはノイズとなります。もし全ページに「機密 (Confidential)」という言葉が含まれたまま埋め込みを行うと、AIはすべての回答が機密事項であると判断してしまいます。

• メタデータ抽出: 部門、セクション、バージョンなどのコンテキストを追加します。これにより、すべてを検索することなく、システムが適切なドキュメントを見つけられるようになります。

• スマート・チャンキング: これが最も重要な部分です。

  • サイズ: 1000〜1500トークンを目安にします。
  • オーバーラップ: コンテキストを維持するために、200トークンのオーバーラップを使用します。
  • 境界: 文章の途中で分割しないでください。

• チャンクのハッシュ化と重複排除: すべてのチャンクをハッシュ化します。ファイルが変更された際は、新しいハッシュを古いものと比較します。

• インクリメンタル(増分)取り込み: すべてを再埋め込みしないでください。1000ページのドキュメントのうち1ページだけが変わった場合、その新しいチャンクだけを埋め込みます。これにより、APIコストを大幅に節約できます。

ホビープロジェクトと本番用システムの差は、埋め込みステップの前に行う作業にあります。

未熟なシステムは毎回すべてを再埋め込みしますが、賢いシステムは変更された部分のみを処理します。

寄せ集めのスープを作るのはやめましょう。強固な基盤を築いてください。

Source: https://dev.to/surajrkhonde/phase-1-document-ingestion-the-hidden-complexity-before-embeddings-4d32

Optional learning community: https://t.me/GyaanSetuAi