Auf dieser Seite wird beschrieben, wie Sie Daten mit einer unterstützten Datenquelle wie Cloud Storage, Google Drive, Slack, Jira oder SharePoint aufnehmen und diese Daten mit der Vertex AI RAG Engine verwenden. Die Import RagFiles API bietet Daten-Connectors für diese Datenquellen.
Für RAG unterstützte Datenquellen
Die folgenden Datenquellen werden unterstützt:
- Lokale Datei hochladen:Ein Upload einer einzelnen Datei mit
upload_file
(bis zu 25 MB), das ein synchroner Aufruf ist. - Cloud Storage:Importieren Sie Datei(en) aus Cloud Storage.
Google Drive:Importieren Sie ein Verzeichnis aus Google Drive.
Dem Dienstkonto müssen die erforderlichen Berechtigungen zum Importieren von Dateien gewährt werden. Andernfalls werden keine Dateien importiert und keine Fehlermeldung angezeigt. Weitere Informationen zu Dateigrößenbeschränkungen finden Sie unter Unterstützte Dokumenttypen.
So authentifizieren und erteilen Sie Berechtigungen:
- Rufen Sie die IAM-Seite IhresGoogle Cloud -Projekts auf.
- Wählen Sie Von Google bereitgestellte Rollenzuweisung einschließen aus.
- Suchen Sie nach dem Dienstkonto Vertex AI RAG Data Service Agent.
- Klicken Sie im Drive-Ordner auf Freigeben und geben Sie es für das Dienstkonto frei.
- Gewähren Sie dem Dienstkonto in Ihrem Google Drive-Ordner oder Ihrer Datei die Berechtigung
Viewer
. Die Google Drive-Ressourcen-ID finden Sie in der Web-URL.
Slack: Importieren Sie Dateien aus Slack mit einem Datenconnector.
Jira: Importieren Sie Dateien aus Jira mit einem Datenconnector.
Weitere Informationen finden Sie in der RAG API-Referenz.
Deduplizierung von Daten
Wenn dieselbe Datei mehrmals ohne Änderungen importiert wird, wird sie übersprungen, da sie bereits vorhanden ist. response.skipped_rag_files_count
bezieht sich daher auf die Anzahl der Dateien, die während des Importvorgangs übersprungen wurden.
Eine Datei wird übersprungen, wenn die folgenden Bedingungen erfüllt sind:
- Die Datei wurde importiert.
- Die Datei hat sich nicht geändert.
- Die Blockkonfiguration für die Datei hat sich nicht geändert.
Importfehler
In diesem Abschnitt werden die Metadaten in einer Antwort auf eine Importanfrage und ein Datensenke erläutert. Die Datensenke ist das Ziel für die Daten, die Sie importieren.
Metadaten der Antwort
Mit response.metadata
(einem Antwortobjekt im SDK) können Sie sich die Import- und Antwortzeiten sowie die Ergebnisse des Imports ansehen.
Senke für Import-Ergebnisse
Im SDK ist import_result_sink
ein optionaler Funktionsparameter, der auf einen gültigen Stringwert festgelegt werden kann.
Wenn import_result_sink
angegeben ist, werden die Ergebnisse der erfolgreichen und fehlgeschlagenen Dateien in die Senke geschrieben. Wenn alle Ergebnisse in die Senke geschrieben werden, ist es einfacher zu verstehen, warum einige Dateien möglicherweise nicht importiert werden konnten und welche Dateien nicht importiert wurden.
import_result_sink
muss ein Cloud Storage-Pfad oder eine BigQuery-Tabelle sein.
Wenn
import_result_sink
ein Cloud Storage-Pfad ist, sollte er das Format vongs://my-bucket/my/object.ndjson
verwenden und das Objekt darf nicht vorhanden sein. Nach Abschluss des Importjobs enthält jede Zeile des Cloud Storage-Objekts ein JSON-Objekt mit einer Vorgangs-ID, einem Erstellungszeitstempel, einem Dateinamen, einem Status und einer Datei-ID.Wenn
import_result_sink
eine BigQuery-Tabelle ist, sollte sie das Formatbq://my-project.my-dataset.my-table
verwenden. Die Tabelle muss nicht vorhanden sein. Wenn die Tabelle nicht vorhanden ist, wird sie erstellt. Wenn die Tabelle vorhanden ist, wird das Schema überprüft. Wenn Sie den BigQuery-Import-Ergebnis-Sink zum ersten Mal angeben, müssen Sie eine nicht vorhandene Tabelle angeben. Andernfalls können Sie die vorhandene Tabelle wiederverwenden.
Dateien aus Cloud Storage oder Google Drive importieren
So importieren Sie Dateien aus Cloud Storage oder Google Drive in Ihren Korpus:
Erstellen Sie einen Korpus. Folgen Sie dazu der Anleitung unter RAG-Korpus erstellen.
Verwenden Sie die Vorlage, um Ihre Dateien aus Cloud Storage oder Google Drive zu importieren.
Das System prüft automatisch den Pfad, den Dateinamen und die
version_id
Ihrer Datei. Derversion_id
ist ein Dateihash, der anhand des Inhalts der Datei berechnet wird. Dadurch wird verhindert, dass die Datei neu indexiert wird.Wenn eine Datei mit demselben Dateinamen und Pfad eine Inhaltsaktualisierung hat, wird die Datei neu indexiert.
Dateien aus Slack importieren
So importieren Sie Dateien aus Slack in Ihren Korpus:
- Erstellen Sie einen Korpus. Das ist ein Index, der Ihre Daten für die Suche strukturiert und optimiert. Folgen Sie der Anleitung unter RAG-Korpus erstellen.
- Rufen Sie die
CHANNEL_ID
aus der Slack-Kanal-ID ab. - Erstellen Sie eine Anwendung und richten Sie sie für die Verwendung mit Vertex AI RAG Engine ein.
- Klicken Sie in der Slack-Benutzeroberfläche im Bereich Features und Funktionen hinzufügen auf Berechtigungen.
- Fügen Sie die folgenden Berechtigungen hinzu:
channels:history
groups:history
im:history
mpim:history
- Klicken Sie auf In Workspace installieren, um die Anwendung in Ihrem Slack-Workspace zu installieren.
- Klicken Sie auf Kopieren, um das API-Token abzurufen, das Ihre Identität authentifiziert und Ihnen Zugriff auf eine API gewährt.
- Fügen Sie Ihrem Secret Manager Ihren API-Token hinzu.
- Wenn Sie das gespeicherte Secret aufrufen möchten, weisen Sie dem Dienstkonto der Vertex AI RAG Engine Ihres Projekts die Rolle Secret Manager Secret Accessor zu.
In den folgenden Curl- und Python-Codebeispielen wird gezeigt, wie Sie Dateien aus Ihren Slack-Ressourcen importieren.
curl
Wenn Sie Nachrichten von einem bestimmten Kanal erhalten möchten, ändern Sie die 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
Wenn Sie Nachrichten für einen bestimmten Zeitraum oder von einem bestimmten Kanal abrufen möchten, ändern Sie eines der folgenden Felder:
- START_TIME
- END_TIME
- CHANNEL1 oder 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,
)
Dateien aus Jira importieren
So importieren Sie Dateien aus Jira in Ihren Corpus:
- Erstellen Sie einen Korpus. Das ist ein Index, der Ihre Daten für die Suche strukturiert und optimiert. Folgen Sie der Anleitung unter RAG-Korpus erstellen.
- Melden Sie sich zum Erstellen eines API-Tokens auf der Atlassian-Website an.
- Verwenden Sie in der Anfrage {YOUR_ORG_ID}.atlassian.net als SERVER_URI.
- Verwenden Sie Ihre Atlassian-E-Mail-Adresse als EMAIL in der Anfrage.
- Geben Sie
projects
odercustomQueries
in Ihrer Anfrage an. Weitere Informationen zu benutzerdefinierten Abfragen finden Sie unter Erweiterte Suche mit Jira Query Language (JQL) verwenden.Wenn Sie
projects
importieren, wirdprojects
in die entsprechenden Abfragen erweitert, um das gesamte Projekt abzurufen. Beispiel:MyProject
wird zuproject = MyProject
erweitert. - Klicken Sie auf Kopieren, um das API-Token abzurufen, das Ihre Identität authentifiziert und Ihnen Zugriff auf eine API gewährt.
- Fügen Sie Ihrem Secret Manager Ihren API-Token hinzu.
- Weisen Sie dem Vertex AI RAG Engine-Dienstkonto Ihres Projekts die Rolle Zugriffsperson für Secret Manager-Secret zu.
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,
)
Dateien aus SharePoint importieren
So importieren Sie Dateien von Ihrer SharePoint-Website in Ihren Korpus:
- Erstellen Sie einen Korpus. Das ist ein Index, der Ihre Daten für die Suche strukturiert und optimiert. Folgen Sie der Anleitung unter RAG-Korpus erstellen.
- Erstellen Sie eine Azure-App für den Zugriff auf Ihre SharePoint-Website.
- Rufen Sie App-Registrierungen auf, um eine Registrierung zu erstellen.
- Geben Sie einen Namen für die Anwendung an.
- Wählen Sie die Option Nur Konten in diesem Organisationsverzeichnis aus.
- Prüfen Sie, ob die Weiterleitungs-URIs leer sind.
- Verwenden Sie im Abschnitt Übersicht Ihre Anwendungs- (Client-)ID als CLIENT_ID und Ihre Verzeichnis- (Mandanten-)ID als TENANT_ID.
- Aktualisieren Sie im Abschnitt Verwalten die API-Berechtigungen so:
- Fügen Sie die SharePoint-Berechtigung
Sites.Read.All
hinzu. - Fügen Sie die Microsoft Graph-Berechtigungen
Files.Read.All
undBrowser SiteLists.Read.All
hinzu. - Erteilen Sie die Administratorzustimmung, damit diese Berechtigungsänderungen wirksam werden.
- Fügen Sie die SharePoint-Berechtigung
- Führen Sie im Bereich Verwalten folgende Schritte aus:
- Aktualisieren Sie Zertifikate und Secrets mit einem neuen Clientschlüssel.
- Verwenden Sie API_KEY_SECRET_VERSION, um den Secret-Wert in Secret Manager einzufügen.
- Rufen Sie App-Registrierungen auf, um eine Registrierung zu erstellen.
- Weisen Sie dem Vertex AI RAG Engine-Dienstkonto Ihres Projekts die Rolle Zugriffsperson für Secret Manager-Secret zu.
- Verwenden Sie {YOUR_ORG_ID}.sharepoint.com als SHAREPOINT_SITE_NAME.
- Im Antrag muss ein Laufwerkname oder eine Laufwerk-ID auf der SharePoint-Website angegeben werden.
- Optional: Es kann ein Ordnerpfad oder eine Ordner-ID auf dem Laufwerk angegeben werden. Wenn der Ordnerpfad oder die Ordner-ID nicht angegeben ist, werden alle Ordner und Dateien auf dem Laufwerk importiert.
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,
)