准备数据以进行提取

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

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

网站数据

为网站数据创建数据存储区时,您需要提供 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",
    "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 数据架构参考文档