[[BigQuery]] の AI/ML 機能は「**機能軸**」と「**API 形態軸**」の 2 軸で整理すると正確に全体像が見える。2026 年 4 月時点で[[BigQuery マネージド AI 関数|マネージド AI 関数]] ([[BigQuery AI.IF 関数|AI.IF()]] / [[BigQuery AI.SCORE 関数|AI.SCORE()]] / `AI.CLASSIFY()`) が GA になり、主要な関数はほぼ本番投入可能になった。 ## 機能軸 (何ができるか) | カテゴリ | 代表関数 | | --------------------------- | -------------------------------------------------------------------------------- | | テキスト生成・分類・抽出 | `AI.GENERATE*` / `AI.GENERATE_TEXT()` (旧 `ML.GENERATE_TEXT()`) | | 埋め込み生成 | `AI.EMBED()` (スカラ / GA) / `AI.GENERATE_EMBEDDING()` (旧 `ML.GENERATE_EMBEDDING()`) | | 類似度計算 | `AI.SIMILARITY()` (GA) | | ベクトル検索 | `VECTOR_SEARCH()` / `AI.SEARCH()` (Preview) | | 時系列予測 | `AI.FORECAST()` (TimesFM ベースと報じられる) / `ML.FORECAST()` (ARIMA_PLUS / ARIMA_PLUS_XREG) | | 時系列異常検知 | `AI.DETECT_ANOMALIES()` / `ML.DETECT_ANOMALIES()` | | ドライバ分析 (要因特定) | `AI.KEY_DRIVERS()` (Preview) | | 集約 (自然文で要約・集計) | `AI.AGG()` | | [[SQL]] 句内での AI フィルタ/スコア/分類 | `AI.IF()` / `AI.SCORE()` / `AI.CLASSIFY()` (すべて GA) | | 翻訳 | `ML.TRANSLATE()` | | 感情分析・エンティティ抽出 | `ML.UNDERSTAND_TEXT()` | | 画像理解 | `ML.ANNOTATE_IMAGE()` | | 音声認識 | `ML.TRANSCRIBE()` | | ドキュメント処理 | `ML.PROCESS_DOCUMENT()` | | 古典的機械学習 (回帰・分類・クラスタリング) | `ML.PREDICT()` / `ML.EVALUATE()` | ## API 形態軸 (どう呼ぶか) | 形態 | 事前準備 | 代表関数 | | ------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **[[BigQuery 汎用 AI 関数]]** (General-purpose AI functions) | 不要 (Vertex AI connection のみ) | LLM 推論: `AI.GENERATE()`, `AI.GENERATE_TEXT()` / 構造化出力: `AI.GENERATE_TABLE()`, `AI.GENERATE_BOOL()`, `AI.GENERATE_INT()`, `AI.GENERATE_DOUBLE()` / 埋め込み: `AI.EMBED()`, `AI.GENERATE_EMBEDDING()` | | **マネージド AI 関数** (Managed AI functions) | 不要 (モデル省略時は自動選択 / 2026-04 GA) | `AI.IF()` (`BOOL` / `WHERE`・`JOIN`), `AI.SCORE()` (`FLOAT64` / `ORDER BY`), `AI.CLASSIFY()` (`STRING` / `GROUP BY`) | | **時系列・集約・分析 AI 関数** | 不要 | `AI.FORECAST()`, `AI.DETECT_ANOMALIES()`, `AI.AGG()`, `AI.KEY_DRIVERS()` (Preview) | | **ベクトル検索関数** | (任意) `CREATE VECTOR INDEX` | `VECTOR_SEARCH()`, `AI.SEARCH()` (Preview), `AI.SIMILARITY()` | | **タスク特化関数** (Task-specific functions) | `CREATE MODEL ... REMOTE WITH CONNECTION` | `ML.TRANSLATE()`, `ML.UNDERSTAND_TEXT()`, `ML.ANNOTATE_IMAGE()`, `ML.TRANSCRIBE()`, `ML.PROCESS_DOCUMENT()` (+ 旧世代の `ML.GENERATE_TEXT()`, `ML.GENERATE_EMBEDDING()`) | | **BQML 推論関数** | `CREATE MODEL ... OPTIONS(model_type=...)` で学習済みであること | `ML.PREDICT()`, `ML.FORECAST()`, `ML.EVALUATE()`, `ML.EXPLAIN_PREDICT()` | > [!warning] > `ML.GENERATE_TEXT()` / `ML.GENERATE_EMBEDDING()` は現行ドキュメントの正面から外れつつあり、`AI.*` 系が後継。新規実装は `AI.*` を優先する。 ### 補足 1: マネージド AI 関数の使い分け (2026-04 GA) | 関数 | 戻り値 | 使う SQL 句 | 用途 | | ------------- | --------- | --------------------- | ----------------------------------------------------------- | | `AI.IF()` | `BOOL` | `WHERE` / `JOIN` | 自然文条件でのフィルタリング | | `AI.SCORE()` | `FLOAT64` | `ORDER BY` | 自然文評価軸でのランキング | | `AI.CLASSIFY()` | `STRING` | `GROUP BY` / `SELECT` | ユーザ定義カテゴリへの分類 (2026-02 からマルチカテゴリ対応) | - モデル省略時は BigQuery が自動選択、`endpoint` 指定で上書き可能 - 出力はスカラのみ。`status` / 安全性情報は付かない - **optimized mode** (2026-04 Preview、`AI.IF()` / `AI.CLASSIFY()` のみ対応) で LLM 呼び出し回数を削減、大規模運用に必須 (`AI.SCORE()` は非対応) ```sql -- AI.IF: ギフト向け商品だけ抽出 SELECT product_id, description FROM `proj.ds.products` WHERE AI.IF(('この商品はギフトに適していますか?', description)); -- AI.SCORE: ネガティブなレビュー Top 10 SELECT review_id, body FROM `proj.ds.reviews` ORDER BY AI.SCORE(('このレビューのネガティブ度合い', body)) DESC LIMIT 10; -- AI.CLASSIFY: 問い合わせを 3 カテゴリに分類して集計 SELECT AI.CLASSIFY( ('ticket を分類', body), categories => ['billing', 'shipping', 'quality'] ) AS category, COUNT(*) AS n FROM `proj.ds.tickets` GROUP BY category; ``` ### 補足 2: BQML のモデル分類 (公式) | 公式カテゴリ | 中身 | | ------------------------------------ | ------------------------------------------------------------------------------------ | | Internally trained models (内部学習) | `linear_reg`, `logistic_reg`, `kmeans`, `matrix_factorization`, `pca`, `arima_plus` | | Externally trained models (外部学習) | DNN, Wide & Deep, Boosted trees, Random forest, AutoML (Vertex AI で学習) | | Remote models (リモート) | Vertex AI にデプロイ済みモデルへの参照 (2026-03 から `gemini-embedding-001` など GA) | | Imported models (インポート) | ONNX / TensorFlow / TF Lite / XGBoost を GCS からロード | ### 補足 3: 関数 × モデル分類の対応関係 (△ = 要確認) | 関数 (カテゴリ) | Internally | Externally | Remote | Imported | | ----------------------------------------- | :-------------------: | :--------: | :----------------: | :------: | | `ML.PREDICT()` (BQML) | ○ | ○ | △ | ○ | | `ML.FORECAST()` (BQML) | ○ (`arima_plus` 専用) | ✗ | ✗ | ✗ | | `ML.EVALUATE()` (BQML) | ○ | ○ | ✗ | △ | | `ML.EXPLAIN_PREDICT()` (BQML) | △ (一部) | △ | ✗ | ✗ | | `ML.GENERATE_TEXT()` (タスク特化 / 旧) | ✗ | ✗ | ○ | ✗ | | `ML.GENERATE_EMBEDDING()` (タスク特化 / 旧) | ✗ | ✗ | ○ | ✗ | | Cloud AI API 系 (`ML.TRANSLATE()` 他) | ✗ | ✗ | ○ (API 専用モデル) | ✗ | > [!info] > 2 × 4 = 8 通りの組み合わせがすべて成立するわけではない。**縦割りが基本**: タスク特化関数は Remote 専用 / BQML 推論関数は Remote 以外。△ は公式対応表で個別に確認すること。 ### 補足 4: API 追加の歴史 | 時期 | 追加 | 位置づけ | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------ | | 2018 (NEXT '18) | BigQuery ML 発表 (`linear_reg`, `logistic_reg`) | SQL だけで ML | | 2019–2020 | `kmeans`, `matrix_factorization`, `boosted_tree_*`, ARIMA, TF imported, AutoML Tables | 内部学習 + インポート充実 | | 2021 | `dnn_*`, `arima_plus`, `ML.EXPLAIN_PREDICT()`, 異常検知 | 説明性 + Deep Learning | | 2022 | Remote models (Vertex AI 連携) | Vertex AI 連携の土台 | | 2023 | `ML.GENERATE_TEXT()`, `ML.GENERATE_EMBEDDING()`, Cloud AI API 系タスク特化関数 | 生成 AI 時代開始 | | 2024-02 | `VECTOR_SEARCH()` Preview, `CREATE VECTOR INDEX` (IVF) | RAG 基盤 | | 2024-04 (NEXT '24) | `AI.FORECAST()`, `AI.GENERATE()` 先行 | 新世代 `AI.*` 登場 | | 2024-09 | `VECTOR_SEARCH()` GA, stored columns | 本番運用レベル | | 2025 | `AI.*` GA 拡充, `AI.AGG()`, `AI.SEARCH()` (Preview), `AI.EMBED()`, `AI.SIMILARITY()` | 汎用 AI 関数充実 | | 2025-11 | マネージド AI 関数 (`AI.IF()` / `AI.SCORE()` / `AI.CLASSIFY()`) Preview | SQL 構文に AI 直結 | | 2026-01 | Conversational Analytics Preview / BigQuery ML モデル作成 GUI GA | 自然言語 UI 導入 | | 2026-02 | `AI.CLASSIFY()` マルチカテゴリ Preview / `AI.GENERATE()`・`AI.GENERATE_TABLE()` フィールド説明 GA | 出力スキーマ制御の精緻化 | | 2026-03 | `AI.EMBED()` / `AI.SIMILARITY()` GA / `gemini-embedding-001` など Remote Embedding model GA / Gemini 同地域内処理 | 埋め込み系が本番運用レベル | | 2026-04 | **マネージド AI 関数 GA** / **optimized mode** Preview 追加 (`AI.IF()` / `AI.CLASSIFY()` のみ) / `AI.KEY_DRIVERS()` Preview / `AI.DETECT_ANOMALIES()` パラメータ拡充 | マネージド関数が本番投入可能に | この追加の歴史を系譜として並べると、抽象度が上がり続けているのが分かる。 - **機能の系譜**: BQML (内部学習) → インポート/外部学習 → Remote models → 生成 AI タスク特化関数 → ベクトル検索 → 汎用 AI 関数 (`AI.*`) → マネージド AI 関数 → 分析系 AI 関数 (`AI.KEY_DRIVERS()` 等) - **時代の変遷**: 自分でモデルを育てる時代 → 既製モデルを呼ぶ時代 → モデル選択すら BigQuery に任せる時代 → 分析そのものを AI に任せる時代 ## 学習ロードマップ (2026 年 4 月版) > [!tip] > Phase 1〜3 で使う関数はほぼすべて GA 済み。Preview に依存せずロードマップが完成する初めてのタイミング。 ### Phase 0: 準備 (半日) - [x] BigQuery から Vertex AI を呼ぶための最小セットアップ を完了 - [x] BigQuery AI 関数の料金は二重構造になる を把握 ### Phase 1: マネージド AI 関数 (1–2 日) ← 2026-04 GA - [ ] `AI.CLASSIFY()` で自由記述列をカテゴリ分類 (マルチカテゴリ含む) - [ ] `AI.IF()` で `WHERE` に自然文条件 - [ ] `AI.SCORE()` で `ORDER BY` ランキング - [ ] CASE 文 / 正規表現との精度・コスト比較 - [ ] **`optimized mode` の効果を測定** (`AI.IF()` / `AI.CLASSIFY()` のみ対応、標準モードとのコスト差) ### Phase 2: 汎用 AI 関数 (2–3 日) - [ ] `AI.GENERATE()` + `.status` で失敗ハンドリング - [ ] `AI.GENERATE_BOOL()` / `AI.GENERATE_INT()` / `AI.GENERATE_DOUBLE()` で型保証出力 - [ ] `AI.GENERATE_TABLE()` で構造化抽出 (2026-02 から field description が使える) - [ ] `temperature` / `max_output_tokens` / `request_type`(`SHARED` vs `DEDICATED`) を比較 - [ ] [[dbt]] モデルに組み込む (`is_incremental()` で差分だけ処理) ### Phase 3: 埋め込み + ベクトル検索 + RAG (3–5 日) - [ ] `AI.EMBED()` で埋め込み (`task_type` を用途で使い分け) ← 2026-03 GA - [ ] `AI.SIMILARITY()` で 2 値の cos 類似度 ← 2026-03 GA - [ ] `CREATE VECTOR INDEX` (IVF → TREE_AH の使い分け) - [ ] `VECTOR_SEARCH()` で近傍検索 (**デフォルト EUCLIDEAN 注意**、COSINE 明示推奨) - [ ] RAG パイプライン: `VECTOR_SEARCH()` → `AI.GENERATE()` を 1 クエリで - [ ] バッチ検索 (クエリ側もテーブル) ### Phase 4: 分析系 AI 関数 (2–3 日) ← 2026 年で拡充した領域 - [ ] `AI.FORECAST()` でゼロショット時系列予測 - [ ] `AI.DETECT_ANOMALIES()` で異常検知 (custom context window で最近 N 点だけ評価) - [ ] `AI.AGG()` でグループ内テキストの自然文要約 - [ ] `AI.KEY_DRIVERS()` (Preview) で KPI 変動要因の自動特定 ### Phase 5: 古典的機械学習 (BQML) (1 週間〜) - [ ] `linear_reg` / `logistic_reg` で回帰・分類 - [ ] `boosted_tree_*` で Gradient Boosting - [ ] `ML.EVALUATE()` / `ML.EXPLAIN_PREDICT()` - [ ] 特徴量エンジニアリング (`ML.FEATURE_CROSS()` / `TRANSFORM` 句) - [ ] `arima_plus` vs `AI.FORECAST()` の精度比較 - [ ] [[ディメンショナルモデリング]] のデータマートから直接学習 ### Phase 6: 運用 (継続) - [ ] **dbt × AI 関数** の設計 - インクリメンタルで差分だけ AI 処理 - 高コストな AI 処理は別レイヤ化 - [ ] **品質ゲート**: `status.error_code` を監視 → アラート - [ ] **コスト可視化**: `INFORMATION_SCHEMA.JOBS` + Vertex AI 課金の結合で $ / 1k rows 監視 - [ ] **再現性**: `endpoint` をパッチバージョンまで固定 (`gemini-2.5-flash-001` 等) - [ ] **Provisioned Throughput** (`DEDICATED`) 判断 - [ ] **optimized mode** の有効化判断 (`AI.IF()` / `AI.CLASSIFY()` のみ対応、2026-04 時点で Preview) ## 実務の指針 ### 2026 年時点のアドバイス 1. 新規実装は `AI.*` に寄せる。`ML.GENERATE_*` は動くが公式の主軸から外れた 2. Phase 1〜3 は 2 週間前後で走り切れる。まずそこまで体感するのが全体像把握の最短ルート 3. Phase 4 の分析系 AI 関数は 2026 年最大の追加領域。ダッシュボード/BI 寄りの業務がある場合ここから試す価値あり 4. Preview の機能 (`AI.SEARCH()` / `AI.KEY_DRIVERS()` 等) は本番投入不可。学習には使って良いが、本番化は GA を待つ 5. Release notes を月次で確認する習慣をつけると、この領域の進化についていける ### 情報源の使い分け | 用途 | どこを見るか | | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 一次情報・最新機能 | [BigQuery Release notes](https://docs.cloud.google.com/bigquery/docs/release-notes) / [Generative AI overview](https://docs.cloud.google.com/bigquery/docs/generative-ai-overview) | | チュートリアル | 公式 docs の tutorial ページ | | 設計パターン | [[Google Cloud]] Blog "Data Analytics" | | 落とし穴・実運用 | Medium "Google Cloud - Community" 等 | 迷ったら公式リファレンスページの **Preview / GA バッジ**を最優先で確認。進化が速いため、1 年前の記事のみに依拠するのは危険。 ## 関連ノート - **[深掘り]** [[BigQuery から Vertex AI を呼ぶための最小セットアップ]]: 本ノートの Phase 0 として参照される接続設定の具体手順 - **[深掘り]** [[BigQuery AI 関数の料金は二重構造になる]]: 本ノートで扱う各 AI 関数の料金計算の二重構造