RAG-Tool - Oracle Database-Richtlinien für generative KI-Agents
Sie können Ihre eigenen (BYO-)Vektoreinbettungen von einer Oracle Database-Version 23ai in OCI Generative AI-Agents verwenden.
In diesem Thema werden Supportinformationen, erforderliche Aufgaben und Richtlinien für die Verwendung von Oracle Database 23ai als Datenoption für generative KI-Agents beschrieben. Die bereitgestellten Informationen setzen voraus, dass Sie mit virtuellen Cloud-Netzwerken (VCNs) und Subnetzen, Oracle Database 23ai und dem Datenbanktoolservice vertraut sind.
Bevor Sie einen Oracle Database-Vektorspeicher der Version 23ai als Datenoption für generative KI-Agents verwenden, stellen Sie sicher, dass Sie verstehen, was unterstützt wird, und führen Sie alle erforderlichen Aufgaben aus.
- Datenbanktypen
-
Generative KI-Agents unterstützen BYO-Vektoreinbettungen von:
-
Oracle Base Database 23ai: Die Datenbank kann in einem privaten Netzwerk konfiguriert werden. Siehe DB-Systeme erstellen.
-
Nur Oracle Autonomous Database 23ai der folgenden Netzwerkzugriffstypen:
-
Nur Zugriff auf privaten Endpunkt: Die gegenseitige TLS-(mTLS-)Authentifizierung kann aktiviert werden, um Verbindungen zur Datenbank zu authentifizieren. Aktivieren Sie das Kontrollkästchen Gegenseitige TLS-Authentifizierung (mTLS) erforderlich, um die mTLS-Authentifizierung zu aktivieren.
-
Sicherer Zugriff von überall: Die mTLS-Authentifizierung ist standardmäßig aktiviert und erforderlich.
-
-
- Autonome Datenbanken für mTLS-Authentifizierung aktiviert
-
Wenn die autonome Datenbank für die mTLS-Authentifizierung aktiviert ist, müssen Sie das Wallet herunterladen, ein Wallet-Kennwort erstellen und eine Datei aus dem Wallet extrahieren. Siehe Wallet-Sicherheitsanforderungen in Schritt 3. Netzwerk- und Sicherheitsanforderungen konfigurieren
- Regionsübergreifende und mandantenübergreifende Datenbankunterstützung
-
Regionsübergreifende und mandantenübergreifende Datenbankunterstützung ist nur für Oracle Database 23ai mit privatem Netzwerkzugriff verfügbar. Dazu gehören Oracle Base Database und Oracle Autonomous Database, die mit dem Netzwerkzugriffstyp Nur Zugriff auf privaten Endpunkt konfiguriert sind. Autonome Datenbanken mit öffentlichem Zugriff werden nicht unterstützt.
Wenn Sie generative AI-Agents in einer gehosteten Region verwenden, können Sie eine Verbindung zu einer privaten Zugriffsdatenbank herstellen, die sich in Folgendem befindet:- Eine andere Region innerhalb desselben Mandanten. Aktivieren Sie die Konnektivität, indem Sie eine Verbindung zu den Datenbanktools in der Region erstellen, in der der Agent-Service verfügbar ist.
- Weiterer Mandant. Aktivieren Sie die Konnektivität, indem Sie eine Verbindung zu Datenbanktools in dem Mandanten erstellen, in dem der Agent-Service verfügbar ist.
Informationen zum Einrichten der Netzwerkeinstellungen finden Sie unter Netzwerkanforderungen (regional und mandantenübergreifend) in Schritt 3. Netzwerk- und Sicherheitsanforderungen konfigurieren
Um eine Verbindung zu erstellen, geben Sie die Verbindungszeichenfolge manuell ein, wie in Schritt 5 beschrieben. Datenbanktoolverbindungen erstellen.
Neben dem Benutzerzugriff auf alle generativen KI-Agent-Ressourcen, wie unter Policys hinzufügen, bevor Sie den Service verwenden können beschrieben, müssen Sie eine dynamische Gruppe mit Zugriff auf Vault Secrets und Datenbanktools erstellen.
-
Erstellen Sie eine dynamische Gruppe, und fügen Sie die folgende Vergleichsregel hinzu.
ALL {resource.type='genaiagent'}
Wenn Sie Hilfe benötigen, finden Sie weitere Informationen unter Dynamische Gruppen erstellen.
-
Erteilen Sie der dynamischen Gruppe Berechtigungen.
-
Schreiben Sie die folgenden Policys, die mit der Standardidentitätsdomain verwendet werden können:
allow dynamic-group <dynamic-group-name> to read database-tools-family in compartment <compartment-name> allow dynamic-group <dynamic-group-name> to read secret-bundle in compartment <compartment-name>
-
Verwenden Sie die folgenden Policys mit einer Identitätsdomain, die nicht standardmäßig ist, und geben Sie den Oracle Identity Cloud Service-(IDCS-)Domainnamen und den Namen der dynamischen Gruppe an:
allow dynamic-group '<idcs-domain-name>/<dynamic-group-name>' to read database-tools-family in compartment <compartment-name> allow dynamic-group '<idcs-domain-name>/<dynamic-group-name>' to read secret-bundle in compartment <compartment-name>
-
Wenn nach dem Schreiben der vorherigen Policys nicht auf die Verbindung mit den Datenbanktools zugegriffen werden kann, kann es zu einem Problem mit dem Resource Principal-Sessiontoken kommen. Versuchen Sie, die folgenden Richtlinieneinstellungen zu verwenden, ohne sich auf dynamische Gruppen zu verlassen:
allow any-user to read database-tools-family in compartment <compartment-name> where any {request.principal.type='genaiagent'}
allow any-user to read secret-bundle in compartment <compartment-name> where any {request.principal.type='genaiagent'}
Führen Sie diese Aufgaben aus, wenn Sie die erforderlichen Ressourcen noch nicht konfiguriert oder erstellt haben.
- Netzwerkanforderungen
-
- Fügen Sie die Datenbank dem privaten Subnetz eines VCN hinzu.
- Richten Sie die folgenden Eigenschaften für die Ingress-Regel des Subnetzes ein:
- Quelltyp: CIDR
- Source CIDR: The VCN's IPv4 CIDR Block (such as 10.0.0.0/16)
- IP-Protokoll: TCP
- Quellportbereich: Alle
- Zielportbereich: 1521-1522
- Netzwerkanforderungen (regionale und mandantenübergreifende Datenbank)
-
Die folgenden Anforderungen gelten nur für Oracle Database 23ai mit privatem Netzwerkzugriff. Dazu gehören Oracle Base Database und Oracle Autonomous Database, die mit dem Netzwerkzugriffstyp Nur Zugriff auf privaten Endpunkt konfiguriert sind. Autonome Datenbanken mit öffentlichem Zugriff werden nicht unterstützt.
Netzwerkeinstellungen
- Richten Sie zwei VCNs mit sich nicht überschneidenden CIDRs ein. Informationen zum Konfigurieren der Netzwerkeinstellungen finden Sie unter Remote-VCN-Peering.
- Stellen Sie im VCN der Datenbank sicher, dass Sie die Ingress-Regel für das VCN-CIDR der Verbindung mit den Datenbanktools hinzufügen, um auf die Datenbankports 1521-1522 zuzugreifen.
Beispiel für regionsübergreifende Datenbanken: Sie können eine Verbindung zu einer Datenbank herstellen, die sich in einer anderen Region befindet als der Service für generative AI-Agents. Beispiele:
-
Der Agent-Service wird in Mandant A in der ORD-Region ausgeführt.
-
Die Oracle Base Database oder Oracle Autonomous Database mit privatem Netzwerkzugriff wird in der PHX-Region bereitgestellt.
-
Um auf die private Datenbank zuzugreifen, konfigurieren Sie dynamische Routinggateways (DRGs) in beiden Regionen, und richten Sie eine Verbindung mit Datenbanktools in ORD ein, um eine Verbindung zur Datenbank in PHX herzustellen.
Beispiel für mandantenübergreifende Datenbanken: Sie können eine Verbindung zu einer Datenbank herstellen, die sich in einem anderen Mandanten als der Service für generative AI-Agents befindet. Beispiele:
-
Der Agent-Service wird in Mandant A in der ORD-Region ausgeführt.
-
Die Oracle Base Database oder Oracle Autonomous Database mit privatem Netzwerkzugriff wird in Mandant B in der PHX-Region bereitgestellt.
-
Um auf die private Datenbank zuzugreifen, konfigurieren Sie dynamische Routinggateways (DRGs) in beiden Mandanten, und richten Sie eine Verbindung zu Datenbanktools in Mandant A (ORD-Region) ein, um eine Verbindung zur Datenbank in Mandant B (PHX-Region) herzustellen.
Die mandantenübergreifende Netzwerkkonfiguration gilt unabhängig davon, ob sich der Datenbankservice und der Agent-Service in derselben Region oder in verschiedenen Regionen befinden.
- Vault-Sicherheitsanforderungen
-
Ein Vault in OCI Vault ist zum Speichern von Secrets für die Datenbank erforderlich, wie z.B. das Kennwort für die Datenbank.
Erstellen Sie den Vault in demselben Compartment wie die Verbindung mit den Datenbanktools. Dies gilt für Datenbanken in derselben Region wie der Service "Generative AI Agents" sowie für regions- oder mandantenübergreifende Datenbanken.
- Vault erstellen.
- Master-Verschlüsselungsschlüssel erstellen.
- Erstellen Sie im Vault ein Secret für das Datenbankkennwort.
- Wallet-Sicherheitsanforderungen
-
Wenn die autonome Datenbank für die mTLS-Authentifizierung aktiviert ist, führen Sie die folgenden Aufgaben aus:
- Laden Sie das Wallet herunter, und erstellen Sie ein Wallet-Kennwort. Siehe Clientzugangsdaten (Wallets) herunterladen.
- Extrahieren Sie aus der heruntergeladenen Wallet-ZIP die Datei
ewallet.p12
, und legen Sie sie beiseite. Sie benötigen das WalletPKCS#12
, um die Verbindung zu den Datenbanktools zu erstellen.
Erstellen Sie in der Datenbank, die Sie für die Verwendung mit generativen KI-Agents erstellt haben, eine Datenbanktabelle mit bestimmten erforderlichen Feldern, und richten Sie eine Datenbankfunktion ein, die Vektorsuchergebnisse aus Abfragen zurückgibt.
- Datenbanktabelle
- Erstellen Sie eine Oracle Database 23ai-Tabelle mit den folgenden Feldern:
Pflichtfelder
DOCID
: Eine ID, die jedem Datensatz oder Dokument zugewiesen istBODY
: Der tatsächliche Inhalt, nach dem der Agent suchen sollVECTOR
: Der Vektor, der aus einem Einbettungsmodell basierend auf dembody
-Inhalt generiert wird
Optionale Felder
CHUNKID
: Eine ID für das geteilte Dokument, falls das Dokument größer als 512 Token ist.URL
: Eine URL-Referenz für den Inhalt, sofern verfügbar.TITLE
: Der Titel desbody
-InhaltsPAGE_NUMBERS
: Die Seitenzahlen für den Inhalt, sofern verfügbar.
- Datenbankfunktion
-
Eine Funktion ist ein Unterprogramm, das Parameter aufnimmt und einen Wert zurückgibt. Sie müssen eine Datenbankfunktion einrichten, die Vektorsuchergebnisse aus jeder Abfrage zurückgeben kann. Hier sind die Anforderungen:
Eingabeparameter
p_query
: Die Abfragezeichenfolgetop_k
: Anzahl der Top-Ergebnisse
Rücksendungstyp
SYS_REFCURSOR
Anforderungen
-
Das Einbettungsmodell, das Sie für das Abfragefeld der Funktion verwenden, muss mit dem Einbettungsmodell identisch sein, das den
BODY
-Inhalt der Tabelle in Vektoreinbettungen transformiert. -
Die Rückgabefelder der Funktion müssen mit den erforderlichen Feldern der Tabelle (
DOCID
,BODY
undSCORE
) und den optionalen Feldern (CHUNKID
,TITLE
undURL
) übereinstimmen.Der
BODY
-Inhalt wird von einem Einbettungsmodell verarbeitet, um eineVECTOR
für jeden Inhalt zu erstellen. Die Funktion berechnet die Entfernungen zwischen dem Abfragevektor und jedemVECTOR
und gibt dietop_k
-Zeilen zurück. Das FeldSCORE
stellt die Entfernungen zwischen dem Abfragevektor undVECTOR
vonBODY
dar. -
Wenn die Rückgabefeldnamen der Funktion nicht mit den Tabellenfeldnamen übereinstimmen, müssen Sie Aliasnamen in der Funktion verwenden.
Beispiel
Beispiel für eine Datenbankfunktion:
create or replace FUNCTION RETRIEVAL_FUNC (p_query IN VARCHAR2,top_k IN NUMBER) RETURN SYS_REFCURSOR IS v_results SYS_REFCURSOR; query_vec VECTOR; BEGIN query_vec := dbms_vector.utl_to_embedding( p_query, json('{ "provider": "OCIGenAI", "credential_name": "OCI_VECTOR_CREDENTIAL", "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-english-v3.0" }') ); OPEN v_results FOR select l.id as DOCID, lv.chunk_id as CHUNKID, l.file_name as TITLE, 'https://objectstorage.us-chicago-1.oraclecloud.com/n/{namespace}/b/{bucket_name}/o/' || l.file_name as URL, lv.chunk_txt as BODY, vector_distance(embed_vector, query_vec) AS SCORE from legislation_vector lv, legislation l where l.id = lv.id order by SCORE fetch first top_k rows only; RETURN v_results; END;
Mit dem Datenbanktools-Service können Sie wiederverwendbare Verbindungen zu einer Oracle-Datenbank in OCI erstellen.
Befolgen Sie diese Richtlinien, um eine Verbindung für die Datenbank zu erstellen.
- Richtlinien für die Oracle Base Database 23ai-Verbindung
-
Generative KI-Agents können über einen privaten Endpunkt auf eine Oracle Base Database 23ai zugreifen. Führen Sie diese Aufgaben aus, um die Datenbankverbindung herzustellen.
-
Folgende Informationen abrufen:
Öffnen Sie in der Konsole das Navigationsmenü , und wählen Sie Oracle Database und dann Oracle Base Database Service aus. Wählen Sie den Datenbanksystemnamen und dann den Datenbanknamen. Kopieren Sie die folgenden Eigenschaften, die für die Verbindungsinformationen im nächsten Schritt verwendet werden sollen:
- Datenbanksystem
- Datenbank
- Datenbank-Home
-
Wählen Sie links Integrierbare Datenbanken aus, und wählen Sie den Namen der integrierbaren Datenbank aus. Wählen Sie PDB-Verbindung aus, und kopieren Sie die Verbindungszeichenfolge im Format Lang.
Beispiel für eine Verbindungszeichenfolge mit einem langen Format:
(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.62)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=xxx_pdb1.xxx.dbsvcn.oraclevcn.com)))
-
Erstellen Sie in Datenbanktools eine Verbindung mit einer der folgenden Optionen:
- Wählen Sie mit der Option Datenbank auswählen eine Datenbank aus.
- Wählen Sie Oracle Base Database aus.
- Wählen Sie das Datenbanksystem, das Datenbank-Home und die Datenbank aus.
- Wählen Sie die integrierbare Datenbank.
- Verwenden Sie die Option Datenbankinformationen eingeben für eine regionsübergreifende oder mandantenübergreifende Datenbank, und geben Sie die Verbindungsinformationen manuell ein. Wählen Sie unter Verbindungstyp die Option Oracle Database aus.
- Wählen Sie mit der Option Datenbank auswählen eine Datenbank aus.
-
Vervollständigen Sie die übrigen Informationen mit den folgenden Eigenschaften:
- Geben Sie den Benutzernamen ein, und wählen Sie die Rolle für den Benutzer aus.
Stellen Sie sicher, dass der Datenbankbenutzer über die erforderlichen Berechtigungen verfügt und die Datenbankfunktion ausführen kann, die in Schritt 4 vorbereitet wurde. Richten Sie eine Datenbanktabelle und eine Funktion ein und erhalten Sie eine entsprechende Rolle. Beispiel: Weisen Sie dem Benutzer
SYS
die RolleSYSDBA
zu. - Wählen Sie unter Benutzerkennwort-Secret das Secret aus, wenn es bereits erstellt wurde. Wählen Sie andernfalls Kennwort-Secret erstellen aus, und erstellen Sie ein Secret, um das Kennwort in dem von Ihnen erstellten Vault zu speichern.
- Fügen Sie unter Verbindungszeichenfolge das Langformat für die integrierbare Datenbank ein, die Sie in Schritt 1 dieser Prozedur kopiert haben.
Geben Sie für eine regionsübergreifende oder mandantenübergreifende Datenbank die Verbindungszeichenfolge ein.
- Aktivieren Sie das Kontrollkästchen Über privates Netzwerk auf Datenbank zugreifen.
- Führen Sie unter Privater Endpunkt einen der folgenden Schritte aus:
- Klicken Sie auf Privaten Endpunkt auswählen, und wählen Sie den Endpunkt aus.
- Wählen Sie Privaten Endpunkt erstellen aus, und erstellen Sie den Endpunkt. Wählen Sie unter Subnetz das private Subnetz der Datenbank aus. Stellen Sie sicher, dass Sie den privaten Endpunkt mit demselben VCN und Subnetz wie die Datenbank erstellen.
- Wählen Sie unter Wallet-Format die Option
None
aus, um eine Verbindung ohne gegenseitige TLS-(mTLS-)Authentifizierung zu erstellen.
- Geben Sie den Benutzernamen ein, und wählen Sie die Rolle für den Benutzer aus.
-
- Richtlinien für die Autonomous Database 23ai-Verbindung
-
Generative KI-Agents können über einen privaten Endpunkt mit einer Verbindung, die für die gegenseitige TLS-(mTLS-)Authentifizierung eingerichtet ist, auf Autonomous Database 23ai zugreifen. Führen Sie diese Aufgaben aus, um eine Datenbankverbindung herzustellen.
-
Folgende Informationen abrufen:
Öffnen Sie in der Konsole das Navigationsmenü . Wählen Sie Oracle Database und dann Autonomous Database aus. Wählen Sie die Datenbank aus. Kopieren Sie auf der Seite "Datenbankdetails" die folgenden Eigenschaften, die für die Verbindungsinformationen im nächsten Schritt verwendet werden sollen:
- Datenbankname
- (Für Netzwerkzugriff auf Nur Zugriff auf privaten Endpunkt) Gehen Sie unter dem Abschnitt Netzwerk wie folgt vor:
- Private Endpunkt-ID
- Private Endpunkt-URL
- Wählen Sie Datenbankverbindung aus, und gehen Sie wie folgt vor:
- Suchen Sie in der Liste der TNS-Namen den TNS-Namen, der mit
_high
endet, und kopieren Sie die zugehörige Verbindungszeichenfolge. - Nur für eine Datenbank, für die eine Wechselseitige TLS-(mTLS-)Authentifizierung erforderlich ist: Laden Sie das Wallet herunter. Siehe Wallet-Sicherheitsanforderungen in Schritt 3. Netzwerk- und Sicherheitsanforderungen konfigurieren
- Suchen Sie in der Liste der TNS-Namen den TNS-Namen, der mit
-
Erstellen Sie in Datenbanktools eine Verbindung mit einer der folgenden Optionen:
- Wählen Sie mit der Option Datenbank auswählen eine Datenbank aus.
- Wählen Sie Oracle Autonomous Database aus.
- Wählen Sie die Datenbank aus.
- Verwenden Sie die Option Datenbankinformationen eingeben für eine regionsübergreifende oder mandantenübergreifende Datenbank, und geben Sie die Verbindungszeichenfolge manuell ein. Wählen Sie unter Verbindungstyp die Option Oracle Database aus.
- Wählen Sie mit der Option Datenbank auswählen eine Datenbank aus.
-
Vervollständigen Sie die übrigen Informationen mit den folgenden Eigenschaften:
- Geben Sie unter Benutzername den Benutzer ein, der über die erforderlichen Berechtigungen verfügt und die Datenbankfunktion ausführen kann, die in Schritt 4 vorbereitet wurde. Datenbanktabellen und Funktionen einrichten
- Wählen Sie unter Benutzerkennwort-Secret das Secret aus, wenn es bereits erstellt wurde. Wählen Sie andernfalls Kennwort-Secret erstellen aus, und erstellen Sie ein Secret, um das Kennwort in dem von Ihnen erstellten Vault zu speichern.
- Fügen Sie unter Verbindungszeichenfolge die Verbindungszeichenfolge ein, die mit
_high
endet, der Zeichenfolge, die Sie aus dem Abschnitt Datenbankverbindung der Seite mit den Datenbankdetails kopiert haben.Aktualisieren Sie dann je nach Datenbanktyp die Zeichenfolge wie folgt:- Private Zugriffsdatenbank: Reduzieren Sie
retry_count
von 20 auf 3, und ersetzen Sie die private Endpunkt-URL des Hosts durch die IP-Adresse des privaten Endpunkts.Beispiel für eine Verbindungszeichenfolge:
(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522) (host=<private-endpoint-URL>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com)) (security=(ssl_server_dn_match=no)))
Beispiel für aktualisierte Verbindungszeichenfolge:
(description= (retry_count=3)(retry_delay=3)(address=(protocol=tcps)(port=1522) (host=<private-endpoint-IP>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com)) (security=(ssl_server_dn_match=no)))
- Datenbank für öffentlichen Zugriff: Reduzieren Sie
retry_count
von 20 auf 3.Beispiel für aktualisierte Verbindungszeichenfolge:
(description= (retry_count=3)(retry_delay=3)(address=(protocol=tcps)(port=1522) (host=<name>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com)) (security=(ssl_server_dn_match=yes)))
- Private Zugriffsdatenbank: Reduzieren Sie
- Für Privater Endpunkt:
- Bei Datenbanken mit öffentlichem Zugriff darf kein privater Endpunkt konfiguriert werden.
- Aktivieren Sie unter Nur Zugriff auf privaten Endpunkt das Kontrollkästchen Über ein privates Netzwerk auf Datenbank zugreifen. Wählen Sie dann den privaten Endpunkt aus, oder wählen Sie Privaten Endpunkt erstellen aus, um einen Endpunkt zu erstellen. Stellen Sie sicher, dass Sie dasselbe VCN und das private Subnetz wie die Datenbank verwenden.
- Für Wallet-Format:
- Wählen Sie für eine Datenbank, die nicht für die mTLS-Authentifizierung aktiviert ist,
None
aus. - Wählen Sie für eine Datenbank, die für die mTLS-Authentifizierung aktiviert ist,
PKCS#12 wallet(e.g., ewallet.p12)
aus. Erstellen Sie dann das Secret für den Wallet-Inhalt und das Secret für das Wallet-Kennwort, oder wählen Sie es aus, wenn Sie die Secrets bereits erstellt haben.
- Wählen Sie für eine Datenbank, die nicht für die mTLS-Authentifizierung aktiviert ist,
-