Halaman ini menjelaskan cara melakukan penyerapan data menggunakan sumber data yang didukung, seperti Cloud Storage, Google Drive, Slack, Jira, atau SharePoint, dan cara menggunakan data tersebut dengan RAG Engine. Metode ragFiles.import menyediakan konektor data ke sumber data ini.
Sumber data yang didukung untuk RAG
Sumber data berikut didukung:
- Mengupload file lokal: Upload file tunggal menggunakan
upload_file(hingga 25 MB), yang merupakan panggilan sinkron. - Cloud Storage: Mengimpor file dari Cloud Storage.
Google Drive: Mengimpor direktori dari Google Drive.
Akun layanan harus diberi izin yang benar untuk mengimpor file. Jika tidak, tidak ada file yang diimpor dan tidak ada pesan error yang ditampilkan. Untuk mengetahui informasi selengkapnya tentang batas ukuran file, lihat Jenis dokumen yang didukung.
Untuk mengautentikasi dan memberikan izin, lakukan hal berikut:
- Buka halaman IAM project Google Cloud Anda.
- Pilih Sertakan pemberian peran yang disediakan Google.
- Telusuri akun layanan Agen Layanan Data RAG Platform Agen.
- Klik Bagikan di folder Drive, lalu bagikan dengan akun layanan.
- Berikan izin
Viewerke akun layanan di folder atau file Google Drive Anda. ID resource Google Drive dapat ditemukan di URL web.
Slack: Mengimpor file dari Slack menggunakan konektor data.
Jira: Mengimpor file dari Jira menggunakan konektor data.
Penghapusan duplikat data
Jika file yang sama diimpor beberapa kali tanpa perubahan, file tersebut akan dilewati karena sudah ada. Oleh karena itu, response.skipped_rag_files_count mengacu pada jumlah file yang dilewati selama proses impor.
File dilewati jika kondisi berikut terpenuhi:
- File telah diimpor.
- File tidak berubah.
- Konfigurasi chunking untuk file tidak berubah.
Memahami kegagalan impor
Untuk memahami kegagalan impor, bagian ini menjelaskan metadata dalam respons terhadap permintaan impor dan data sink, yang merupakan tujuan untuk data yang Anda impor.
Metadata respons
Anda dapat menggunakan response.metadata (objek respons di SDK) untuk melihat hasil impor, waktu permintaan, dan waktu respons.
Sink hasil impor
Di SDK, import_result_sink adalah parameter fungsi opsional yang dapat ditetapkan ke nilai string yang valid.
Jika import_result_sink diberikan, hasil file yang berhasil dan gagal akan ditulis ke sink. Dengan semua hasil yang ditulis ke sink, Anda dapat lebih mudah memahami alasan beberapa file mungkin gagal diimpor dan file mana yang tidak diimpor.
import_result_sink harus berupa jalur Cloud Storage atau tabel BigQuery.
Jika
import_result_sinkadalah jalur Cloud Storage, jalur tersebut harus menggunakan formatgs://my-bucket/my/object.ndjson, dan objek tidak boleh ada. Setelah tugas impor selesai, setiap baris objek Cloud Storage berisi objek JSON, yang memiliki ID operasi, stempel waktu pembuatan, nama file, status, dan ID file.Jika
import_result_sinkadalah tabel BigQuery, tabel tersebut harus menggunakan formatbq://my-project.my-dataset.my-table. Tabel tidak harus ada. Jika tidak ada, tabel akan dibuat. Jika tabel ada, skema akan diverifikasi. Saat pertama kali sink hasil impor BigQuery diberikan, Anda akan memberikan tabel yang tidak ada; jika tidak, Anda dapat menggunakan kembali tabel yang ada.
Mengimpor file dari Cloud Storage atau Google Drive
Untuk mengimpor file dari Cloud Storage atau Google Drive ke dalam korpus, lakukan hal berikut:
Buat korpus RAG. Untuk mengetahui informasi selengkapnya, lihat Metode: ragCorpora.create.
Untuk mengimpor file dari Cloud Storage atau Google Drive, gunakan metode ragFiles.import.
Sistem akan otomatis memeriksa jalur, nama file, dan
version_idfile Anda.version_idadalah hash file yang dihitung menggunakan konten file, yang mencegah file diindeks ulang.Jika file dengan nama file dan jalur yang sama memiliki update konten, file tersebut akan diindeks ulang.
Mengimpor file dari Slack
Untuk mengimpor file dari Slack ke dalam korpus, lakukan hal berikut:
- Buat korpus, yang merupakan indeks yang menyusun dan mengoptimalkan data Anda untuk penelusuran. Untuk mengetahui informasi selengkapnya, lihat Metode: ragCorpora.create.
- Dapatkan
CHANNEL_IDdari ID saluran Slack. - Buat dan siapkan aplikasi untuk digunakan dengan RAG Engine.
- Dari UI Slack, di bagian Tambahkan fitur dan fungsi, klik Izin.
- Tambahkan izin berikut:
channels:historygroups:historyim:historympim:history
- Klik Instal ke Ruang Kerja untuk menginstal aplikasi ke ruang kerja Slack Anda.
- Klik Salin untuk mendapatkan token API, yang mengautentikasi identitas Anda dan memberi Anda akses ke API.
- Tambahkan token API ke Secret Manager Anda.
- Untuk melihat secret yang disimpan, berikan peran Secret Manager Secret Accessor ke akun layanan RAG Engine project Anda.
Contoh kode curl dan Python berikut menunjukkan cara mengimpor file dari resource Slack Anda.
curl
Jika Anda ingin mendapatkan pesan dari saluran tertentu, ubah 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
Jika Anda ingin mendapatkan pesan untuk rentang waktu tertentu atau dari saluran tertentu, ubah salah satu kolom berikut:
- START_TIME
- END_TIME
- CHANNEL1 atau 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,
)
Mengimpor file dari Jira
Untuk mengimpor file dari Jira ke dalam korpus, lakukan hal berikut:
Buat korpus, yang merupakan indeks yang menyusun dan mengoptimalkan data Anda untuk penelusuran. Untuk mengetahui informasi selengkapnya, lihat Metode: ragCorpora.create.
Untuk membuat token API, login ke situs Atlassian.
Gunakan {YOUR_ORG_ID}.atlassian.net sebagai SERVER_URI dalam permintaan.
Gunakan email Atlassian Anda sebagai EMAIL dalam permintaan.
Berikan
projectsataucustomQueriesdengan permintaan Anda. Untuk mempelajari kueri kustom lebih lanjut, lihat Menggunakan penelusuran lanjutan dengan Jira Query Language (JQL).Saat Anda mengimpor
projects,projectsakan diperluas ke kueri yang sesuai untuk mendapatkan seluruh project. Misalnya,MyProjectdiperluas menjadiproject = MyProject.Klik Salin untuk mendapatkan token API, yang mengautentikasi identitas Anda dan memberi Anda akses ke API.
Tambahkan token API ke Secret Manager Anda.
Berikan peran Secret Manager Secret Accessor ke akun layanan RAG Engine project Anda.
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,
)
Mengimpor file dari SharePoint
Untuk mengimpor file dari situs SharePoint ke dalam korpus, lakukan hal berikut:
Buat korpus, yang merupakan indeks yang menyusun dan mengoptimalkan data Anda untuk penelusuran. Untuk mengetahui informasi selengkapnya, lihat Metode: ragCorpora.create.
Buat aplikasi Azure untuk mengakses situs SharePoint Anda.
Untuk membuat pendaftaran, buka Pendaftaran Aplikasi.
Berikan nama untuk aplikasi.
Pilih opsi, Akun di direktori organisasi ini saja.
Pastikan URI pengalihan kosong.
Di bagian Ringkasan, gunakan ID Aplikasi (klien) sebagai CLIENT_ID, dan gunakan "ID Direktori (tenant)" sebagai TENANT_ID.
Di bagian Kelola, perbarui izin API dengan melakukan hal berikut:
Tambahkan izin
Sites.Read.AllSharePoint.Tambahkan izin
Files.Read.AlldanBrowser SiteLists.Read.AllMicrosoft Graph.Berikan izin admin agar perubahan izin ini diterapkan.
Di bagian Kelola, lakukan hal berikut:
Perbarui Sertifikat dan Secret dengan secret klien baru.
Gunakan API_KEY_SECRET_VERSION untuk menambahkan secret nilai ke Secret Manager.
Berikan peran Secret Manager Secret Accessor ke akun layanan RAG Engine project Anda.
Gunakan {YOUR_ORG_ID}.sharepoint.com sebagai SHAREPOINT_SITE_NAME.
Nama drive atau ID drive di situs SharePoint harus ditentukan dalam permintaan.
Opsional: Jalur folder atau ID folder di drive dapat ditentukan. Jika jalur folder atau ID folder tidak ditentukan, semua folder dan file di drive akan diimpor.
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,
)