ClaudeやChatGPTのような生成AIモデルの最近の進歩により、データベースへのクエリが非常に簡単になりました。 特に興味深い点は、これらのAIモデルは、与えられたDBスキーマ情報に基づいて、自然言語クエリとそれに対応するDBクエリ(SQL)文を自動的に生成できることだ。 これにより、ユーザーは複雑なクエリを書くことなく、自然言語を使ってデータベースに問い合わせることができる。 したがって、これはRAG(Retrieval-Augmented Generation)技術の部分的な応用と見ることができる。
DBスキーマは、テーブル、フィールド、リレーションシップなどを含むデータベースの構造を定義する。 このスキーマ情報がAIモデルの入力として提供されると、モデルはスキーマを分析し、どのような情報が格納されているかを理解する。 これに基づいて、モデルはユーザーがデータベースについてどのような質問ができるかを推測し、適切な自然言語クエリを生成する。
これにより、ユーザがDBのスキーマを直接分析し、マッチする質問を考えなければならない不便さを大幅に軽減することができます。 また、SQL構文に詳しくないユーザでも、自然言語を使って簡単にDBに問い合わせることができます。
この記事では、BigQueryでGmailのログスキーマを使用して自然言語クエリとSQL文を生成する方法を紹介します。
2023年2月より、GmailのログがWorkspaceのログやレポートと統合され、BigQueryのジョブが簡素化され、すべてのBigQueryデータを一箇所で管理できるようになりました。 すべてのWorkspaceサービスのBigQueryログとレポートは、Google Admin Consoleの同じ場所で管理できます。 GmailのBigQueryビュー、クエリ、スクリプトをWorkspaceのログとレポートに移行することをお勧めします。
BigQuery用GmailログDBスキーマベースの自然言語クエリとBigQuery用SQLの例
重要なポイントは、DBスキーマに関する情報を提供することで、AIがユーザーの視点から意味のある自然言語クエリを生成できることだ。 つまり、直接コードを書かなくても、会話を通じてデータ分析が可能になる。 これは今後さらに発展することが予想され、誰でも簡単にデータベースにアクセスし、洞察を得ることができるようになる。
以下に挙げる自然言語クエリやSQL文は、BigQueryでGmailのログ分析を行う際に、データベース(SQL)の専門家でなくても様々な観点からGmailのログを分析することができます。 これにより、幅広いユーザーが、豊富な技術的知識がなくても、Gmailデータから意味のある洞察を導き出せるようになることが期待されます。
Schema for Gmail logs in BigQuery
Gmail Schema情報(Geminiの場合は画像として、Claude/ChatGPTの場合はPDFとしてアップロードされている)を入力した後、各生成AIに以下の質問をする。
プロンプト Gmailのスキーマ情報に基づいて、10個の自然言語クエリとそれに対応するSQL文を書きました:
自然言語クエリ
- 2023年1月1日以降に送信されたスパムメールの送信者メールアドレス、分類タイムスタンプ、およびスパム分類の理由を取得する
SQL statements
SELECT message_info.source.address, message_info.spam_info.classification_timestamp_usec, message_info.spam_info.classification_reason
FROM project.dataset.table
WHERE message_info.is_spam = true AND event_info.timestamp_usec >= UNIX_MICROS(TIMESTAMP('2023-01-01'))
- Gmail がスパムとして分類した後に解除したメールの RFC2822 Message-ID、スパム分類のタイムスタンプ、アクションの種類、および説明を取得する
SELECT message_info.rfc2822_message_id, message_info.spam_info.classification_timestamp_usec, message_info.action_type, message_info.description
FROM project.dataset.table
WHERE message_info.is_spam = true AND message_info.action_type = 69
- 過去 30 日間に添付ファイル コンプライアンス ポリシーによって添付ファイルが削除されたメールの送信者、受信者のメールアドレス、削除された添付ファイル名を取得します。
SELECT message_info.source.address, message_info.destination.address, message_info.triggered_rule_info.string_match.attachment_name
FROM project.dataset.table
WHERE message_info.triggered_rule_info.rule_type = 16 AND event_info.timestamp_usec >= UNIX_MICROS(CURRENT_TIMESTAMP()) - 302460601000000
- S/MIME で暗号化された電子メールの送信者、受信者の電子メール アドレス、および暗号化の成功を取得します。
SELECT message_info.source.address, message_info.destination.address, message_info.destination.smime_decryption_success
FROM project.dataset.table
WHERE message_info.smime_content_type = 3
もう少し詳しくは「amazon.co.jp「Claude 3 AIの活用 :文章作成およびビジネス業務 Kindle版」からの抜粋です」をご覧ください。 https://bit.ly/4dW1cNH