Selecionar IA com Geração Aumentada de Recuperação (RAG)
A seleção de IA com RAG aumenta seu prompt de linguagem natural recuperando conteúdo do armazenamento de vetores especificado usando a pesquisa de similaridade semântica. Isso reduz as alucinações usando seu conteúdo específico e atualizado e fornece respostas em linguagem natural mais relevantes aos seus prompts.
O Select AI automatiza o processo de Geração Aumentada de Recuperação (RAG). Essa técnica recupera dados de origens empresariais usando a pesquisa vetorial de IA e aumenta os prompts do usuário para seu modelo de linguagem grande (LLM) especificado. Ao aproveitar as informações dos armazenamentos de dados corporativos, a RAG reduz as alucinações e gera respostas fundamentadas.
O RAG usa a pesquisa vetorial de IA em um índice vetorial para encontrar dados semanticamente semelhantes para a pergunta especificada. O armazenamento de vetores processa incorporações de vetores, que são representações matemáticas de vários pontos de dados, como texto, imagens e áudio. Essas incorporações capturam o significado dos dados, permitindo o processamento e a análise eficientes. Para obter mais detalhes sobre incorporações de vetores e pesquisa de vetores de IA, consulte Visão Geral do AI Vector Search.
A Select AI se integra à pesquisa de vetores de IA disponível no Oracle Autonomous AI Database 26ai para pesquisa de similaridade usando incorporações de vetores.
Tópicos
Tópicos Relacionados
Benefícios do Select AI RAG
Simplifique a consulta, aumente a precisão da resposta com os dados atuais e obtenha transparência revisando as fontes usadas pelo LLM.
-
Simplifique a consulta de dados e aumente a precisão das respostas: Permita que os usuários consultem dados corporativos usando linguagem natural e forneça aos LLMs um contexto detalhado dos dados corporativos para gerar respostas mais precisas e relevantes, reduzindo as instâncias de alucinações do LLM.
-
Informações atualizadas: Forneça aos LLMs acesso às informações atuais da empresa usando armazenamentos de vetores, eliminando a necessidade de ajuste fino caro e demorado de LLMs treinados em conjuntos de dados estáticos.
-
Integração perfeita: Integre-se ao Oracle AI Vector Search para um tratamento de dados simplificado e desempenho aprimorado.
-
Orquestração de dados automatizada: automatize as etapas de orquestração com um pipeline de Índice de Vetores totalmente gerenciado, garantindo o processamento eficiente de novos dados.
-
Resultados contextuais compreensíveis: Tem acesso e recupera as fontes usadas pelo LLM de armazenamentos de vetores, garantindo transparência e confiança nos resultados. Exibe e extrai dados em texto em linguagem natural ou formato JSON para facilitar a integração e o desenvolvimento de aplicativos.
Construa sua loja de vetores
A Select AI processa automaticamente documentos em blocos, gera incorporações, os armazena no armazenamento de vetores especificado e atualiza o índice vetorial à medida que novos dados chegam.
- Entrada: Os dados são inicialmente armazenados em um Object Storage.
- O Oracle Autonomous Database recupera os dados de entrada ou o documento, os divide e envia os blocos para um modelo de incorporação.
- O modelo de incorporação processa os dados de chunk e retorna incorporações de vetores.
- As incorporações de vetores são então armazenadas em um armazenamento de vetores para uso com RAG. À medida que o conteúdo é adicionado, o índice vetorial é atualizado automaticamente.
O RAG recupera informações relevantes do banco de dados empresarial para responder à pergunta de um usuário. Essas informações são fornecidas ao modelo de idioma grande especificado juntamente com o prompt do usuário. A Select AI usa essas informações empresariais adicionais para aprimorar o prompt, melhorando a resposta do LLM. O RAG pode melhorar a qualidade da resposta com informações empresariais atualizadas do armazenamento de vetores.
-
Entrada: O usuário faz uma pergunta (especifica um prompt) usando a ação Selecionar AI
narrate. -
O Select AI gera incorporações vetoriais do prompt usando o modelo de incorporação especificado no perfil do AI.
-
O índice de pesquisa vetorial usa a incorporação vetorial da pergunta para encontrar o conteúdo correspondente dos dados corporativos do cliente (pesquisando o armazenamento de vetores) que foi indexado.
- A pesquisa vetorial retorna os principais textos K semelhantes à entrada da sua instância do Autonomous AI Database.
- O Autonomous AI Database envia esses principais resultados de consulta K com a pergunta do usuário para o LLM.
- O LLM retorna sua resposta à sua instância do Autonomous AI Database.
- O Autonomous AI Database Select AI fornece a resposta ao usuário.
Usar DBMS_CLOUD_AI para Criar e Gerenciar Índices Vetores
Use o pacote DBMS_CLOUD_AI para criar e gerenciar índices vetoriais e configurar parâmetros JSON do banco de dados vetorial.
Observação:
Se você não quiser que os dados da tabela ou os documentos de pesquisa vetorial sejam enviados para um LLM, um usuário com privilégios de administrador poderá desativar esse acesso para todos os usuários do banco de dados fornecido. Isso, na verdade, desativa a ação narrate para RAG.
Você pode configurar perfis de IA para provedores listados no por meio do pacote DBMS_CLOUD_AI.
Veja Também:
-
Crie um índice vetorial: ProcedimentoCREATE_VECTOR_INDEX.
-
Gerencie perfis de índice vetorial e outros perfis de IA: Resumo de Subprogramas DBMS_CLOUD_AI.
-
Views de índice do vetor de consulta: DBMS_CLOUD_AI Views.
Usar Modelos de Transformador no Banco de Dados
Selecionar AI RAG permite que você use modelos de transformadores ONNX pré-treinados que são importados para seu banco de dados na instância do Oracle Database 23ai para gerar vetores de incorporação de blocos de documentos e prompts do usuário.
Observação:
Você deve importar um modelo de transformador de formato ONNX pré-treinado para a instância do Oracle Database 23ai para usar o Select AI RAG com o modelo de transformador importado no banco de dados. Você também pode usar outros modelos de transformador de provedores de IA suportados.Consulte Exemplo: Selecionar IA com Modelos de Transformador no Banco de Dados para explorar o recurso.
Exemplo: Configurar e Usar o Select AI com RAG
Este exemplo o orienta na configuração de credenciais, na configuração do acesso à rede e na criação de um índice vetorial para integrar os serviços de nuvem de armazenamento de vetores do OCI Generative AI com o OpenAI usando o Oracle Autonomous AI Database.
A configuração termina com a criação de um perfil de IA que usa o índice vetorial para aprimorar as respostas do LLM. Por fim, este exemplo usa a ação Selecionar AI narrate, que retorna uma resposta que foi aprimorada usando informações do banco de dados vetorial especificado.
O exemplo a seguir demonstra como criar e consultar o índice vetorial no 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)
Exemplo: Selecionar IA com Modelos de Transformador no Banco de Dados
Este exemplo demonstra como você pode importar um modelo de transformador pré-treinado que é armazenado no armazenamento de objetos da Oracle para sua instância do Oracle Database 23ai e, em seguida, usar o modelo importado no banco de dados no perfil Selecionar IA para gerar incorporações vetoriais para blocos de documentos e prompts do usuário.
-
seu modelo pré-treinado importado na sua instância do Oracle Database 23ai.
-
opcionalmente, acesso ao armazenamento de objetos da Oracle.
Revise as etapas em Importar Modelos Pré-treinados no Formato ONNX para Geração de Vetores no Banco de Dados e no blog Modelo de Geração de Incorporação Predefinido para o Oracle AI Database 26ai para importar um modelo de transformador pré-treinado para seu banco de dados.
O exemplo a seguir mostra como importar um modelo de transformador obtido do armazenamento de objetos Oracle para o seu banco de dados e, em seguida, exibir o modelo importado.
- 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';
Estes exemplos ilustram como usar modelos de transformadores no banco de dados em um perfil Select AI. Um perfil só é configurado para gerar incorporações de vetor, enquanto o outro suporta ações Select AI e criação de índice de vetor.
Revise Requisitos para Configurar o Pacote DBMS_CLOUD_AI para concluir os pré-requisitos.
Veja a seguir um exemplo para gerar incorporações de vetores apenas:
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'EMBEDDING_PROFILE',
attributes => '{"provider" : "database",
"embedding_model": "MY_ONNX_MODEL"}'
);
END;
/Veja a seguir um exemplo de ações gerais do Select AI e geração de índice vetorial em que você pode especificar um provedor de IA suportado. Este exemplo usa o perfil e as credenciais do OCI Gen AI. Consulte para obter uma lista de provedores suportados. No entanto, se você quiser usar o modelo de transformador no banco de dados para gerar incorporações de vetor, use "database: <MY_ONNX_MODEL>" no atributo 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;
/Este exemplo demonstra como usar o Select AI com um modelo de transformador no banco de dados se outro proprietário de esquema possuir o modelo. Especifique schema_name.object_name como o nome totalmente qualificado do modelo no atributo embedding_model. Se o usuário atual for o proprietário do esquema ou o proprietário do modelo, você poderá omitir o nome do esquema.
- Privilégio de sistema
CREATE ANY MINING MODEL - Privilégio de sistema
SELECT ANY MINING MODEL - Privilégio de objeto
SELECT MINING MODELno modelo específico
Para conceder um privilégio de sistema, você deve ter recebido o privilégio de sistema com o ADMIN OPTION ou ter recebido o privilégio de sistema GRANT ANY PRIVILEGE.
Consulte Privilégios de Sistema para o Oracle Machine Learning for SQL para revisar os privilégios.
As instruções a seguir permitem que ADB_USER1 pontue dados e exiba detalhes do modelo em qualquer esquema, desde que o acesso ao SELECT tenha sido concedido aos dados. No entanto, ADB_USER1 só pode criar modelos no esquema ADB_USER1.
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;
/O exemplo a seguir mostra como você pode especificar um nome de objeto de modelo com distinção entre maiúsculas e minúsculas:
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;
/Esses exemplos demonstram etapas de ponta a ponta para usar o modelo de transformador no banco de dados com o Select AI RAG. Um perfil usa database como o provider criado exclusivamente para gerar vetores de incorporação, enquanto o outro usa oci como o provider criado para ações Selecionar IA, bem como índice vetorial.
Revise Requisitos para Configurar o Pacote DBMS_CLOUD_AI para concluir os pré-requisitos.
--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.
Este exemplo usa oci como o provider.
--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)
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
Acesso ao Suporte Técnico da Oracle
O acesso do cliente Oracle aos serviços de suporte Oracle e sua respectiva utilização ocorrerão de acordo com os termos e condições especificados no pedido de compra Oracle por ele firmado para os serviços Oracle aplicáveis.

