RAG Engine でデータコネクタを使用する

このページでは、データコネクタを使用して Cloud Storage、Google ドライブ、Slack、Jira、SharePoint に保存されているデータにアクセスする方法と、RAG Engine でそのデータを使用する方法について説明します。Import RagFiles API は、これらのデータソースにデータコネクタを提供します。

Cloud Storage または Google ドライブからファイルをインポートする

Cloud Storage または Google ドライブからファイル コーパスにファイルをインポートするには、次の操作を行います。

  1. RAG コーパスを作成するの手順に沿ってコーパスを作成します。
  2. テンプレートを使用して、Cloud Storage または Google ドライブからファイルをインポートします。

Slack からファイルをインポートする

Slack からコーパスにファイルをインポートするには、次の操作を行います。

  1. コーパスを作成します。コーパスは、検索用にデータを構造化して最適化するインデックスです。RAG コーパスを作成するの手順に沿って操作します。
  2. Slack チャンネル ID から CHANNEL_ID を取得します。
  3. RAG Engine で使用するアプリを作成して設定します。
    1. Slack UI の [Add features and functionality] セクションで、[Permissions] をクリックします。
    2. 次の権限を追加します。
      • channels:history
      • groups:history
      • im:history
      • mpim:history
    3. [Install to Workspace] をクリックして、Slack ワークスペースにアプリをインストールします。
  4. [Copy] をクリックして API トークンを取得します。このトークンにより、ID が認証され、API へのアクセス権が付与されます。
  5. Secret Manager に API トークンを追加します。
  6. 保存されているシークレットを表示するには、プロジェクトの RAG Engine サービス アカウントに Secret Manager のシークレット アクセサー ロールを付与します。

次の curl と Python のコードサンプルは、Slack リソースからファイルをインポートする方法を示しています。

curl

特定のチャンネルからメッセージを取得する場合は、CHANNEL_ID を変更します。

API_KEY_SECRET_VERSION=SLACK_API_KEY_SECRET_VERSION
CHANNEL_ID=SLACK_CHANNEL_ID
PROJECT_ID=us-central1

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ ENDPOINT }/v1beta1/projects/${ PROJECT_ID }/locations/${ PROJECT_ID }/ragCorpora/${ RAG_CORPUS_ID }/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "slack_source": {
      "channels": [
        {
          "apiKeyConfig": {
            "apiKeySecretVersion": "'"${ API_KEY_SECRET_VERSION }"'"
          },
          "channels": [
            {
              "channel_id": "'"${ CHANNEL_ID }"'"
            }
          ]
        }
      ]
    }
  }
}'

Python

特定の期間または特定のチャネルからメッセージを取得するには、次のいずれかのフィールドを変更します。

  • START_TIME
  • END_TIME
  • CHANNEL1 または CHANNEL2
    # Slack example
    start_time = protobuf.timestamp_pb2.Timestamp()
    start_time.GetCurrentTime()
    end_time = protobuf.timestamp_pb2.Timestamp()
    end_time.GetCurrentTime()
    source = rag.SlackChannelsSource(
        channels = [
            SlackChannel("CHANNEL1", "api_key1"),
            SlackChannel("CHANNEL2", "api_key2", START_TIME, END_TIME)
        ],
    )

    response = rag.import_files(
        corpus_name="projects/my-project/locations/us-central1/ragCorpora/my-corpus-1",
        source=source,
        chunk_size=512,
        chunk_overlap=100,
    )

Jira からファイルをインポートする

Jira からコーパスにファイルをインポートするには、次の操作を行います。

  1. コーパスを作成します。コーパスは、検索用にデータを構造化して最適化するインデックスです。RAG コーパスを作成するの手順に沿って操作します。
  2. API トークンを作成するには、Atlassian サイトにログインします。
  3. リクエストの SERVER_URI として {YOUR_ORG_ID}.atlassian.net を使用します。
  4. リクエストの EMAIL として Atlassian のメールアドレスを使用します。
  5. リクエストに projects または customQueries を指定します。カスタムクエリの詳細については、Jira Query Language(JQL)で高度な検索を使用するをご覧ください。

    projects をインポートすると、projects は対応するクエリに展開され、プロジェクト全体が取得されます。たとえば、MyProjectproject = MyProject に展開されます。

  6. [Copy] をクリックして API トークンを取得します。このトークンにより、ID が認証され、API へのアクセス権が付与されます。
  7. Secret Manager に API トークンを追加します。
  8. プロジェクトの RAG Engine サービス アカウントに Secret Manager のシークレット アクセサー ロールを付与します。

curl

EMAIL=JIRA_EMAIL
API_KEY_SECRET_VERSION=JIRA_API_KEY_SECRET_VERSION
SERVER_URI=JIRA_SERVER_URI
CUSTOM_QUERY=JIRA_CUSTOM_QUERY
PROJECT_ID=JIRA_PROJECT
REGION= "us-central1"

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ ENDPOINT }/v1beta1/projects/${ PROJECT_ID }/locations/REGION>/ragCorpora/${ RAG_CORPUS_ID }/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "jiraSource": {
      "jiraQueries": [{
        "projects": ["'"${ PROJECT_ID }"'"],
        "customQueries": ["'"${ CUSTOM_QUERY }"'"],
        "email": "'"${ EMAIL }"'",
        "serverUri": "'"${ SERVER_URI }"'",
        "apiKeyConfig": {
          "apiKeySecretVersion": "'"${ API_KEY_SECRET_VERSION }"'"
        }
      }]
    }
  }
}'

