このページでは、データコネクタを使用して Cloud Storage、Google ドライブ、Slack、Jira、SharePoint に保存されているデータにアクセスする方法と、RAG Engine でそのデータを使用する方法について説明します。Import RagFiles API は、これらのデータソースにデータコネクタを提供します。
Cloud Storage または Google ドライブからファイルをインポートする
Cloud Storage または Google ドライブからファイル コーパスにファイルをインポートするには、次の操作を行います。
- RAG コーパスを作成するの手順に沿ってコーパスを作成します。
- テンプレートを使用して、Cloud Storage または Google ドライブからファイルをインポートします。
Slack からファイルをインポートする
Slack からコーパスにファイルをインポートするには、次の操作を行います。
- コーパスを作成します。コーパスは、検索用にデータを構造化して最適化するインデックスです。RAG コーパスを作成するの手順に沿って操作します。
- Slack チャンネル ID から
CHANNEL_ID
を取得します。 - RAG Engine で使用するアプリを作成して設定します。
- Slack UI の [Add features and functionality] セクションで、[Permissions] をクリックします。
- 次の権限を追加します。
channels:history
groups:history
im:history
mpim:history
- [Install to Workspace] をクリックして、Slack ワークスペースにアプリをインストールします。
- [Copy] をクリックして API トークンを取得します。このトークンにより、ID が認証され、API へのアクセス権が付与されます。
- Secret Manager に API トークンを追加します。
- 保存されているシークレットを表示するには、プロジェクトの 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 からコーパスにファイルをインポートするには、次の操作を行います。
- コーパスを作成します。コーパスは、検索用にデータを構造化して最適化するインデックスです。RAG コーパスを作成するの手順に沿って操作します。
- API トークンを作成するには、Atlassian サイトにログインします。
- リクエストの SERVER_URI として {YOUR_ORG_ID}.atlassian.net を使用します。
- リクエストの EMAIL として Atlassian のメールアドレスを使用します。
- リクエストに
projects
またはcustomQueries
を指定します。カスタムクエリの詳細については、Jira Query Language(JQL)で高度な検索を使用するをご覧ください。projects
をインポートすると、projects
は対応するクエリに展開され、プロジェクト全体が取得されます。たとえば、MyProject
はproject = MyProject
に展開されます。 - [Copy] をクリックして API トークンを取得します。このトークンにより、ID が認証され、API へのアクセス権が付与されます。
- Secret Manager に API トークンを追加します。
- プロジェクトの 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 サイトからコーパスにファイルをインポートするには、次の操作を行います。
- コーパスを作成します。コーパスは、検索用にデータを構造化して最適化するインデックスです。RAG コーパスを作成するの手順に沿って操作します。
- SharePoint サイトにアクセスする Azure アプリを作成します。
- 登録を作成するには、[アプリの登録] に移動します。
- アプリケーションの名前を指定します。
- [この組織ディレクトリ内のアカウントのみ] オプションを選択します。
- リダイレクト URI が空であることを確認します。
- [概要] セクションで、アプリケーション(クライアント)ID を CLIENT_ID として使用し、[ディレクトリ(テナント)ID] を TENANT_ID として使用します。
- [管理] セクションで、次の手順に沿って API 権限を更新します。
- SharePoint の
Sites.Read.All
権限を追加します。 - Microsoft Graph の
Files.Read.All
権限とBrowser SiteLists.Read.All
権限を追加します。 - これらの権限の変更を有効にするには、管理者の同意が必要です。
- SharePoint の
- [管理] セクションで、次の操作を行います。
- 新しいクライアント シークレットで [証明書とシークレット] を更新します。
- API_KEY_SECRET_VERSION を使用して、シークレット値を Secret Manager に追加します。
- 登録を作成するには、[アプリの登録] に移動します。
- プロジェクトの RAG Engine サービス アカウントに Secret Manager のシークレット アクセサー ロールを付与します。
- SHAREPOINT_SITE_NAME として {YOUR_ORG_ID}.sharepoint.com を使用します。
- リクエストで、SharePoint サイトのドライブ名またはドライブ ID を指定する必要があります。
- 省略可: ドライブのフォルダパスまたはフォルダ 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,
)
次のステップ
- グラウンディングの詳細については、グラウンディングの概要をご覧ください。
- RAG Engine の詳細については、RAG Engine を使用するをご覧ください。
- グラウンディングと RAG の詳細を確認する。RAG を使用したレスポンスのグラウンディングをご覧ください。