RAG のため Vertex AI で LlamaIndex とデータコネクタを使用する

このページでは、データコネクタを使用して Cloud Storage、Google ドライブ、Slack、Jira に保存されているデータにアクセスする方法と、Vertex AI の LlamaIndex で RAG にそのデータを使用する方法について説明します。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. Vertex AI の LlamaIndex で RAG に使用するアプリを作成して設定します。
    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. 保存されているシークレットを表示するには、プロジェクトの LlamaIndex on Vertex AI for RAG サービス アカウントに 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. プロジェクトの LlamaIndex on Vertex AI for RAG サービス アカウントに、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,
    )

次のステップ