为自定义数据源准备数据

企业通常会自行构建自定义应用。如果您希望 Gemini Enterprise 连接到这些自定义应用中的数据源,首先需要准备数据。准备数据的方式取决于您要从自定义数据源导入的数据类型以及您选择的导入方式。首先,确定您计划导入的数据类型:

如需了解混合搜索的限制(其中多个数据存储区可以连接到单个应用),请参阅关于连接多个数据存储区

非结构化数据

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

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

文件类型 默认导入
基于文本的文件,例如 HTML、TXT、JSON、XHTML 和 XML < 200 MB
PPTX、DOCX 和 XLSX < 200 MB
PDF < 200 MB

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

如果您有无法搜索的 PDF(扫描的 PDF 或图片中包含文字的 PDF,例如信息图表),建议您在创建数据存储区期间开启布局解析器。这样,Gemini Enterprise 就可以提取文本块和表格等元素。如果您有可搜索的 PDF 文件,其中大部分内容是机器可读的文本,并且包含许多表格,您可以考虑启用 OCR 处理,并启用机器可读文本选项,以提高检测和解析效果。如需了解详情,请参阅解析文档并将其分块

如果您想使用 Gemini Enterprise 进行检索增强生成 (RAG),请在创建数据存储区时启用文档分块。如需了解详情,请参阅解析文档并将其分块

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

Cloud Storage

您可以使用 Google Cloud 控制台、通过 ImportDocuments 方法或通过 CRUD 方法进行流式注入,从 Cloud Storage 导入包含或不包含元数据的数据。如需查看 API 参考文档信息,请参阅 DocumentServicedocuments

数据导入是递归的。也就是说,如果指定存储桶或文件夹内有文件夹,系统会导入这些文件夹内的文件。

如果您计划从 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"}}

如需创建数据存储区,请参阅关联 Google 数据源

BigQuery

如果您计划从 BigQuery 导入元数据,请按以下步骤操作:

  1. 创建包含元数据的 BigQuery 表。 文档 ID 是元数据的一个示例。

  2. 将非结构化文档放入 Cloud Storage 存储桶中。

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

使用以下 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 云端硬盘中的数据以供搜索。

如果您计划从 Google 云端硬盘导入数据,则必须在 Gemini Enterprise 中将 Google 身份设置为身份提供方。如需了解如何设置访问权限控制,请参阅身份和权限

如需创建数据存储区,请参阅关联 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": []
  }
]

如需创建数据存储区,请参阅关联 Google 数据源

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

如需创建数据存储区,请参阅关联 Google 数据源

本地 JSON 数据

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

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

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

如需创建数据存储区,请参阅关联 Google 数据源