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

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

複数のデータストアを 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 ファイルを使用している場合は、次の操作を行います。

    次の表に、HTTP リクエストに表示されるユーザー エージェント文字列と、Google-CloudVertexBot の robots.txt のユーザー エージェント トークンを示します。

    HTTP リクエストのユーザー エージェント
    Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.7559.132 Mobile Safari/537.36 (compatible; Google-CloudVertexBot; +https://cloud.google.com/enterprise-search)
    robots.txt
    robots.txt のユーザー エージェント トークン Google-CloudVertexBot
    robots.txt グループ
                  user-agent: Google-CloudVertexBot
                  allow: /
                  

    Agent Search ボットがペイウォール コンテンツを含む情報をクロールしてインデックスに登録する必要があります。ペイウォール コンテンツを含むコンテンツのクロールとインデックス登録について詳しくは、以下をご覧ください。

    詳しくは、robots.txt の概要robots.txt ファイルの書き方、設定と送信をご覧ください。

  • robots.txt ファイルでクローラーを許可するだけでなく、組織は、ユーザーが使用する可能性のあるすべての上流プロキシ サーバーを介して検索リクエストを許可する必要があります。

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

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

非構造化データ

エージェント検索は、TXT、JSON、マークダウン、PDF、HTML、DOCX、PPTX、XLSX、XLSM 形式のドキュメントの検索をサポートしています。

ファイルの最大サイズは 200 MB で、一度に最大 100,000 個のファイルをインポートできます。

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

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

検索拡張生成(RAG)にエージェント検索を使用する場合は、データストアの作成時にドキュメント チャンクを有効にします。詳細については、ドキュメントを解析してチャンクに分割するをご覧ください。

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

Cloud Storage

メタデータの有無にかかわらず、Cloud Storage からデータをインポートできます。

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

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

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

  • 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 行は structData を使用します。structData を使用すると、引用符内の引用符をエスケープする必要がなくなります。

{"id":"doc-0","jsonData":"{\"title\":\"test_doc_0\",\"uri\":\"https://test_doc_0.html\",\"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\",\"uri\":\"https://test_doc_1.html\",\"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","uri":"https://test_doc_2.html", "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","uri":"https://test_doc_3.html","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",
    "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 ドライブからデータをインポートする場合は、Agent Search で ID プロバイダとして Google Identity を設定する必要があります。アクセス制御の設定については、データソースのアクセス制御を使用するをご覧ください。

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

構造化データ

使用するインポート方法に沿ってデータを準備します。メディアデータの取り込みを計画している場合は、構造化メディアデータもご覧ください。

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

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 未満、各行のサイズは 1 MB 未満にする必要があります。1 回のインポート リクエストで最大 1,000 個のファイルをインポートできます。

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

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

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

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

{"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"]}
{"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"]}
{"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 オブジェクトとして指定することをおすすめします。独自のスキーマを指定しない場合、スキーマは自動検出されます。インポート後、自動検出されたスキーマを編集して、タイトルなどのキープロパティをマッピングすることをおすすめします。詳細については、スキーマを指定または自動検出するをご覧ください。

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

データストアを作成するには、検索データストアを作成するまたはレコメンデーション データストアを作成するをご覧ください。

構造化メディアデータ

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

医療 FHIR データ

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

  • ロケーション: ソース FHIR ストアは、us-central1useu のロケーションにある Cloud Healthcare API データセットに存在する必要があります。詳細については、Cloud Healthcare API でデータセットを作成して管理するをご覧ください。
  • FHIR ストアのタイプ: ソース FHIR ストアは R4 データストアである必要があります。FHIR ストアのバージョンを確認するには、データセット内の FHIR ストアを一覧表示します。FHIR R4 ストアを作成するには、FHIR ストアを作成するをご覧ください。
  • インポートの割り当て: ソースの FHIR ストアには 100 万個未満の FHIR リソースが必要です。100 万を超える FHIR リソースがある場合、この上限に達するとインポート プロセスが停止します。詳細については、割り当てと上限をご覧ください。
  • Agent Search でサポートされている FHIR R4 リソースのリストを確認します。詳細については、Healthcare FHIR R4 データスキーマ リファレンスをご覧ください。
  • リソース参照: 相対リソース参照が Resource/resourceId 形式であることを確認します。たとえば、subject.reference の値は Patient/034AB16 にする必要があります。Cloud Healthcare API が FHIR リソース リファレンスをサポートする方法の詳細については、FHIR リソース リファレンスをご覧ください。

  • DocumentReference リソースで参照されるファイルは、Cloud Storage に保存されている PDF、RTF、または画像ファイルである必要があります。参照されるファイルへのリンクは、標準の Cloud Storage パス形式(gs://BUCKET_NAME/PATH_TO_REFERENCED_FILE)でリソースの content[].attachment.url フィールドに指定する必要があります。

    次の表に、構成が異なる各ファイル形式のファイルサイズの上限を示します(詳細については、ドキュメントを解析してチャンクに分割するをご覧ください)。一度にインポートできるファイル数は最大 100,000 個です。