准备数据以进行提取

准备数据的方式取决于您要导入的数据类型以及您选择的导入方式。首先,确定您计划导入的数据类型:

如需了解混合搜索(可将多个数据存储区连接到单个自定义搜索应用)的相关信息,请参阅关于连接多个数据存储区

网站数据

为网站数据创建数据存储区时,您需要提供 Google 应抓取并建立索引的网页网址,以供搜索或推荐。

在为网站数据编制索引之前:

  • 决定要在索引中包含哪些网址格式,以及要排除哪些网址格式。

    • 排除动态网址的模式。动态网址是指在传送时根据请求而变化的网址。

      例如,提供搜索结果的网页的网址格式,如 www.example.com/search/*。假设用户搜索了短语 Nobel prize,动态搜索网址可能是一个唯一网址:www.example.com/search?q=nobel%20prize/UNIQUE_STRING。 如果不排除网址格式 www.example.com/search/*,则所有符合此格式的此类唯一动态搜索网址都会被编入索引。 这会导致索引膨胀,并降低搜索质量。

    • 使用规范网址格式消除重复的网址。这样一来,Google 搜索在抓取网站时就会获得一个规范网址,从而消除歧义。如需查看规范化示例和了解更多信息,请参阅什么是网址规范化以及如何使用 rel="canonical" 及其他方法指定规范网址

  • 您可以包含需要编入索引的相同网域或不同网域中的网址格式,并排除不得编入索引的格式。您可以包含和排除的网址模式数量有所不同,具体如下:

    编入索引的类型 包含的网站 排除的网站
    基本网站搜索 最多可输入 50 个网址格式 最多可输入 50 个网址格式
    高级网站索引编制 最多 500 个网址格式 最多 500 个网址格式

  • 检查您计划提供的网页是否未使用 robots.txt 来阻止编入索引。如需了解详情,请参阅 robots.txt 简介

  • 如果您打算使用高级网站索引编制,则必须能够验证数据存储区中网址模式的网域。

  • 在数据存储区架构中添加 meta 标记和 PageMap 形式的结构化数据,以丰富索引编制,如使用结构化数据进行高级网站索引编制中所述。

非结构化数据

Vertex AI Search 支持搜索 HTML、包含嵌入文本的 PDF 和 TXT 格式的文档。预览版支持 PPTX 和 DOCX 格式。

您可以从 Cloud Storage 存储桶导入文档。您可以使用 Google Cloud 控制台、通过 ImportDocuments 方法或通过 CRUD 方法进行流式注入来导入数据。 如需了解 API 参考文档信息,请参阅 DocumentServicedocuments

下表列出了每种文件类型在不同配置下的文件大小限制(如需了解详情,请参阅解析文档并将其分块)。您一次最多可以导入 10 万个文件。

文件类型 默认导入 导入时进行布局感知型文档分块 使用布局解析器导入
基于文本的文件,例如 HTML、TXT、JSON、XHTML 和 XML < 200 MB < 10 MB < 10 MB
PPTX、DOCX 和 XLSX < 200 MB < 200 MB < 200 MB
PDF < 200 MB < 200 MB < 40 MB

如果您计划在非结构化数据中添加嵌入内容,请参阅使用自定义嵌入内容

如果您有无法搜索的 PDF(扫描的 PDF 或图片中包含文字的 PDF,例如信息图表),建议您在创建数据存储区时开启布局解析器。这样,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 文档,并包含相应文档的元数据。前两行使用 jsonData,后两行使用 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",
    "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 云端硬盘导入数据,则必须在 AI 应用中将 Google Identity 设置为身份提供方。如需了解如何设置访问权限控制,请参阅使用数据源访问权限控制

如需创建数据存储区,请参阅创建搜索数据存储区

结构化数据

根据您计划使用的导入方法准备数据。如果您计划注入媒体数据,另请参阅结构化媒体数据

您可以从以下来源导入结构化数据:

从 BigQuery 或 Cloud Storage 导入结构化数据时,您可以选择导入包含元数据的数据。(包含元数据的结构化数据也称为增强型结构化数据。)

BigQuery

您可以从 BigQuery 数据集中导入结构化数据。

系统会自动检测您的架构。导入后,Google 建议您修改自动检测到的架构,以映射关键属性(例如标题)。如果您使用 API 而不是 Google Cloud 控制台进行导入,可以选择以 JSON 对象的形式提供自己的架构。如需了解详情,请参阅提供或自动检测架构

如需查看公开提供的结构化数据示例,请参阅 BigQuery 公共数据集

如果您计划在结构化数据中添加嵌入内容,请参阅使用自定义嵌入内容

如果您选择导入包含元数据的结构化数据,则需要在 BigQuery 表中添加两个字段:

  • 用于标识文档的 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 个文件。

如需查看公开提供的结构化数据示例,请参阅 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 文档或对象。

Google 建议您以 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 资源。 如果 FHIR 资源超过 100 万个,导入过程会在达到此限制后停止。如需了解详情,请参阅配额和限制
  • DocumentReference 资源中引用的文件必须是存储在 Cloud Storage 中的 PDF、RTF 或图片文件。指向所引用文件的链接必须位于资源的 content[].attachment.url 字段中,并且采用标准的 Cloud Storage 路径格式:gs://BUCKET_NAME/PATH_TO_REFERENCED_FILE
  • 查看 Vertex AI Search 支持的 FHIR R4 资源列表。如需了解详情,请参阅 Healthcare FHIR R4 数据架构参考文档
  • 资源引用:确保相对资源引用的格式为 Resource/resourceId。例如,subject.reference 的值必须为 Patient/034AB16。如需详细了解 Cloud Healthcare API 如何支持 FHIR 资源引用,请参阅 FHIR 资源引用