准备数据以进行提取

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

如需了解混合搜索(可将多个数据存储区连接到单个通用搜索应用),请参阅关于连接多个数据存储区

网站数据

为网站数据创建数据存储区时,您需要提供 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 < 2.5 MB < 10 MB < 10 MB
PPTX、DOCX 和 XLSX 小于 200 MB 小于 200 MB 小于 200 MB
PDF 小于 200 MB 小于 200 MB 小于 40 MB

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

如果您有无法搜索的 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 行或 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",
    "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 云端硬盘导入数据,则必须在 Vertex AI Agent Builder 中将 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 行或 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 元数据文件示例。该文件中的每一行代表一个文档,由一组字段组成。

{"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"]}

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

如需了解如何为聊天应用的 CSV 文件中的常见问题解答数据设置格式,请参阅 Dialogflow CX 文档中的结构化数据存储区

本地 JSON 数据

您可以使用该 API 直接上传 JSON 文档或对象。

Google 建议您以 JSON 对象的形式提供自己的架构,以便获得更好的结果。如果您未提供自己的架构,系统会自动检测架构。导入后,我们建议您修改自动检测到的架构,以映射关键属性(例如标题)。如需了解详情,请参阅提供或自动检测架构

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

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

结构化媒体数据

如果您计划注入结构化媒体数据(例如视频、新闻或音乐),请查看以下内容:

第三方数据源

从第三方数据源提取数据是一项具有许可名单功能的预览版功能。

通用搜索支持第三方数据源连接。

连接第三方数据源后,系统会先提取数据,然后按照您指定的频率将数据同步到 Vertex AI Search。

在设置数据源连接之前,您必须为数据源设置访问权限控制。如需了解如何设置访问权限控制,请参阅使用数据源访问权限控制

如需了解连接数据源所需的凭据,请参阅有关连接您计划注入数据的第三方数据源的文档:

Healthcare FHIR 数据

如果您打算从 Cloud Healthcare API 注入 FHIR 数据,请确保:

  • 位置:源 FHIR 存储区必须位于 us-central1useu 位置的 Cloud Healthcare API 数据集中。如需了解详情,请参阅在 Cloud Healthcare API 中创建和管理数据集
  • FHIR 存储区类型:来源 FHIR 存储区必须是 R4 数据存储区。您可以通过列出数据集中的 FHIR 存储区来检查 FHIR 存储区的版本。如需创建 FHIR R4 存储区,请参阅创建 FHIR 存储区
  • 导入配额:来源 FHIR 存储区中的 FHIR 资源数量不得超过 100 万。 如果 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 数据架构参考文档