KI mit Retrieval Augmented Generation (RAG) auswählen

Wählen Sie AI mit RAG erweitert Ihre Eingabeaufforderung in natürlicher Sprache, indem Sie Inhalte aus Ihrem angegebenen Vektorspeicher mithilfe der semantischen Ähnlichkeitssuche abrufen. Dies reduziert Halluzinationen durch die Verwendung Ihrer spezifischen und aktuellen Inhalte und bietet relevantere Antworten in natürlicher Sprache auf Ihre Prompts.

Select AI automatisiert den Retrieval Augmented Generation (RAG)-Prozess. Diese Technik ruft Daten aus Unternehmensquellen mithilfe der KI-Vektorsuche ab und erweitert Benutzer-Prompts für Ihr angegebenes Large Language Model (LLM). Durch die Nutzung von Informationen aus Unternehmensdatenspeichern reduziert RAG Halluzinationen und generiert fundierte Antworten.

RAG verwendet KI-Vektorsuche auf einem Vektorindex, um semantisch ähnliche Daten für die angegebene Frage zu finden. Vector Store verarbeitet Vektoreinbettungen, die mathematische Darstellungen verschiedener Datenpunkte wie Text, Bilder und Audio sind. Diese Einbettungen erfassen die Bedeutung der Daten und ermöglichen eine effiziente Verarbeitung und Analyse. Weitere Details zu Vektoreinbettungen und AI-Vektorsuche finden Sie unter Überblick über AI Vector Search.

Select AI lässt sich in die KI-Vektorsuche integrieren, die in Oracle Autonomous AI Database 26ai für die Ähnlichkeitssuche mit Vektoreinbettungen verfügbar ist.

Themen

Vorteile von Select AI RAG

Vereinfachen Sie die Abfrage, verbessern Sie die Antwortgenauigkeit mit aktuellen Daten und erhalten Sie Transparenz, indem Sie die vom LLM verwendeten Quellen prüfen.

Select AI RAG bietet folgende Vorteile:
  • Vereinfachen Sie die Datenabfrage und erhöhen Sie die Reaktionsgenauigkeit: Ermöglichen Sie es Benutzern, Unternehmensdaten in natürlicher Sprache abzufragen, und stellen Sie LLMs einen detaillierten Kontext aus Unternehmensdaten zur Verfügung, um genauere und relevantere Antworten zu generieren und LLM-Halluzinationen zu reduzieren.

  • Aktuelle Informationen: Bieten Sie LLMs mithilfe von Vektorspeichern Zugriff auf aktuelle Unternehmensinformationen, sodass keine kostspielige, zeitaufwendige Feinabstimmung von LLMs erforderlich ist, die auf statischen Datasets trainiert sind.

  • Nahtlose Integration: Integrieren Sie Oracle AI Vector Search, um die Datenverarbeitung zu optimieren und die Performance zu verbessern.

  • Automatisierte Datenorchestrierung: Automatisieren Sie Orchestrierungsschritte mit einer vollständig verwalteten Vector Index-Pipeline, um eine effiziente Verarbeitung neuer Daten sicherzustellen.

  • Verständliche kontextbezogene Ergebnisse: Hat Zugriff auf und ruft die vom LLM verwendeten Quellen aus Vektorspeichern ab, um Transparenz und Vertrauen in die Ergebnisse zu gewährleisten. Zeigt Daten im natürlichen Sprachtext oder JSON-Format an und extrahiert sie für eine einfachere Integration und Anwendungsentwicklung.

Erstellen Sie Ihren Vector Store

Select AI automatisiert die Erstellung und Auffüllung des Vektorspeichers, indem Eingabedokumente (z.B. PDF, DOC, JSON, XML oder HTML) aus dem Objektspeicher in Nur-Text konvertiert werden. Oracle Text unterstützt rund 150 Dateitypen. Eine vollständige Liste aller unterstützten Dokumentformate finden Sie unter Unterstützte Dokumentformate.

