取り込み用にデータを準備する

データの準備方法は、インポートするデータの種類とインポート方法によって異なります。まず、インポートするデータの種類を決めます。

複数のデータストアを 1 つの汎用検索アプリに接続できる統合検索については、複数のデータストアの接続についてをご覧ください。

ウェブサイトのデータ

ウェブサイト データ用のデータストアを作成するときに、Google がクロールして検索やおすすめに使用するウェブページの URL を指定します。

ウェブサイト データをインデックスに登録する前に:

  • インデックスに登録する URL パターンと除外する URL パターンを指定します。

    • 動的 URL のパターンを除外する: 動的 URL は、リクエストに応じて配信時に変更される URL です。

      たとえば、検索結果を提供するウェブページの URL パターン(www.example.com/search/* など)。ユーザーが Nobel prize というフレーズを検索した場合、動的検索 URL は www.example.com/search?q=nobel%20prize/UNIQUE_STRING という一意の URL になります。URL パターン www.example.com/search/* が除外されていない場合、このパターンに従う一意の動的検索 URL はすべてインデックスに登録されます。これにより、インデックスが肥大化し、検索品質が低下します。

    • 正規 URL パターンを使用して重複する URL を排除する。これにより、Google 検索がウェブサイトをクロールする際に、1 つの正規 URL が提供され、あいまいさが解消されます。正規化の例と詳細については、URL の正規化とはrel="canonical" などを利用して正規 URL を指定する方法をご覧ください。

  • インデックスに登録する必要がある URL パターンを、同じドメインまたは異なるドメインから含め、インデックスに登録しない必要があるパターンを除外できます。含めるまたは除外できる URL パターンの数は、次のとおりです。

    インデックス登録のタイプ 追加したサイト 除外したサイト
    基本的なウェブサイト検索 URL パターンは最大 50 個まで指定できます。 URL パターンは最大 50 個まで指定できます。
    ウェブサイトの高度なインデックス登録 最大 500 個の URL パターン 最大 500 個の URL パターン

  • 提供するウェブページで、robots.txt を使用してインデックス登録がブロックされていないことを確認します。詳しくは、robots.txt の概要をご覧ください。

  • 高度なウェブサイト インデックス登録を使用する場合は、データストア内の URL パターンのドメインを確認できる必要があります。

  • 構造化データを使用したウェブサイトの高度なインデックス登録で説明されているように、meta タグと PageMap の形式で構造化データをデータストア スキーマに追加して、インデックス登録を拡充します。

データストアを作成するには、検索データストアを作成するまたはおすすめのデータストアを作成するをご覧ください。

非構造化データ

Vertex AI Search は、HTML、テキストが埋め込まれた PDF、TXT 形式のドキュメントに対する検索をサポートしています。PPTX 形式と DOCX 形式はプレビュー版で利用できます。

ドキュメントは Cloud Storage バケットからインポートします。インポートは、Google Cloud コンソール、ImportDocuments メソッド、または CRUD メソッドによるストリーミング取り込みを使用して行うことができます。API リファレンス情報については、DocumentServicedocuments をご覧ください。

HTML ファイルと TXT ファイルは 2.5 MB 以下にする必要があります。PDF、PPTX、DOCX ファイルは 100 MB 以下にする必要があります。一度にインポートできるファイル数は最大 100,000 個です。

エンベディングを非構造化データに含める場合は、カスタム エンベディングを使用するをご覧ください。

検索できない PDF(スキャンした PDF や、インフォグラフィックなど画像内にテキストを含む PDF)がある場合は、データストアの作成時に光学式文字認識(OCR)処理を有効にすることをおすすめします。これにより、Vertex AI Search はテキスト ブロックやテーブルなどの要素を抽出できます。検索可能な PDF の大部分が機械読み取り可能なテキストで構成され、多くの表が含まれている場合は、検出と解析を改善するために、機械読み取り可能なテキストのオプションを有効にして OCR 処理を有効にすることを検討してください。詳細については、ドキュメントを解析してチャンクするをご覧ください。

Vertex AI Search を検索拡張生成(RAG)に使用する場合は、データストアを作成するときにドキュメント チャンキングをオンにします。詳細については、ドキュメントを解析してチャンクするをご覧ください。

非構造化データは、次のソースからインポートできます。

Cloud Storage

Cloud Storage からデータをインポートする際、メタデータの有無は問いません。

データのインポートは再帰的ではありません。つまり、指定したバケットまたはフォルダ内にフォルダが存在する場合、そのフォルダ内のファイルはインポートされません。

メタデータなしで Cloud Storage からドキュメントをインポートする場合は、ドキュメントを Cloud Storage バケットに直接配置します。ドキュメント ID はメタデータの例です。

テストには、PDF を含む次の一般公開 Cloud Storage フォルダを使用できます。

  • gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs
  • gs://cloud-samples-data/gen-app-builder/search/CUAD_v1
  • gs://cloud-samples-data/gen-app-builder/search/kaiser-health-surveys
  • gs://cloud-samples-data/gen-app-builder/search/stanford-cs-224

Cloud Storage からメタデータ付きでデータをインポートする場合は、メタデータを含む JSON ファイルを、インポート時に指定したロケーションの Cloud Storage バケットに配置します。

非構造化ドキュメントは、メタデータと同じ Cloud Storage バケットに配置することも、別のバケットに配置することもできます。

メタデータ ファイルは JSON Lines ファイルまたは NDJSON ファイルである必要があります。ドキュメント ID はメタデータの例です。メタデータ ファイルの各行は、次のいずれかの JSON 形式にする必要があります。

  • jsonData の使用:
    • { "id": "<your-id>", "jsonData": "<JSON string>", "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
  • structData の使用:
    • { "id": "<your-id>", "structData": { <JSON object> }, "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }

各行の uri フィールドを使用して、ドキュメントの Cloud Storage のロケーションを参照します。

非構造化ドキュメントの NDJSON メタデータ ファイルの例を次に示します。この例では、メタデータ ファイルの各行は PDF ドキュメントを指しており、そのドキュメントのメタデータが含まれています。最初の 2 行は jsonData を使用し、2 番目の 2 行は structData を使用します。structData を使用すると、引用符内に表示される引用符をエスケープする必要はありません。

{"id":"doc-0","jsonData":"{\"title\":\"test_doc_0\",\"description\":\"This document uses a blue color theme\",\"color_theme\":\"blue\"}","content":{"mimeType":"application/pdf","uri":"gs://test-bucket-12345678/test_doc_0.pdf"}}
{"id":"doc-1","jsonData":"{\"title\":\"test_doc_1\",\"description\":\"This document uses a green color theme\",\"color_theme\":\"green\"}","content":{"mimeType":"application/pdf","uri":"gs://test-bucket-12345678/test_doc_1.pdf"}}
{"id":"doc-2","structData":{"title":"test_doc_2","description":"This document uses a red color theme","color_theme":"red"},"content":{"mimeType":"application/pdf","uri":"gs://test-bucket-12345678/test_doc_3.pdf"}}
{"id":"doc-3","structData":{"title":"test_doc_3","description":"This is document uses a yellow color theme","color_theme":"yellow"},"content":{"mimeType":"application/pdf","uri":"gs://test-bucket-12345678/test_doc_4.pdf"}}

データストアを作成するには、検索データストアを作成するまたはおすすめのデータストアを作成するをご覧ください。

BigQuery

BigQuery からメタデータをインポートする場合は、メタデータを含む BigQuery テーブルを作成します。ドキュメント ID はメタデータの例です。

非構造化ドキュメントを Cloud Storage バケットに格納します。

次の BigQuery スキーマを使用します。各レコードの uri フィールドを使用して、ドキュメントの Cloud Storage のロケーションを参照します。

[
  {
    "name": "id",
    "mode": "REQUIRED",
    "type": "STRING",
    "fields": []
  },
  {
    "name": "jsonData",
    "mode": "NULLABLE",
    "type": "STRING",
    "fields": []
  },
  {
    "name": "content",
    "type": "RECORD",
    "mode": "NULLABLE",
    "fields": [
      {
        "name": "mimeType",
        "type": "STRING",
        "mode": "NULLABLE"
      },
      {
        "name": "uri",
        "type": "STRING",
        "mode": "NULLABLE"
      }
    ]
  }
]

詳細については、BigQuery ドキュメントのテーブルの作成と使用をご覧ください。

データストアを作成するには、検索データストアを作成するまたはおすすめのデータストアを作成するをご覧ください。

Google ドライブ

Google ドライブからのデータの同期は、一般的な検索でサポートされています。

Google Drive からデータをインポートする場合は、Vertex AI Agent Builder で Google Identity を ID プロバイダとして設定する必要があります。アクセス制御の設定については、データソースのアクセス制御を使用するをご覧ください。

データストアを作成するには、検索データストアを作成するをご覧ください。

構造化データ

使用するインポート方法に応じてデータを準備します。メディアデータを取り込む予定がある場合は、構造化メディアデータもご覧ください。

構造化データは、次のソースからインポートできます。

BigQuery または Cloud Storage から構造化データをインポートする場合は、メタデータとともにデータをインポートできます。(メタデータで構造化されたデータは、拡張構造化データとも呼ばれます)。

BigQuery

BigQuery データセットから構造化データをインポートできます。

スキーマは自動検出されます。インポート後、自動検出されたスキーマを編集して、タイトルなどの重要なプロパティをマッピングすることをおすすめします。Google Cloud コンソールではなく API を使用してインポートする場合は、独自のスキーマを JSON オブジェクトとして指定できます。詳細については、スキーマを指定する、または自動検出するをご覧ください。

一般公開されている構造化データの例については、BigQuery の一般公開データセットをご覧ください。

エンベディングを構造化データに含める場合は、カスタム エンベディングを使用するをご覧ください。

メタデータを含む構造化データをインポートする場合は、BigQuery テーブルに次の 2 つのフィールドを含めます。

  • ドキュメントを識別する id フィールド。メタデータなしで構造化データをインポートすると、id が自動的に生成されます。メタデータを含めると、id の値を指定できます。

  • データを含む jsonData フィールド。jsonData 文字列の例については、前のセクションの Cloud Storage をご覧ください。

メタデータのインポートを含む構造化データには、次の BigQuery スキーマを使用します。

[
  {
    "name": "id",
    "mode": "REQUIRED",
    "type": "STRING",
    "fields": []
  },
  {
    "name": "jsonData",
    "mode": "NULLABLE",
    "type": "STRING",
    "fields": []
  }
]

データストアの作成手順については、検索データストアを作成するまたはおすすめコンテンツ データストアを作成するをご覧ください。

Cloud Storage

Cloud Storage の構造化データは、JSON Lines 形式または NDJSON 形式である必要があります。各ファイルは 2 GB 以下である必要があります。一度にインポートできるファイル数は最大 100 個です。

一般公開されている構造化データの例については、NDJSON ファイルを含む Cloud Storage の次のフォルダをご覧ください。

  • gs://cloud-samples-data/gen-app-builder/search/kaggle_movies
  • gs://cloud-samples-data/gen-app-builder/search/austin_311

エンベディングを構造化データに含める場合は、カスタム エンベディングを使用するをご覧ください。

構造化データの NDJSON メタデータ ファイルの例を次に示します。ファイルの各行はドキュメントを表し、一連のフィールドで構成されています。

{"hotel_id": 10001, "title": "Hotel 1", "location": {"address": "1600 Amphitheatre Parkway, Mountain View, CA 94043"}, "available_date": "2024-02-10", "non_smoking": true, "rating": 3.7, "room_types": ["Deluxe", "Single", "Suite"]}
{"hotel_id": 10002, "title": "Hotel 2", "location": {"address": "Manhattan, New York, NY 10001"}, "available_date": "2023-07-10", "non_smoking": false, "rating": 5.0, "room_types": ["Deluxe", "Double", "Suite"]}
{"hotel_id": 10003, "title": "Hotel 3", "location": {"address": "Moffett Park, Sunnyvale, CA 94089"}, "available_date": "2023-06-24", "non_smoking": true, "rating": 2.5, "room_types": ["Double", "Penthouse", "Suite"]}

データストアを作成するには、検索データストアを作成するまたはおすすめのデータストアを作成するをご覧ください。

ローカル JSON データ

API を使用して JSON ドキュメントまたはオブジェクトを直接アップロードできます。

より良い結果を得るために、独自のスキーマを JSON オブジェクトとして指定することをおすすめします。独自のスキーマを指定しない場合、スキーマは自動的に検出されます。インポート後、タイトルなどの重要なプロパティをマッピングするように、自動検出されたスキーマを編集することをおすすめします。詳細については、スキーマを指定する、または自動検出するをご覧ください。

エンベディングを構造化データに含める場合は、カスタム エンベディングを使用するをご覧ください。

データストアを作成するには、検索データストアを作成するまたはおすすめのデータストアを作成するをご覧ください。

構造化メディアデータ

動画、ニュース、音楽などの構造化メディアデータを取り込む場合は、以下を確認してください。

サードパーティのデータソース

サードパーティ データソースからの取り込みは、許可リスト機能付きのプレビュー版です。

サードパーティ データソースの接続は、一般的な検索でサポートされています。

サードパーティのデータソースを接続すると、データは最初に取り込まれ、指定した頻度で Vertex AI Search と同期されます。

データソース接続を設定する前に、データソースのアクセス制御を設定する必要があります。アクセス制御の設定については、データソースのアクセス制御を使用するをご覧ください。

データソースの接続に必要な認証情報については、取り込むサードパーティ データソースの接続に関するドキュメントをご覧ください。

Healthcare FHIR データ

Cloud Healthcare API から FHIR データを取り込む場合は、次の点を確認してください。

  • ロケーション: ソース FHIR ストアは、us-central1us、または eu のロケーションにある Cloud Healthcare API データセットに存在する必要があります。詳細については、Cloud Healthcare API でデータセットを作成して管理するをご覧ください。
  • FHIR ストアのタイプ: ソース FHIR ストアは R4 データストアである必要があります。FHIR ストアのバージョンを確認するには、データセット内の FHIR ストアを一覧表示します。FHIR R4 ストアを作成するには、FHIR ストアを作成するをご覧ください。
  • インポート クォータ: ソースの FHIR ストアには 100 万個未満の FHIR リソースが必要です。FHIR リソースが 100 万を超える場合、この上限に達するとインポート プロセスが停止します。詳細については、割り当てと上限をご覧ください。
  • DocumentReference リソースで参照されるファイルは、Cloud Storage に保存されている PDF、RTF、または画像ファイルである必要があります。参照されるファイルへのリンクは、標準の Cloud Storage パス形式(gs://BUCKET_NAME/PATH_TO_REFERENCED_FILE)でリソースの content[].attachment.url フィールドに指定する必要があります。
  • Vertex AI Search でサポートされている FHIR R4 リソースのリストを確認します。詳細については、ヘルスケア FHIR R4 データスキーマ リファレンスをご覧ください。