准备数据以进行提取

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

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

网站数据

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

在为网站数据建立索引之前:

  • 确定要在索引中包含哪些网址格式,以及要排除哪些网址格式。 您可以包含来自同一网域或不同网域的网址格式(需要建立索引),并排除不得建立索引的格式。您可以包含和排除的网址格式数量有所不同,具体如下:

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

  • 排除动态网址的格式。动态网址是指在投放时根据请求而变化的网址。

    动态网址的一个示例是用于投放搜索结果的网页。 用于投放搜索结果的网页的网址格式可能采用 www.example.com/search?* 形式。如果用户搜索 短语Nobel Prize,动态搜索网址可能是唯一网址: www.example.com/search?q=nobel%20prize/UNIQUE_STRING。 如果未排除网址格式 www.example.com/search?*,则所有符合此格式的此类唯一动态搜索网址都会建立索引。这会导致搜索质量下降、索引膨胀,并增加索引存储费用。

    以下是一些要排除的常见格式:

    模式类型 示例模式 排除原因
    突出显示的视图 example.com/*/highlight/true 现有帖子的替代视图。
    主题与消息路径 example.com/*/td-p/* 同一消息的替代规范路径。
    附件排列 example.com/*?attachment-id=* 以附件而非内容为中心的网页。
    用户个人资料 example.com/*/user/* 低价值元数据页面,会增加文档数量。
    动态搜索 example.com/search?* 所有符合此格式的此类唯一动态搜索网址都会 建立索引。这会导致搜索质量下降、索引膨胀,并 增加索引存储费用。
  • 使用规范网址格式消除重复的网址。这样,Google 搜索在抓取网站时就会使用单个规范网址,从而消除歧义。如需查看规范化示例和了解更多 信息,请参阅什么是网址规范化以及 如何使用 rel="canonical" 及其他方法指定规范网址

  • 避免因网址变体而导致可计费文档膨胀:许多内容管理系统和社区论坛平台(例如 Khoros 和 Discourse)会在多个网址格式下投放同一网页。 Agent Search 会将每个唯一网址视为单独的文档,这可能会导致:

    • 费用增加,因为您需要为存储在数据存储区中的每个唯一网址变体付费。

    • 搜索质量下降,因为搜索结果可能会多次显示相同的内容。

    创建网站数据 存储区之前,请先找出重复的网址格式。

  • 如果您在网站中使用 robots.txt 文件,请执行以下操作:

    下表列出了 Google-CloudVertexBot 在 HTTP 请求中显示的用户代理字符串以及 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 文件中的抓取工具之外,您的组织还必须允许搜索请求通过用户可能会遇到的所有上游代理服务器。

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

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

非结构化数据

Agent Search 支持搜索 TXT、JSON、Markdown、PDF、HTML、DOCX、PPTX、XLSX 和 XLSM 格式的文档。

文件大小上限为 200 MB,您一次最多可以导入 100,000 个文件。

您可以从 Cloud Storage 存储桶导入文档。您可以使用 Google Cloud 控制台、通过 ImportDocuments方法或通过流式注入 通过 CRUD 方法进行导入。 如需了解 API 参考文档信息,请参阅 DocumentServicedocuments。 如果您计划在非结构化数据中添加嵌入,请参阅 使用自定义嵌入

如果您有不可搜索的 PDF(扫描的 PDF 或包含图片内文本的 PDF,例如信息图),我们建议您在创建数据存储区期间开启布局解析器。这样,Agent Search 就可以提取文本块和表格等元素。如果您有可搜索的 PDF,这些 PDF 主要由机器可读文本组成,并且包含许多表格,您可以考虑开启 OCR 处理并启用机器可读文本选项,以提高检测和解析效果。如需了解详情,请参阅解析文档并将其分块 。

如果您想使用 Agent Search 进行检索增强生成 (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 行文件或 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\",\"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 中将 Google 身份设置为身份提供方。如需了解如何 设置访问权限控制,请参阅使用数据源访问权限 控制

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

结构化数据

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

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

从 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,且文件的每一行不得超过 1 MB。您可以在单个导入请求中导入最多 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 文档或对象。

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 万个,导入过程会在达到此限制后停止。如需了解详情,请参阅 配额和限制
  • 查看 Agent Search 支持的 FHIR R4 资源列表。如需了解详情,请参阅医疗保健 FHIR R4 数据架构参考文档
  • 资源引用:确保相对资源引用采用 Resource/resourceId 格式。例如,subject.reference 的值必须为 Patient/034AB16。如需详细了解 Cloud Healthcare API 如何支持 FHIR 资源引用,请参阅 FHIR 资源引用

  • DocumentReference 资源 中引用的文件必须是存储在 Cloud Storage 中的 PDF、RTF 或图片文件。引用文件的链接必须采用标准 Cloud Storage 路径格式,位于资源的 content[].attachment.url 字段中:gs://BUCKET_NAME/PATH_TO_REFERENCED_FILE.

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