Select AI verarbeitet Dokumente automatisch in Blöcke, generiert Einbettungen, speichert sie im angegebenen Vektorspeicher und aktualisiert den Vektorindex, wenn neue Daten eintreffen.

So wird die Eingabe aus Object Storage mit Select AI RAG verwendet:

  1. Eingabe: Daten werden zunächst in einem Object Storage gespeichert.
  2. Oracle Autonomous Database ruft die Eingabedaten oder das Dokument ab, verarbeitet sie und sendet die Blöcke an ein Einbettungsmodell.
  3. Das Einbettungsmodell verarbeitet die Chunk-Daten und gibt Vektoreinbettungen zurück.
  4. Die Vektoreinbettungen werden dann in einem Vektorspeicher zur Verwendung mit RAG gespeichert. Beim Hinzufügen von Inhalten wird der Vektorindex automatisch aktualisiert.

RAG ruft relevante Informationen aus der Unternehmensdatenbank ab, um die Frage eines Benutzers zu beantworten. Diese Informationen werden dem angegebenen großen Sprachmodell zusammen mit der Benutzereingabe zur Verfügung gestellt. Select AI nutzt diese zusätzlichen Unternehmensinformationen, um den Prompt zu verbessern und die Antwort des LLM zu verbessern. RAG kann die Antwortqualität durch aktualisierte Unternehmensinformationen aus dem Vektorspeicher verbessern.



Select AI implementiert RAG wie folgt:
  1. Eingabe: Der Benutzer stellt mit der Aktion "AI auswählen narrate" eine Frage (gibt einen Prompt an).

  2. Wählen Sie "KI" aus, um Vektoreinbettungen des Prompts mit dem im AI-Profil angegebenen Einbettungsmodell zu generieren.

  3. Der Vektorsuchindex verwendet die Vektoreinbettung der Frage, um übereinstimmende Inhalte aus den Unternehmensdaten des Kunden (Suche des Vektorspeichers) zu finden, die indexiert wurden.

  4. Die Vektorsuche gibt Top-K-Texte zurück, die der Eingabe in Ihre autonome KI-Datenbankinstanz ähneln.
  5. Autonome KI-Datenbank sendet dann diese Top-K-Abfrageergebnisse mit Benutzerfrage an das LLM.
  6. Das LLM gibt seine Antwort an Ihre Autonomous AI Database-Instanz zurück.
  7. Autonome KI-Datenbank Select AI liefert die Antwort an den Benutzer.

Mit DBMS_CLOUD_AI Vektorindizes erstellen und verwalten

Mit dem Package DBMS_CLOUD_AI können Sie Vektorindizes erstellen und verwalten und JSON-Parameter für Vektordatenbanken konfigurieren.

Nachdem Sie Zugangsdaten erstellt und Netzwerkzugriff auf die Vektordatenbank und den KI-Provider bereitgestellt haben, verwendet Ihre Autonomous AI Database-Instanz KI-Profile, um den Zugriff auf LLMs zu konfigurieren. Ein vollständiges Beispiel zum Einrichten und Verwenden von AI in Select AI-Anweisungen finden Sie unter Beispiel: AI mit RAG einrichten und verwenden.

Hinweis:

Wenn Sie nicht möchten, dass Tabellendaten oder Vektorsuchdokumente an ein LLM gesendet werden, kann ein Benutzer mit Administratorberechtigungen diesen Zugriff für alle Benutzer der angegebenen Datenbank deaktivieren. Dadurch wird die Aktion narrate für RAG deaktiviert.

Sie können AI-Profile für Provider konfigurieren, die in über das Package DBMS_CLOUD_AI aufgeführt sind.

Siehe auch:

Datenbankinterne Transformer-Modelle verwenden

Mit "AI RAG" können Sie vortrainierte ONNX-Transformermodelle verwenden, die in die Datenbank in der Oracle Database 23ai-Instanz importiert werden, um Einbettungsvektoren aus Dokument-Chunks und Benutzer-Prompts zu generieren.

