AI Search はマネージド検索サービスです。Web サイト、R2 バケットを接続するか、独自のドキュメントをアップロードすると、AI Search が自然言語クエリ向けにコンテンツをインデックスします。
AI Search は 2 つの中核プロセスで構成されます。
- インデックス: コンテンツを検索用のベクトルとキーワードインデックスに変換する非同期プロセスです。データソースの接続またはファイルのアップロード時に、インデックスは自動で実行されます。
- クエリ: ユーザークエリで起動する同期プロセスです。ベクトル検索、キーワード検索、またはその両方で最も関連するコンテンツを取得し、任意で応答を生成します。
データソースを接続するか、Items API でファイルをアップロードすると、インデックスは自動で始まります。
インデックス中に起きることです。
- データ取り込み: AI Search は接続済みデータソースから読み取るか、Items API でアップロードされたファイルを受け取ります。
- Markdown 変換: AI Search は Workers AI の Markdown Conversion を使い、対応データ型 を構造化された Markdown に変換します。多様なファイルタイプで一貫性を保ちます。画像では、Workers AI が物体検出のあと vision-to-language 変換を行い、画像を Markdown テキストに変換します。詳細は 画像の変換方法 を参照してください。
- チャンク化: 抽出したテキストを チャンク に分割し、取得の粒度を上げます。
- 埋め込み: 各チャンクを Workers AI の埋め込みモデルで埋め込み、コンテンツをベクトルに変換します。
- キーワードインデックス: キーワード検索が有効な場合、各チャンクは BM25 キーワード照合用にもインデックスされます。
- 保存: ベクトル、キーワードインデックス、コンテンツが保存され、検索できる状態になります。
接続済みデータソースを持つインスタンスでは、AI Search が定期的に更新を確認し、変更を自動でインデックスします。組み込みストレージ を使うインスタンスでは、新しいファイルはアップロード時にインデックスされます。
インデックスが完了すると、AI Search はエンドユーザーのクエリにリアルタイムで応答できます。
クエリパイプラインの動きです。
- AI Search API からクエリを受け取る: クエリワークフローは、AI Search の Chat Completions または Search エンドポイントへリクエストを送ると始まります。
- クエリ書き換え(任意): AI Search は、Workers AI の LLM の 1 つで 入力クエリを書き換える オプションを提供します。元のクエリをより効果的な検索クエリに変換し、取得品質を上げます。
- クエリの埋め込み: 書き換え後(または元の)クエリを、データ埋め込みに使ったのと同じ埋め込みモデルでベクトルに変換します。
- ベクトル検索: クエリベクトルを保存済みベクトルと照合し、意味的に近いコンテンツを見つけます。
- キーワード検索(任意): ハイブリッド検索が有効な場合、BM25 キーワード検索がベクトル検索と並行して実行されます。
- フュージョン(任意): ハイブリッド検索では、設定したフュージョン方法でベクトル結果とキーワード結果を結合します。
- リランキング(任意): クロスエンコーダーモデルが、クエリとドキュメントをまとめて評価し、結果を再スコアします。詳細は リランキング を参照してください。
- コンテンツ取得: 最も関連するチャンクとそのソースコンテンツが返されます。Search エンドポイントを使う場合、コンテンツはこの時点で返されます。
- 応答生成: Chat Completions エンドポイントを使う場合、テキスト生成モデルが取得したコンテンツを使って応答を生成します。詳細は システムプロンプト を参照してください。
AI Search は Vectorize の上に構築され、その周囲に検索パイプラインの残りを追加します。ベクトルを自分で管理したい場合は Vectorize を使い、コンテンツ上のマネージド検索が欲しい場合は AI Search を使います。
| 機能 | AI Search | Vectorize |
|---|---|---|
| 概要 | コンテンツ上のマネージドなエンドツーエンド検索 | 自分で構築するベクトルデータベース |
| 渡すもの | ファイル、または接続済みデータソース | 自分で生成したベクトル |
| チャンク化と埋め込み | 自動で処理される | 自分で生成して挿入する |
| インデックス | 自動。継続的な同期あり | ベクトルの upsert と管理を自分で行う |
| 取得 | ベクトルとキーワード(ハイブリッド)、リランキング、メタデータフィルタ | メタデータフィルタ付きのベクトル類似検索 |
| 生成回答 | 任意。組み込み | 含まれない |
| こんなときに使う | 検索または RAG をすばやく追加したいとき | 取得パイプラインを完全に制御したいとき |