准备数据的方式取决于您要导入的数据类型以及您选择的导入方式。首先,确定您计划导入的数据类型:
如需了解混合搜索(可将多个数据存储区连接到单个自定义搜索应用)的相关信息,请参阅关于连接多个数据存储区。
网站数据
为网站数据创建数据存储区时,您需要提供 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
文件,请执行以下操作:确保 Google-CloudVertexBot 可以访问您的内容。Vertex AI Search 机器人需要抓取您的信息(包括任何付费墙内容)并为其编制索引。例如:
User-agent: Google-CloudVertexBot Allow: /
Vertex AI Search 机器人需要抓取并编入您的信息(包括付费墙内容)的索引。如需详细了解如何抓取和编入内容(包括付费内容)的索引,请参阅以下内容:
检查您计划添加到数据存储区的网页是否未屏蔽索引编制。
如需了解详情,请参阅 robots.txt 简介和如何编写和提交 robots.txt 文件。
在数据存储区架构中添加
meta
标记和 PageMap 形式的结构化数据,以丰富索引编制,如使用结构化数据进行高级网站索引编制中所述。
非结构化数据
Vertex AI Search 支持搜索 HTML、包含嵌入文本的 PDF 和 TXT 格式的文档。预览版支持 PPTX 和 DOCX 格式。
您可以从 Cloud Storage 存储桶导入文档。您可以使用 Google Cloud 控制台、通过 ImportDocuments
方法或通过 CRUD 方法进行流式注入来导入数据。
如需了解 API 参考文档信息,请参阅 DocumentService 和 documents
。
下表列出了每种文件类型在不同配置下的文件大小限制(如需了解详情,请参阅解析文档并将其分块)。您一次最多可以导入 10 万个文件。
文件类型 | 默认导入 | 导入时进行布局感知型文档分块 | 使用布局解析器导入 |
---|---|---|---|
基于文本的文件,例如 HTML、TXT、JSON、XHTML 和 XML | < 200 MB | < 10 MB | < 10 MB |
PPTX、DOCX 和 XLSX | < 200 MB | < 200 MB | < 200 MB |
< 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。您可以在一次导入请求中最多导入 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 对象的形式提供自己的架构,以获得更好的结果。如果您未提供自己的架构,系统会自动检测架构。导入后,建议您修改自动检测到的架构,以映射关键属性(例如标题)。如需了解详情,请参阅提供或自动检测架构。
如果您计划在结构化数据中添加嵌入内容,请参阅使用自定义嵌入内容。
如需创建数据存储区,请参阅创建搜索数据存储区或创建推荐数据存储区。
结构化媒体数据
如果您打算注入结构化媒体数据(例如视频、新闻或音乐),请查看以下内容:
- 有关导入方法(BigQuery 或 Cloud Storage)的信息:结构化数据
- 媒体文档和数据存储区的必需架构和字段: 媒体文档和数据存储区简介
- 用户事件要求和架构:媒体用户事件简介
- 有关媒体推荐类型的信息:媒体推荐类型简介
医疗保健 FHIR 数据
如果您计划从 Cloud Healthcare API 注入 FHIR 数据,请确保满足以下条件:
- 位置:源 FHIR 存储区必须位于
us-central1
、us
或eu
位置的 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 资源引用。