Hinweis:

Sie müssen ein vortrainiertes Transformer-Modell im ONNX-Format in die Oracle Database 23ai-Instanz importieren, um Select AI RAG mit dem importierten datenbankinternen Transformer-Modell zu verwenden. Sie können auch andere Transformer-Modelle von unterstützten KI-Providern verwenden.

Informationen zum Feature finden Sie unter Beispiel: AI mit datenbankinternen Transformer-Modellen auswählen.

Beispiel: AI mit RAG einrichten und verwenden

In diesem Beispiel werden Sie durch das Einrichten von Zugangsdaten, das Konfigurieren des Netzwerkzugriffs und das Erstellen eines Vektorindex zur Integration von OCI Generative AI Vektorspeicher-Cloud-Services mit OpenAI mit Oracle Autonomous AI Database geführt.

Das Setup endet mit der Erstellung eines KI-Profils, das den Vektorindex verwendet, um LLM-Antworten zu verbessern. In diesem Beispiel wird schließlich die Aktion "AI auswählen narrate" verwendet, die eine Antwort zurückgibt, die mit Informationen aus der angegebenen Vektordatenbank verbessert wurde.

Das folgende Beispiel zeigt das Erstellen und Abfragen von Vektorindizes in Oracle Database 23ai.

--Grants EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER; 

--Grants EXECUTE privilege DBMS_CLOUD_PIPELINE to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_PIPELINE to ADB_USER;

-- Create the OpenAI credential
BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'OPENAI_CRED',
        username => 'OPENAI_CRED',
        password => '<your_api_key>'
      );
END;
/

PL/SQL procedure successfully completed.

 -- Append the OpenAI endpoint
BEGIN
        DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
             host => 'api.openai.com',
             ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                     principal_name => 'ADB_USER',
                     principal_type => xs_acl.ptype_db)
       );
END;
/

PL/SQL procedure successfully completed.

 
-- Create the object store credential
BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'OCI_CRED',
        username => '<your_username>',
        password => '<OCI_profile_password>'
      );
END;
/

PL/SQL procedure successfully completed.

 -- Create the profile with the vector index.

BEGIN
      DBMS_CLOUD_AI.CREATE_PROFILE(
          profile_name =>'OPENAI_ORACLE',
          attributes   =>'{"provider": "openai",
            "credential_name": "OPENAI_CRED",
            "vector_index_name": "MY_INDEX",
            "temperature": 0.2,
            "max_tokens": 4096,
            "model": "gpt-3.5-turbo-1106"
          }');
END;
/

PL/SQL procedure successfully completed.

-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('OPENAI_ORACLE');

PL/SQL procedure successfully completed.                                            
 
-- create a vector index with the vector store name, object store location and
-- object store credential
BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
         index_name  => 'MY_INDEX',
         attributes  => '{"vector_db_provider": "oracle",
                          "location": "https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/my_namespace/my_bucket/my_data_folder",
                          "object_storage_credential_name": "OCI_CRED",
                          "profile_name": "OPENAI_ORACLE",
                          "vector_dimension": 1536,
                          "vector_distance_metric": "cosine",
                          "chunk_overlap":128,
                          "chunk_size":1024
      }');
END;
/
PL/SQL procedure successfully completed.  
                                                                                
-- After the vector index is populated, we can now query the index.




-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('OPENAI_ORACLE');

PL/SQL procedure successfully completed.

-- Select AI answers the question with the knowledge available in the vector database.

set pages 1000
set linesize 150
SELECT AI narrate how can I deploy an oracle machine learning model;
RESPONSE                                                  
To deploy an Oracle Machine Learning model, you would first build your model within the Oracle database. Once your in-database models are built, they become immediately available for use, for instance, through a SQL query using the prediction operators built into the SQL language. 

