1. はじめに
先日、Dataiku ver 13.4.0 がリリースされました!今回のアップデートにはさまざまな新機能が追加されていますが、その中でも特に注目したいのが「ドキュメントの埋め込み」機能です。
https://doc.dataiku.com/dss/latest/release_notes/13.html#version-13-4-0-february-9th-2025
今回は新機能である、ドキュメントファイルからの埋め込みを紹介します。
2. ドキュメントの埋め込み機能とは?
社内のドキュメントやLLMが学習してないような独自のドキュメントの多くがpdfやdoc形式で保存されていますが、これらのファイルを用いてRAGを構築しようとすると、いくつかの課題を解決する必要があります。
まずドキュメントファイルからテキスト抽出をする必要があります。OCRなど用いると、画像に変換する必要があるなど、少々面倒なところもあります。
また、数表やグラフなどがある場合、数表の形式が崩れて、正確に数字が拾えなくなることや表自体が欠損することもあります。
これまでファイル変換、テキスト抽出や整形に手間がかかっていたものが、Dataikuの新しい機能であるドキュメントからの埋め込み機能では、ドキュメントファイルからベクトルストア(RAG用のデータセット)まで一気に作成できるようになりました。
新機能ではpdfだけなく、docやtxt、pptxなどのファイル形式も対応しています。
毎回、テキスト抽出のフローを作成しなくても、一気にベクトルストアを作成できるようになります。
https://doc.dataiku.com/dss/latest/generative-ai/knowledge/documents.html
今回はテキストと画像の混ざったpdfファイルを使って埋め込みできるかどうか検証してみます。今回検証に使ったものは以下のダミーデータになります。
3.実装方法
実装方法としてはDataikuのフローのフォルダーを作成してpdfを格納します。
pdfを格納したフォルダを選択すると右側のサイドバーに「ドキュメントの埋め込み」というアイコンが出てくるので選択します。

選択すると次のような画面に移動します。フォルダにあるファイルの形式の設定です。今回はpdfだけなのでpdfのみにします。
ApplyはVLM extractionにします。VLM extractionではpdfを画像として受け取り、マルチモーダルに扱うことが可能です。このVLM extractionを選択すると、RAGの回答時に参考となるドキュメントを画像として確認することができます。
VLM extractionの概要

レシピを実行すると2つのアウトプットが出力されます。一つはドキュメントを画像にしたものと、ナレッジバンク(Dataikuに置けるベクトルストア)が出力されます。

Dataikuでのナレッジバンクを用いたRAGの構築に関しては以下のブログを参照してください。
Dataiku LLMメッシュをつかってRAGをつくってみた
https://www.keywalker.co.jp/blog/dataiku-llm-mesh-rag.html
実際にRAGとして機能するかプロンプトスタジオで確認してみます。
参考プロンプト
静岡市で食べたものについて教えてください。
回答は以下のようになります

ドキュメントの中に静岡市で食べたものについて言及してるので、ほぼ正しく取得できているようです。(コロッケそばのそばの部分が取得できていないようです)

参考プロンプト
看板にはなんと書いてある?詳しく教えてください。
回答は以下のようになりました。

View folderから該当するドキュメントを確認することが可能です。
参考プロンプトに対して、ドキュメントの中にある画像の中の文字もきちんと取得できているようです。

参考プロンプト
静岡市の最高気温と最低気温を教えてください。
回答は以下のようになりました

ドキュメントには数表も含まれていますが、きちんと取得できているようです。プロンプトに対して正確に答えられてます。

4.最後に
今回は新しい機能であるpdfからの埋め込みについて解説しました。実際にRAGを構築する際は、今回紹介したような図や表が混ざったようなドキュメントもあり、実装の障害になることもあります(数字を正しく取得できないことがあります。)
今回のようにマルチモーダルに処理を行うことによって、数表がある場合でもRAGとして機能できるものが簡単にDataikuで作ることが可能になります。
株式会社キーウォーカーでは、豊富なRAG構築の経験を活かして、自社データを用いたチャットボットやRAGの構築、構築支援を行っております。 また、Dataikuの公式パートナーとして伴走支援なども行っておりますので、お気軽にお問い合わせください。