Python

    # Jira Example
    jira_query = rag.JiraQuery(
        email="xxx@yyy.com",
        jira_projects=["project1", "project2"],
        custom_queries=["query1", "query2"],
        api_key="api_key",
        server_uri="server.atlassian.net"
    )
    source = rag.JiraSource(
        queries=[jira_query],
    )

    response = rag.import_files(
        corpus_name="projects/my-project/locations/REGION/ragCorpora/my-corpus-1",
        source=source,
        chunk_size=512,
        chunk_overlap=100,
    )

SharePoint からファイルをインポートする

SharePoint サイトからコーパスにファイルをインポートするには、次の操作を行います。

  1. コーパスを作成します。コーパスは、検索用にデータを構造化して最適化するインデックスです。RAG コーパスを作成するの手順に沿って操作します。
  2. SharePoint サイトにアクセスする Azure アプリを作成します。
    1. 登録を作成するには、[アプリの登録] に移動します。
      1. アプリケーションの名前を指定します。
      2. [この組織ディレクトリ内のアカウントのみ] オプションを選択します。
      3. リダイレクト URI が空であることを確認します。
    2. [概要] セクションで、アプリケーション(クライアント)IDCLIENT_ID として使用し、[ディレクトリ(テナント)ID] を TENANT_ID として使用します。
    3. [管理] セクションで、次の手順に沿って API 権限を更新します。
      1. SharePoint の Sites.Read.All 権限を追加します。
      2. Microsoft Graph の Files.Read.All 権限と Browser SiteLists.Read.All 権限を追加します。
      3. これらの権限の変更を有効にするには、管理者の同意が必要です。
    4. [管理] セクションで、次の操作を行います。
      1. 新しいクライアント シークレットで [証明書とシークレット] を更新します。
      2. API_KEY_SECRET_VERSION を使用して、シークレット値を Secret Manager に追加します。
  3. プロジェクトの RAG Engine サービス アカウントに Secret Manager のシークレット アクセサー ロールを付与します。
  4. SHAREPOINT_SITE_NAME として {YOUR_ORG_ID}.sharepoint.com を使用します。
  5. リクエストで、SharePoint サイトのドライブ名またはドライブ ID を指定する必要があります。
  6. 省略可: ドライブのフォルダパスまたはフォルダ ID を指定できます。フォルダパスまたはフォルダ ID が指定されていない場合、ドライブ上のすべてのフォルダとファイルがインポートされます。

curl

CLIENT_ID=SHAREPOINT_CLIENT_ID
API_KEY_SECRET_VERSION=SHAREPOINT_API_KEY_SECRET_VERSION
TENANT_ID=SHAREPOINT_TENANT_ID
SITE_NAME=SHAREPOINT_SITE_NAME
FOLDER_PATH=SHAREPOINT_FOLDER_PATH
DRIVE_NAME=SHAREPOINT_DRIVE_NAME

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ ENDPOINT }/v1beta1/projects/${ PROJECT_ID }/locations/REGION>/ragCorpora/${ RAG_CORPUS_ID }/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "sharePointSources": {
      "sharePointSource": [{
        "clientId": "'"${ CLIENT_ID }"'",
        "apiKeyConfig": {
          "apiKeySecretVersion": "'"${ API_KEY_SECRET_VERSION }"'"
        },
        "tenantId": "'"${ TENANT_ID }"'",
        "sharepointSiteName": "'"${ SITE_NAME }"'",
        "sharepointFolderPath": "'"${ FOLDER_PATH }"'",
        "driveName": "'"${ DRIVE_NAME }"'"
      }]
    }
  }
}'

Python

    from vertexai.preview import rag
    from vertexai.preview.rag.utils import resources

    CLIENT_ID="SHAREPOINT_CLIENT_ID"
    API_KEY_SECRET_VERSION="SHAREPOINT_API_KEY_SECRET_VERSION"
    TENANT_ID="SHAREPOINT_TENANT_ID"
    SITE_NAME="SHAREPOINT_SITE_NAME"
    FOLDER_PATH="SHAREPOINT_FOLDER_PATH"
    DRIVE_NAME="SHAREPOINT_DRIVE_NAME"

    # SharePoint Example.
    source = resources.SharePointSources(
        share_point_sources=[
            resources.SharePointSource(
                client_id=CLIENT_ID,
                client_secret=API_KEY_SECRET_VERSION,
                tenant_id=TENANT_ID,
                sharepoint_site_name=SITE_NAME,
                folder_path=FOLDER_PATH,
                drive_id=DRIVE_ID,
            )
        ]
    )

    response = rag.import_files(
        corpus_name="projects/my-project/locations/REGION/ragCorpora/my-corpus-1",
        source=source,
        chunk_size=512,
        chunk_overlap=100,
    )

次のステップ