The model scoring, like model building, occurs directly in the database, eliminating the need for a separate engine or environment within which the model and corresponding algorithm code operate. You can also use models from a different schema (user account) if the appropriate permissions are in place.

Sources:
  - Manage-your-models-with-Oracle-Machine-Learning-on-Autonomous-Database.txt (https://objectstorage.../v1/my_namespace/my_bucket/my_data_folder/Manage-your-models-with-Oracle-Machine-Learning-on-Autonomous-Database.txt)
  - Develop-and-deploy-machine-learning-models-using-Oracle-Autonomous-Database-Machine-Learning-and-APEX.txt (https://objectstorage.../v1/my_namespace/my_bucket/my_data_folder/Develop-and-deploy-machine-learning-models-using-Oracle-Autonomous-Database-Machine-Learning-and-APEX.txt)

Beispiel: AI mit datenbankinternen Transformer-Modellen auswählen

Dieses Beispiel zeigt, wie Sie ein vortrainiertes Transformatormodell, das im Oracle-Objektspeicher gespeichert ist, in Ihre Oracle Database 23ai-Instanz importieren und dann das importierte datenbankinterne Modell im AI-Profil "Select" verwenden können, um Vektoreinbettungen für Dokument-Chunks und Benutzer-Prompts zu generieren.

Um datenbankinterne Transformer-Modelle in Ihrem Select AI-Profil zu verwenden, stellen Sie sicher, dass Folgendes vorhanden ist:
  • Ihr vortrainiertes Modell, das in Ihre Oracle Database 23ai-Instanz importiert wurde.

  • optional Zugriff auf Oracle Object Storage.

Importieren Sie ein vortrainiertes Transformer-Modell in Oracle Database 23ai aus Oracle Object Storage

Lesen Sie die Schritte unter Vorgeschulte Modelle im ONNX-Format für die Vektorgenerierung in der Datenbank importieren und im Blog Vorgefertigtes Einbettungsgenerierungsmodell für Oracle AI Database 26ai, um ein vorgeschultes Transformatormodell in Ihre Datenbank zu importieren.

Das folgende Beispiel zeigt, wie Sie ein vordefiniertes Transformatormodell aus dem Oracle-Objektspeicher in die Datenbank importieren und dann das importierte Modell anzeigen.

- Create a Directory object, or use an existing directory object
CREATE OR REPLACE DIRECTORY ONNX_DIR AS 'onnx_model';
 
-- Object storage bucket
VAR location_uri VARCHAR2(4000);
EXEC :location_uri := 'https://adwc4pm.objectstorage.us-ashburn-1.oci.customer-oci.com/p/eLddQappgBJ7jNi6Guz9m9LOtYe2u8LWY19GfgU8flFK4N9YgP4kTlrE9Px3pE12/n/adwc4pm/b/OML-Resources/o/';
 
-- Model file name
VAR file_name VARCHAR2(512);
EXEC :file_name := 'all_MiniLM_L12_v2.onnx';
 
-- Download ONNX model from object storage into the directory object
BEGIN
  DBMS_CLOUD.GET_OBJECT(                           
        credential_name => NULL,
        directory_name  => 'ONNX_DIR',
        object_uri      => :location_uri || :file_name);
END;
/
 
-- Load the ONNX model into the database
BEGIN
  DBMS_VECTOR.LOAD_ONNX_MODEL(
        directory  => 'ONNX_DIR',
        file_name  => :file_name,
        model_name => 'MY_ONNX_MODEL');
END;
/
 
-- Verify
SELECT model_name, algorithm, mining_function
FROM user_mining_models
WHERE  model_name='MY_ONNX_MODEL';
Datenbankinterne Transformer-Modelle in ausgewählten KI-Profilen verwenden

Diese Beispiele veranschaulichen, wie datenbankinterne Transformatormodelle in einem Select AI-Profil verwendet werden. Ein Profil ist nur für die Generierung von Vektoreinbettungen konfiguriert, während das andere sowohl Select AI-Aktionen als auch die Erstellung von Vektorindizes unterstützt.

Prüfen Sie Anforderungen zum Konfigurieren des Packages DBMS_CLOUD_AI, um die Voraussetzungen zu erfüllen.

Im Folgenden finden Sie ein Beispiel für die Generierung von Vektoreinbettungen:

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'EMBEDDING_PROFILE',
     attributes   => '{"provider" : "database",
                       "embedding_model": "MY_ONNX_MODEL"}'
  );
