[[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 関数の料金計算の二重構造