こんにちは。t.ozawaです。
先日snowflake data clowd world tourに参加し、「非構造化データとドキュメントAI」公演を聴いて来ましたので、その内容を共有します!
本講演では、snowflake上で非構造化データをテーブルに格納できるように前処理する場合にどんな方法があるのかという点で有益な情報がありました。
今回は、従来の非構造化データの処理方法2点と、新しい手法「ドキュメントAI」について、計3点について、内容を紹介します。
非構造化データを処理するための3手法
今までのSnowflake上の手段として、2点非構造化データをプレップする手段がありましたが、6月のSnow Summitで新規の手法が発表されました!
- 外部関数や外部アクセスを使って、非構造化データをSnowflake外で処理
- Snowparkを使ってPythonでSnowflake上で非構造化データを処理する関数を作成
- 「ドキュメントAI」を使って、非構造化データを処理するモデルを自動作成!!
1. 外部関数・外部アクセス
外部関数や外部アクセスを使って、Snowflake外で非構造化データを処理する方法です。
外部関数とは、AWS LambdaのようなSnowflake外でのサービスをSELECT文の中でAPI呼び出しするシステムです。
「非構造化データを処理する」外部関数 MyExternalFunction をSELECT文の中で呼び出すと、Snowflakeから外部サービスに対してAPIを叩き、外部サービス上で非構造化の処理を行い、Snowflakeへとリターンします。
また、プライベートプレビュー段階のサービス「外部アクセス」を制御することで、外部関数を安全に試行できます。
外部アクセスを使って、外部関数のセキュリティを高めるために、アクセスするAPIのURLを選択することができるようです。
2. Snowparkを使ってPythonでSnowflake上で処理
Snowparkを使うことで、外部サービスに依存することなく、Snowflake上のみで非構造化データを処理することができます。ソースコードはこちら
- CREATE FUNCTIONを作成し、Pythonを使ってSTAGE上の非構造化データを処理する関数を作成
- SELECT <FUNCTION名>で関数を呼び出し
このように、Pythonで作成した非構造化を処理する関数を綺麗な形で呼び出すことができます。
これらの手順は外部関数の呼び出しと似ており、Snowflakeの中で呼び出すか、外で呼び出すか、の違いだと思われます。
3.「ドキュメントAI」を使う!
本ブログの本題です。
2で紹介した、Snowparkの手法をさらに効率化することができる手法が「ドキュメントAI」になります。
Snowparkで非構造化データを処理する場合は、非構造化データから必要なデータを抽出し、取り出す必要があります。
例えば、非構造化データである下図の写真から「ドキュメントAI」という文字列を取り出したいとき、
① ライブラリを使ったりモデルを使って、写真から文字列を抽出する。② 所望の文字列を取り出す。
2点の作業が必要になります。
非構造化データだと、所望の文字列をうまく取り出すことができないケースも少なくありません。
ここで「ドキュメントAI」を使うことで、モデルを半自動で作成でき、所望の文字列を取り出す確率が上がります。
使用例
図の右側の明細書から、指定の文字列を取り出したいとき
- 明細書をSTAGEにアップ
- アップした明細書をドキュメントAIページで取り込み
- 図の左側のように、取り出したい文字列に関する質問・回答の一覧をユーザが作成。
例えば、「この明細書の中で、合計金額は何?」→ 「¥10900.00」 - 質問・回答をもとに、Snowflake側がモデルを自動作成
- モデルをSELECTすることで、文字列が取り出せる!
おわりに
非構造化データを処理する方法と、新規サービス「ドキュメントAI」を紹介しました!
画像やPDFから文字列を取り出すときに、上手くいかずにイライラするケースがたまにあるため、質問・回答を作成するだけでモデルを作ってくれるのは、とても助かります!
truestarではSnowflakeの検討、導入支援や環境構築からアプリ開発まで幅広くサポート可能です。
Snowflakeに゙興味がある、導入済みだけどもっとうまく活用したい等々ありましたら、ぜひこちらからご相談ください!