END;
/

Im Folgenden finden Sie ein Beispiel für allgemeine Select AI-Aktionen und Vektorindexgenerierung, bei denen Sie einen unterstützten AI-Provider angeben können. In diesem Beispiel werden das KI-Profil und die Zugangsdaten der OCI-Generation verwendet. In wird eine Liste der unterstützten Provider angezeigt. Wenn Sie jedoch das datenbankinterne Transformatormodell zum Generieren von Vektoreinbettungen verwenden möchten, verwenden Sie "database: <MY_ONNX_MODEL>" im Attribut embedding_model:

BEGIN                                                                        
  DBMS_CLOUD.CREATE_CREDENTIAL(                                              
    credential_name => 'GENAI_CRED',                                         
    user_ocid       => 'ocid1.user.oc1..aaaa...',
    tenancy_ocid    => 'ocid1.tenancy.oc1..aaaa...',
    private_key     => '<your_api_key>',
    fingerprint     => '<your_fingerprint>'     
  );                                                                         
END;                                                                        
/

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'OCI_GENAI',
     attributes   => '{"provider": "oci",
                       "model": "meta.llama-3.3-70b-instruct",
                       "credential_name": "GENAI_CRED",
                       "vector_index_name": "MY_INDEX",
                       "embedding_model": "database: MY_ONNX_MODEL"}'
  );
END;
/
Select AI mit einem datenbankinternen Transformatormodell aus einem anderen Schema verwenden

In diesem Beispiel wird gezeigt, wie Sie Select AI mit einem datenbankinternen Transformatormodell verwenden, wenn ein anderer Schemaeigentümer Eigentümer des Modells ist. Geben Sie schema_name.object_name als vollqualifizierten Namen des Modells im Attribut embedding_model an. Wenn der aktuelle Benutzer der Schemaeigentümer oder Eigentümer des Modells ist, können Sie den Schemanamen weglassen.

Stellen Sie sicher, dass Sie über die folgenden Berechtigungen verfügen, wenn ein anderer Schemaeigentümer Eigentümer des Modells ist:
  • CREATE ANY MINING MODEL-Systemberechtigung
  • SELECT ANY MINING MODEL-Systemberechtigung
  • SELECT MINING MODEL-Objektberechtigung für das spezifische Modell

Um eine Systemberechtigung zu erteilen, benötigen Sie entweder die Systemberechtigung mit der ADMIN OPTION oder die Systemberechtigung GRANT ANY PRIVILEGE.

Informationen zu den Berechtigungen finden Sie unter Systemberechtigungen für Oracle Machine Learning for SQL.

Mit den folgenden Anweisungen kann ADB_USER1 Daten bewerten und Modelldetails in jedem Schema anzeigen, solange SELECT-Zugriff auf die Daten erteilt wurde. ADB_USER1 kann jedoch nur Modelle im Schema ADB_USER1 erstellen.

GRANT CREATE MINING MODEL TO ADB_USER1;
GRANT SELECT ANY MINING MODEL TO ADB_USER1;
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'OCI_GENAI',
     attributes   => '{"provider": "oci",
                       "credential_name": "GENAI_CRED",
                       "vector_index_name": "MY_INDEX",
                       "embedding_model": "database: ADB_USER1.MY_ONNX_MODEL"}'
  );
END;
/

