You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何程序化导入GCS中.txt文件至Vertex AI Datastore并实现同步?

Vertex AI Search 程序化导入纯文本文件及相关问题解答

1. 是否可程序化导入.txt文件至Vertex Datastore?

可以实现,但需遵循Vertex AI Search的API规则处理纯文本文件:

  • 转换为JSONL格式导入
    官方API要求非结构化数据需以NDJSON/JSONL格式提交,你可将.txt内容封装为每行一个JSON对象,示例格式如下:
    {"content": "你的纯文本内容"}
    
    转换完成后上传至GCS,再调用导入API。以下是Python示例代码(使用google-cloud-discoveryengine库):
    from google.cloud import discoveryengine_v1 as discoveryengine
    
    client = discoveryengine.DocumentServiceClient()
    
    parent = client.branch_path(
        project="你的项目ID",
        location="你的区域",
        data_store="你的数据存储ID",
        branch="default_branch"
    )
    
    gcs_source = discoveryengine.GcsSource(
        input_uris=["gs://你的存储桶路径/转换后的文件.jsonl"],
        data_schema="document"
    )
    
    request = discoveryengine.ImportDocumentsRequest(
        parent=parent,
        gcs_source=gcs_source,
        import_mode=discoveryengine.ImportDocumentsRequest.ImportMode.FULL
    )
    
    operation = client.import_documents(request=request)
    operation.result()
    
  • 直接导入纯文本文件(需指定MIME类型)
    若不想转换格式,需在导入请求中明确指定文件MIME类型为text/plain,同时设置data_schema="document"。之前设置未生效大概率是缺少MIME类型配置,示例参数如下:
    gcs_source = discoveryengine.GcsSource(
        input_uris=["gs://你的存储桶路径/原始文件.txt"],
        data_schema="document",
        mime_type="text/plain"
    )
    

2. 有无简便方法实现GCS存储桶与Vertex Datastore同步?

有两种实用方案:

  • 事件驱动同步(基于Cloud Functions)
    创建Cloud Functions监听GCS桶的finalize事件(文件上传完成触发),当有新的.txt文件上传时,自动将其转换为JSONL格式(或直接配置MIME类型),再调用Vertex AI Search导入API完成同步。
  • 定期批量导入
    在Vertex AI Search控制台配置定期导入任务,指定目标GCS桶路径,系统会定期扫描桶内新增文件并导入。需确保桶内文件已按要求格式化(或配置正确的MIME类型)。

3. 为何暂无NodeJS库支持该导入操作?

  • Vertex AI Search(原Discovery Engine)属于较新的Google Cloud服务,NodeJS SDK的功能覆盖存在滞后性,目前官方优先完善Python、Java等主流语言的SDK支持。
  • 你可通过直接调用REST API在NodeJS中实现导入,示例代码如下(使用axios):
    const axios = require('axios');
    const { google } = require('googleapis');
    
    async function importDocuments() {
      const projectId = '你的项目ID';
      const location = '你的区域';
      const dataStoreId = '你的数据存储ID';
      const url = `https://discoveryengine.googleapis.com/v1/projects/${projectId}/locations/${location}/dataStores/${dataStoreId}/branches/default_branch/documents:import`;
    
      const requestBody = {
        gcsSource: {
          inputUris: ['gs://你的存储桶路径/文件.jsonl'],
          dataSchema: 'document'
        },
        importMode: 'FULL'
      };
    
      // 通过Google Cloud认证获取访问令牌
      const auth = await google.auth.getClient({
        scopes: ['https://www.googleapis.com/auth/cloud-platform']
      });
      const accessToken = await auth.getAccessToken();
    
      const response = await axios.post(url, requestBody, {
        headers: {
          'Authorization': `Bearer ${accessToken.token}`,
          'Content-Type': 'application/json'
        }
      });
    
      console.log(response.data);
    }
    

内容的提问来源于stack exchange,提问作者charnould

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:50:12