RAG 엔진에서 데이터 커넥터 사용

이 페이지에서는 데이터 커넥터를 사용하여 Cloud Storage, Google Drive, Slack, Jira 또는 SharePoint에 저장된 데이터에 액세스하고 RAG 엔진에서 이 데이터를 사용하는 방법을 보여줍니다. Rag 파일 가져오기 API는 이러한 데이터 소스에 대한 데이터 커넥터를 제공합니다.

Cloud Storage 또는 Google Drive에서 파일 가져오기

Cloud Storage 또는 Google Drive에서 코퍼스로 파일을 가져오려면 다음을 수행합니다.

  1. RAG 코퍼스 만들기의 안내에 따라 코퍼스를 만듭니다.
  2. 템플릿을 사용하여 Cloud Storage 또는 Google Drive에서 파일을 가져옵니다.

Slack에서 파일 가져오기

Slack에서 코퍼스로 파일을 가져오려면 다음을 수행합니다.

  1. 검색용으로 데이터를 구조화하고 최적화하는 색인인 코퍼스를 만듭니다. RAG 코퍼스 만들기의 안내를 따릅니다.
  2. Slack 채널 ID에서 CHANNEL_ID를 가져옵니다.
  3. RAG 엔진과 함께 사용할 앱을 만들고 설정합니다.
    1. Slack UI의 특성 및 기능 추가 섹션에서 권한을 클릭합니다.
    2. 다음 권한을 추가합니다.
      • channels:history
      • groups:history
      • im:history
      • mpim:history
    3. 작업공간에 설치를 클릭하여 Slack 작업공간에 앱을 설치합니다.
  4. 복사를 클릭하여 ID를 인증하고 API에 대해 액세스 권한을 부여하는 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 쿼리 언어(JQL)에 고급 검색 사용을 참조하세요.

    projects를 가져오면 전체 프로젝트를 가져오기 위해 projects가 해당 쿼리로 확장됩니다. 예를 들어 MyProjectproject = MyProject로 확장됩니다.

  6. 복사를 클릭하여 ID를 인증하고 API에 대해 액세스 권한을 부여하는 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.AllBrowser 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,
    )

다음 단계