Das folgende Beispiel zeigt, wie Sie den Modellobjektnamen für die Groß-/Kleinschreibung angeben können:

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'OCI_GENAI',
     attributes   => '{"provider": "oci",
                       "credential_name": "GENAI_CRED",
                       "model": "meta.llama-3.3-70b-instruct",
                       "vector_index_name": "MY_INDEX",
                       "embedding_model": "database: \"adb_user1\".\"my_model\""}'
  );
END;
/
End-to-End-Beispiele mit verschiedenen KI-Providern

Diese Beispiele zeigen End-to-End-Schritte für die Verwendung des datenbankinternen Transformatormodells mit Select AI RAG. Ein Profil verwendet database als die provider, die ausschließlich zum Generieren von Einbettungsvektoren erstellt wurde, während das andere Profil oci als die provider verwendet, die für Select AI-Aktionen sowie für Vektorindizes erstellt wurden.

Prüfen Sie Anforderungen zum Konfigurieren des Packages DBMS_CLOUD_AI, um die Voraussetzungen zu erfüllen.

--Grant create any directory privilege to the user
GRANT CREATE ANY DIRECTORY to ADB_USER;

- Create a Directory object, or use an existing directory object
CREATE OR REPLACE DIRECTORY ONNX_DIR AS 'onnx_model';
 
-- Object storage bucket
VAR location_uri VARCHAR2(4000);
EXEC :location_uri := 'https://adwc4pm.objectstorage.us-ashburn-1.oci.customer-oci.com/p/eLddQappgBJ7jNi6Guz9m9LOtYe2u8LWY19GfgU8flFK4N9YgP4kTlrE9Px3pE12/n/adwc4pm/b/OML-Resources/o/';
 
-- Model file name
VAR file_name VARCHAR2(512);
EXEC :file_name := 'all_MiniLM_L12_v2.onnx';
 
-- Download ONNX model from object storage into the directory object
BEGIN
  DBMS_CLOUD.GET_OBJECT(                           
        credential_name => NULL,
        directory_name  => 'ONNX_DIR',
        object_uri      => :location_uri || :file_name);
END;
/
 
-- Load the ONNX model into the database
BEGIN
  DBMS_VECTOR.LOAD_ONNX_MODEL(
        directory  => 'ONNX_DIR',
        file_name  => :file_name,
        model_name => 'MY_ONNX_MODEL');
END;
/
 
-- Verify
SELECT model_name, algorithm, mining_function
FROM user_mining_models
WHERE  model_name='MY_ONNX_MODEL';


--Administrator grants EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER; 

--Administrator grants EXECUTE privilege DBMS_CLOUD_PIPELINE to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_PIPELINE to ADB_USER;
 
-- Create the object store credential
BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'OCI_CRED',
        username => '<your_username>',
        password => '<OCI_profile_password>'
      );
END;
/

PL/SQL procedure successfully completed.

 -- Create the profile with Oracle Database.

BEGIN
      DBMS_CLOUD_AI.CREATE_PROFILE(
          profile_name =>'EMBEDDING_PROFILE',
          attributes   =>'{"provider": "database",
            "embedding_model": "MY_ONNX_MODEL"
          }');
END;
/

PL/SQL procedure successfully completed.

-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('EMBEDDING_PROFILE');

PL/SQL procedure successfully completed.                                            
 

In diesem Beispiel wird oci als provider verwendet.

--Grant create any directory privilege to the user
GRANT CREATE ANY DIRECTORY to ADB_USER;

- Create a Directory object, or use an existing directory object
CREATE OR REPLACE DIRECTORY ONNX_DIR AS 'onnx_model';
 
-- Object storage bucket
VAR location_uri VARCHAR2(4000);
EXEC :location_uri := 'https://adwc4pm.objectstorage.us-ashburn-1.oci.customer-oci.com/p/eLddQappgBJ7jNi6Guz9m9LOtYe2u8LWY19GfgU8flFK4N9YgP4kTlrE9Px3pE12/n/adwc4pm/b/OML-Resources/o/';
 
-- Model file name
VAR file_name VARCHAR2(512);
EXEC :file_name := 'all_MiniLM_L12_v2.onnx';
 
-- Download ONNX model from object storage into the directory object
BEGIN
  DBMS_CLOUD.GET_OBJECT(                           
        credential_name => NULL,
        directory_name  => 'ONNX_DIR',
        object_uri      => :location_uri || :file_name);
END;
/
 
-- Load the ONNX model into the database
BEGIN
  DBMS_VECTOR.LOAD_ONNX_MODEL(
        directory  => 'ONNX_DIR',
        file_name  => :file_name,
        model_name => 'MY_ONNX_MODEL');
END;
/
 
-- Verify
SELECT model_name, algorithm, mining_function
FROM user_mining_models
WHERE  model_name='MY_ONNX_MODEL';


–-Administrator Grants EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER; 

--Administrator Grants EXECUTE privilege DBMS_CLOUD_PIPELINE to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_PIPELINE to ADB_USER;

-- Create the object store credential
BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'OCI_CRED',
        username => '<your_username>',
        password => '<OCI_profile_password>'
      );
END;
/
--Create GenAI credentials
BEGIN                                                                        
  DBMS_CLOUD.CREATE_CREDENTIAL(                                              
    credential_name => 'GENAI_CRED',                                         
    user_ocid       => 'ocid1.user.oc1..aaaa...',
    tenancy_ocid    => 'ocid1.tenancy.oc1..aaaa...',
    private_key     => '<your_api_key>',
    fingerprint     => '<your_fingerprint>'     
  );                                                                         
END;                                                                        
/
--Create OCI AI profile
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'OCI_GENAI',
     attributes   => '{"provider": "oci",
                       "model": "meta.llama-3.3-70b-instruct",
                       "credential_name": "GENAI_CRED",
                       "vector_index_name": "MY_INDEX",
                       "embedding_model": "database: MY_ONNX_MODEL"}'
  );
END;
/

-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_GENAI');

PL/SQL procedure successfully completed.                                            
 
-- create a vector index with the vector store name, object store location and
-- object store credential
BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
         index_name  => 'MY_INDEX',
         attributes  => '{"vector_db_provider": "oracle",
                          "location": "https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/my_namespace/my_bucket/my_data_folder",
                          "object_storage_credential_name": "OCI_CRED",
                          "profile_name": "OCI_GENAI",
                          "vector_dimension": 384,
                          "vector_distance_metric": "cosine",
                          "chunk_overlap":128,
                          "chunk_size":1024
      }');
END;
/
PL/SQL procedure successfully completed.  
                                                                               

-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_GENAI');

PL/SQL procedure successfully completed.

-- Select AI answers the question with the knowledge available in the vector database.

set pages 1000
set linesize 150
SELECT AI narrate how can I deploy an oracle machine learning model;
RESPONSE                                                  
To deploy an Oracle Machine Learning model, you would first build your model within the Oracle database. Once your in-database models are 
built, they become immediately available for use, for instance, through a SQL query using the prediction operators built into the SQL 
language. 

The model scoring, like model building, occurs directly in the database, eliminating the need for a separate engine or environment within 
which the model and corresponding algorithm code operate. You can also use models from a different schema (user account) if the appropriate 
permissions are in place.

Sources:
  - Manage-your-models-with-Oracle-Machine-Learning-on-Autonomous-Database.txt (https://objectstorage.../v1/my_namespace/my_bucket/
my_data_folder/Manage-your-models-with-Oracle-Machine-Learning-on-Autonomous-Database.txt)
  - Develop-and-deploy-machine-learning-models-using-Oracle-Autonomous-Database-Machine-Learning-and-APEX.txt 
(https://objectstorage.../v1/my_namespace/my_bucket/my_data_folder/Develop-and-deploy-machine-learning-models-using-Oracle-Autonomous-
Database-Machine-Learning-and-APEX.txt)