DBMS_CLOUD_AI 패키지

Select AI가 포함된 DBMS_CLOUD_AI 패키지는 SQL 문을 생성, 실행, 설명하기 위한 자연어 프롬프트의 번역을 지원하고 구성합니다. 또한 검색 증강 생성 및 LLM과의 채팅을 비롯한 자연어 기반 상호 작용도 지원합니다.

필수 조건

개발자는 Oracle Public Cloud, 멀티클라우드 또는 Exadata Cloud@Customer에 배포된 자율운영 AI 데이터베이스와 함께 DBMS_CLOUD 절차를 사용할 수 있습니다.

배포 선택에 따라 Amazon S3, Azure Blob Storage 및 Google Cloud Storage 서비스 공급자와 함께 DBMS_CLOUD 절차를 사용하려면 다음 필요 조건을 충족해야 합니다.

DBMS_CLOUD_AI 서브 프로그램 요약

이 섹션에서는 자율운영 AI 데이터베이스와 함께 제공되는 DBMS_CLOUD_AI 서브 프로그램에 대해 다룹니다.

하위 프로그램 설명
CREATE_PROFILE 프로시저 이 절차에서는 자연어 프롬프트를 SQL 문으로 변환하기 위한 새로운 AI 프로파일을 생성합니다.
프로파일 속성 구성할 수 있는 AI 프로파일 속성을 제공합니다.
DROP_PROFILE 프로시저 이 절차에서는 기존 AI 프로파일을 삭제합니다.
ENABLE_PROFILE 프로시저 이 절차에서는 AI 프로파일이 현재 데이터베이스에서 사용할 수 있도록 합니다.
DISABLE_PROFILE 프로시저 이 절차에서는 현재 데이터베이스에서 AI 프로파일을 사용 안함으로 설정합니다.
SET_ATTRIBUTE 프로시저 이 절차에서는 AI 프로파일 속성을 설정합니다.
SET_PROFILE 프로시저 이 절차에서는 현재 데이터베이스에 대한 AI 프로파일을 설정합니다.
생성 기능 이 함수는 AI를 사용하여 변환할 SQL 문을 생성합니다.
GENERATE_MONOETIC_DATA 함수 이 함수는 합성 데이터를 생성합니다.
ENABLE_DATA_ACCESS 프로시저 다음 절차에 따라 LLM으로 데이터를 전송할 수 있습니다.
DISABLE_DATA_ACCESS 프로시저 다음 절차에 따라 LLM으로 데이터 전송을 사용 안함으로 설정할 수 있습니다.
CREATE_VECTOR_INDEX 프로시저 이 프로시저는 지정된 벡터 데이터베이스에 벡터 인덱스를 생성하고 비동기 스케줄러 작업을 사용하여 객체 저장소의 데이터로 채웁니다.
DROP_VECTOR_INDEX 프로시저 이 프로시저는 벡터 저장소 인덱스를 제거합니다. 일반적으로 벡터 저장소 인덱스 객체를 제거하고 벡터 데이터베이스를 삭제합니다.
DISABLE_VECTOR_INDEX 프로시저 이 프로시저는 현재 데이터베이스의 벡터 인덱스 객체를 비활성화합니다. 사용 안함으로 설정된 경우 AI 프로파일은 벡터 인덱스를 사용할 수 없으며 시스템은 데이터를 벡터 저장소로 로드하지 않습니다.
ENABLE_VECTOR_INDEX 프로시저 이 프로시저는 이전에 비활성화된 벡터 인덱스 객체를 활성화하거나 활성화합니다.
UPDATE_VECTOR_INDEX 프로시저 이 프로시저는 벡터 인덱스 속성의 지정된 값으로 기존 벡터 저장소 인덱스를 갱신합니다.
벡터 인덱스 속성 구성할 수 있는 벡터 인덱스 프로파일 속성을 제공합니다.
CREATE_CONVERSATION 프로시저 이 절차는 대화를 생성하는 데 도움이 됩니다.
CREATE_CONVERSATION 함수 이 기능은 대화를 생성하고 다른 절차에서 대화 ID를 사용하는 데 도움이 됩니다.
CREATE_CONVERSATION 속성 대화 속성을 사용하여 대화를 사용자정의합니다.
UPDATE_CONVERSATION 프로시저 이 프로시저는 유저가 지정한 파라미터로 기존 프로시저를 갱신합니다.
SET_CONVERSATION_ID 프로시저 이 절차에서는 현재 세션에서 대화 지원을 설정합니다.
GET_CONVERSATION_ID 함수 이 절차는 conversation_id 매개변수를 가져오는 데 도움이 됩니다.
CLEAR_CONVERSATION_ID 프로시저 이 절차는 현재 세션에서 설정된 conversation_id를 지우는 데 도움이 됩니다.
DELETE_CONVERSATION_PROMPT 프로시저 이 절차에서는 특정 프롬프트를 삭제합니다.
DROP_CONVERSATION 프로시저 이 절차에서는 전체 대화 및 해당 메타데이터를 삭제합니다.
FEEDBACK 프로시저 다음 절차에 따라 Select AI에 피드백을 제공하여 질의 생성 정확도를 향상시킬 수 있습니다.
FEEDBACK에 대한 벡터 인덱스 feedback를 처음 사용할 때 생성되는 기본 벡터 인덱스입니다.

CREATE_PROFILE 프로시저

이 절차에서는 자연어 프롬프트를 SQL 문으로 변환하기 위한 새로운 AI 프로파일을 생성합니다.

구문

DBMS_CLOUD_AI.CREATE_PROFILE(
   profile_name        IN  VARCHAR2,
   attributes          IN  CLOB      DEFAULT NULL,
   status              IN  VARCHAR2  DEFAULT NULL,
   description         IN  CLOB      DEFAULT NULL
);

매개변수

매개변수 설명
profile_name

AI 프로파일의 이름입니다. 프로파일 이름은 Oracle SQL 식별자의 이름 지정 규칙을 따라야 합니다. 최대 프로파일 이름 길이는 125자입니다.

필수 매개변수입니다.

attributes

JSON 형식의 프로파일 속성입니다. 자세한 내용은 AI 프로파일 속성을 참조하십시오.

기본값은 NULL입니다.

status

프로파일의 상태입니다.

기본값은 [사용]입니다.

description

AI 프로파일에 대한 설명입니다.

기본값은 NULL입니다.

BEGIN
     DBMS_CLOUD_AI.CREATE_PROFILE(
          profile_name    => 'OpenAI,
          attributes      => JSON_OBJECT('provider' value 'openai',
                                         'credential_name' value 'openai_cred'),
          description     => 'AI profile to use OpenAI for SQL translation'
     );
END;
/

프로파일 속성

AI 프로파일의 속성은 AI 프로파일의 동작을 관리하고 구성하는 데 도움이 됩니다. 일부 속성은 선택 사항이며 기본값을 가집니다.

속성 이름 설명
azure_deployment_name Azure OpenAI Service 배치 모델의 이름입니다. 이름에는 영숫자, 밑줄 문자(_) 및 하이픈(-)만 포함될 수 있습니다. 이름은 밑줄(_) 또는 하이픈(-)으로 끝날 수 없습니다. azure_deployment_name를 가져오는 방법에 대한 자세한 내용은 Azure OpenAI Service 리소스 생성 및 배포를 참조하십시오.
azure_resource_name Azure OpenAI 서비스 리소스의 이름입니다. 리소스 이름에는 영숫자와 하이픈만 포함될 수 있으며 하이픈으로 시작하거나 끝날 수 없습니다. azure_resource_name를 가져오는 방법을 알아보려면 Azure OpenAI Service 리소스 생성 및 배포를 참조하십시오.
comments

AI를 사용하여 자연어 프롬프트를 번역하는 데 사용되는 메타데이터에 열 설명을 포함합니다. BOOLEAN 데이터 유형이 지원됩니다. 적합한 값은 VARCHAR2 데이터 유형이 있는 문자열의 경우 TRUE 또는 FALSE입니다.

주: attribute_value 매개변수는 CLOB 데이터 유형이므로 단일 속성을 설정할 때 DBMS_CLOUD_AI.SET_ATTRIBUTE 프로시저에서 부울 값을 적용할 수 없습니다.

conversation 프로파일에 대해 대화 내역이 사용으로 설정되었는지 여부를 나타내는 VARCHAR2 속성입니다. OpenAI 및 Azure OpenAI Service만 대화 내역을 지원합니다. 적합한 값은 true 또는 false입니다. 기본값은 false입니다. 값은 대/소문자를 구분하지 않습니다.
credential_name

AI 제공자 API에 액세스할 인증서의 이름입니다.

Bearer 토큰을 사용하는 인증서는 사용자 이름으로 제공자 이름을 사용하고 비밀번호로 Bearer 토큰을 사용하여 생성할 수 있습니다.

필수 속성입니다. CREATE_CREDENTIAL Procedure를 참조하십시오.

embedding_model

AI 프로파일에 정의된 포함 모델입니다. 다음은 기본값이 포함된 임베딩 모델에 대해 지원되는 AI 제공자입니다.

  • OCI 생성형 AI: cohere.embed-english-v3.0
  • OpenAI: text-embedding-ada-002
  • Azure OpenAI: text-embedding-ada-002
  • Cohere: embed-english-v2.0
  • Google: text-embedding-004

주: embedding_model 매개변수는 Anthropic 및 Hugging Face에 적용할 수 없습니다.

max_tokens 생성당 예측할 토큰 수를 나타냅니다. 기본값은 1024입니다. 자세한 내용은 토큰 및 토큰화기를 참조하십시오.
model

응답을 생성하는 데 사용되는 AI 모델의 이름입니다.

지원되는 모델:

  • OpenAI: gpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo(기본값), gpt-3.5-turbo-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613
  • Cohere: command(기본값), command-nightly(실험적), command-light 및 command-light-nightly(실험적). 더 작은 "빛" 모델은 더 빠르지만 더 큰 모델은 더 잘 작동합니다.[사용자 정의 모델](https://docs.cohere.com/docs/creating-custom-models#what-are-custom-models)도 전체 ID와 함께 제공될 수 있습니다.
  • OCI 생성형 AI: OCI 생성형 AI의 경우: cohere.command(기본값). OCI Generative AI에 대한 사전 학습 모델은 모두 Select AI에서 지원됩니다. 사용자정의 모델은 전체 OCID와 함께 제공될 수도 있습니다.

    OCI Generative AI에서 지원되는 모델에 대한 자세한 내용은 생성형 AI의 사전 학습 기반 모델을 참고하세요.

  • AWS: Amazon Bedrock 기반 모델에는 Amazon Bedrock 콘솔을 통한 액세스 권한이 필요합니다. modelID를 가져오려면 AWS 설명서를 참조하십시오.

참고: Azure OpenAI Service 포털에서 배포를 생성할 때 모델이 결정되므로 이 매개변수는 Azure에 사용되지 않습니다.

object_list

SQL에 대한 자연어 변환에 적격한 소유자 및 객체 이름을 지정하는 JSON 객체 배열입니다. 지정된 사용자의 모든 객체를 포함하려면 "이름"을 생략하고 JSON 객체에서 "소유자" 키만 지정합니다.

자연어를 SQL로 변환하는 경우 객체 이름, 객체 소유자, 객체 열 및 주석이 HTTPS 요청을 사용하여 AI 제공자에게 전송됩니다. 객체 목록에 중요한 객체 이름, 열 이름 또는 주석이 있는 객체를 지정하지 마십시오.

AI 제공자는 번역 요청에 허용된 메타데이터의 크기를 제한할 수 있습니다. 응용 프로그램 유저의 자연어 프롬프트에 적합한 객체 리스트를 제한해 보십시오.

형식:

[ {"owner": "SH", "name": "SALES", {"owner": "TEST_USER"} ]

oci_compartment_id

OCI 생성형 AI 서비스를 호출할 때 액세스할 수 있는 컴파트먼트의 OCID를 지정합니다. 컴파트먼트 ID에는 영숫자, 하이픈 및 점이 포함될 수 있습니다.

기본값은 자율운영 AI 데이터베이스의 컴파트먼트 ID입니다.

oci_endpoint_id

이 속성은 Oracle 전용 AI 호스팅 클러스터의 끝점 OCID를 나타냅니다. 끝점 ID에는 영숫자, 하이픈 및 점이 포함될 수 있습니다. 끝점 OCID를 찾으려면 생성형 AI에서 끝점의 세부정보 가져오기를 참조하십시오.

Oracle 전용 AI 클러스터를 사용하려는 경우 호스팅 클러스터의 끝점 OCID를 제공해야 합니다.

기본적으로 끝점 ID는 비어 있으며 공유 기반구조에서 모델은 온디맨드입니다.

oci_runtimetype

이 속성은 제공된 모델의 런타임 유형을 나타냅니다. 이 속성은 model 속성이 지정되어 있고 OCI 생성 모델에 적용할 수 있는 경우에 필요합니다.

허용되는 모든 값은 OCI Generative AI runtimeType에서 찾을 수 있습니다. LlmInferenceRequest Reference를 참조하십시오.

지원되는 값은 다음과 같습니다.

  • COHERE
  • LLAMA

provider

AI 프로파일에 대한 AI 제공자입니다.

지원되는 공급자:

  • openai
  • 코히어
  • 밝은 하늘색
  • OCI
  • google
  • 인류학
  • 허깅페이스
  • aws와

필수 속성입니다.

region

이 속성은 사용하려는 생성형 AI 클러스터의 위치를 나타냅니다. 영역에는 영숫자와 하이픈 문자가 포함될 수 있습니다.

참고: Oracle Generative AI 클러스터는 시카고, 프랑크푸르트, 런던 지역에서 사용할 수 있습니다. [생성형 AI의 사전 학습 기반 모델](https://docs.oracle.com/en-us/iaas/Content/generative-ai/pretrained-models.htm#pretrained-models). 참조

기본 영역은 `us-chicago-1`입니다.

AWS의 기본 리전은 us-east-1입니다.

stop_tokens 생성된 텍스트는 가장 이른 중지 시퀀스의 시작 부분에 종료됩니다. 순서가 텍스트에 통합됩니다. 속성 값은 JSON 형식의 적합한 문자열 값 배열이어야 합니다. stop_tokens는 JSON 배열을 입력으로 사용합니다. 중지 토큰 또는 중지 시퀀스에 대한 자세한 내용은 OpenAI 또는 Cohere 설명서를 참조하십시오.
temperature 텍스트 생성 모델의 샘플링은 무작위성을 통합하므로 "생성"할 때마다 동일한 프롬프트가 다른 출력을 생성할 수 있습니다. 온도는 임의성 정도를 조정하는 데 사용되는 음수가 아닌 부동 숫자입니다. 낮은 온도는 덜 무작위 세대를 의미합니다. 자세한 내용은 온도를 참조하십시오. 이 매개변수는 지원되는 모든 서비스 제공자에 적용할 수 있습니다.

다음 예에서는 Cohere를 제공자로 사용하고 사용자정의 프로파일 속성을 표시합니다.

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'COHERE',
     attributes =>
      '{"provider": "cohere",
        "credential_name": "COHERE_CRED",
        "object_list": [{"owner": "ADB_USER"}],
        "max_tokens":512,
        "stop_tokens": [";"],
        "model": "command-nightly",
        "temperature": 0.5,
        "comments": true
       }');
END;
/

다음 예에서는 OCI Generative AI를 사용하는 사용자정의 프로파일 속성을 보여줍니다.

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
      profile_name => 'GENAI',
      attributes => '{"provider": "oci",
        "credential_name": "GENAI_CRED",
        "object_list": [{"owner": "SH", "name": "customers"},
                        {"owner": "SH", "name": "countries"},
                        {"owner": "SH", "name": "supplementary_demographics"},
                        {"owner": "SH", "name": "profits"},
                        {"owner": "SH", "name": "promotions"},
                        {"owner": "SH", "name": "products"}],
        "oci_compartment_id": "ocid1.compartment.oc1...",
	"oci_endpoint_id": "ocid1.generativeaiendpoint.oc1.us-chicago-1....",
	"region": "us-chicago-1",
	"model": "cohere.command-light",
	"oci_runtimetype": "COHERE"
       }');
END;
/

DROP_PROFILE 프로시저

이 절차는 기존 AI 프로파일을 삭제합니다. 프로파일이 없으면 프로시저에서 오류가 발생합니다.

구문

DBMS_CLOUD_AI.DROP_PROFILE(
       profile_name        IN   VARCHAR2,
       force               IN   BOOLEAN DEFAULT FALSE
 );

매개변수

매개변수 설명
profile_name AI 프로파일의 이름
force

TRUE인 경우 AI 프로파일이 없을 경우 프로시저에서 오류를 무시합니다.

이 매개변수의 기본값은 FALSE입니다.

BEGIN
     DBMS_CLOUD_AI.DROP_PROFILE(profile_name => 'OPENAI');
END;
/

사용법 참고

AI 프로파일이 존재하지 않을 경우 force를 사용하여 프로파일을 삭제하고 오류를 무시합니다.

ENABLE_PROFILE 프로시저

이 절차에서는 사용자가 지정하는 AI 프로파일을 사용으로 설정합니다. 이 절차에서는 AI 프로파일의 상태를 ENABLED로 변경합니다.

구문

DBMS_CLOUD_AI.ENABLE_PROFILE(
     profile_name         IN   VARCHAR2
 );

매개변수

매개변수 설명
profile_name

사용으로 설정할 AI 프로파일의 이름

이 매개변수는 필수입니다.

AI 프로파일을 사용으로 설정하는 예

BEGIN
     DBMS_CLOUD_AI.ENABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

DISABLE_PROFILE 프로시저

이 절차에서는 현재 데이터베이스에서 AI 프로파일을 사용 안함으로 설정합니다. 이 절차에 따라 AI 프로파일의 상태가 DISABLED로 변경됩니다.

구문

DBMS_CLOUD_AI.DISABLE_PROFILE(
      profile_name  IN  VARCHAR2
);

매개변수

매개변수 설명
profile_name

AI 프로파일의 이름입니다.

이 매개변수는 필수입니다.

BEGIN
     DBMS_CLOUD_AI.DISABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

SET_ATTRIBUTE 프로시저

이 절차에서는 AI 프로파일 속성을 설정할 수 있습니다.

구문

DBMS_CLOUD_AI.SET_ATTRIBUTE(
      profile_name         IN   VARCHAR2,
      attribute_name       IN   VARCHAR2,
      attribute_value      IN   CLOB
);

매개변수

소유자만 AI 프로파일의 속성을 설정하거나 수정할 수 있습니다. 지원되는 속성 목록은 프로파일 속성을 참조하십시오.

매개변수 설명
profile_name

속성을 설정할 AI 프로파일의 이름입니다.

이 매개변수는 필수입니다.

attribute_name

AI 프로파일 속성의 이름

이 매개변수는 필수입니다.

attribute_value

프로파일 속성의 값입니다.

기본값은 NULL입니다.

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OPENAI',
   attribute_name  => 'credential_name',
   attribute_value => 'OPENAI_CRED_NEW'
 );
END;
/

SET_PROFILE 프로시저

이 절차에서는 현재 세션에 대한 AI 프로파일을 설정합니다.

데이터베이스 세션에 대한 AI 프로파일을 설정한 후 접두어가 SELECT AI인 SQL 문은 자연어 프롬프트로 간주됩니다. AI 접두어로 지정된 작업에 따라 AI를 사용하여 응답이 생성됩니다. AI 접두어를 사용하려면 AI 키워드를 사용하여 프롬프트 입력을 참조하십시오. 선택적으로 프로파일 속성을 대체하거나 JSON 형식으로 지정하여 속성을 수정할 수 있습니다. 속성을 설정하려면 SET_ATTRIBUTE 프로시저를 참조하십시오.

AI 프로파일의 소유자가 세션 사용자인 경우 현재 세션에 대해서만 AI 프로파일을 설정할 수 있습니다.

특정 데이터베이스 사용자 또는 데이터베이스의 모든 사용자 세션의 모든 세션에 대해 AI 프로파일을 설정하려면 특정 사용자 또는 전체 데이터베이스의 AFTER LOGON 이벤트에 대해 데이터베이스 이벤트 트리거를 사용하는 것이 좋습니다. 자세한 내용은 Oracle Database 19c Database PL/SQL Language ReferenceCREATE TRIGGER Statement 또는 Oracle Database 26ai Database PL/SQL Language Reference를 참조하십시오.

구문

DBMS_CLOUD_AI.SET_PROFILE(
    profile_name      IN  VARCHAR2,
);

매개변수

매개변수 설명
profile_name

현재 세션에서 AI 프로파일의 이름입니다.

이 매개변수는 필수입니다.

BEGIN
     DBMS_CLOUD_AI.SET_PROFILE(
       profile_name    => 'OPENAI'
     );
END;
/

GENERATE 함수

이 기능은 Stateless 데이터베이스 연결을 사용할 때 AI 번역을 제공합니다. 기존 AI 프로파일에서 이 기능을 사용하여 지원되는 작업(예: showsql, runsql, explainsql, narrate, summarizechat)을 수행할 수 있습니다. 기본 조치는 showsql입니다.

이 기능을 사용하여 프로파일 속성의 일부 또는 전부를 대체할 수도 있습니다.

구문

DBMS_CLOUD_AI.GENERATE(
    prompt            IN  CLOB,
    profile_name      IN  VARCHAR2 DEFAULT NULL,
    action            IN  VARCHAR2 DEFAULT NULL,
    attributes        IN  CLOB     DEFAULT NULL,
    params            IN  CLOB
) RETURN CLOB;

매개변수

매개변수 설명
prompt

AI를 사용하여 번역할 자연어 프롬프트입니다.

프롬프트에는 접두어로 SELECT AI <ACTION>가 포함될 수 있습니다. 작업은 "작업" 매개변수로 별도로 제공할 수도 있습니다. 프롬프트에 제공된 actionaction 매개변수를 대체합니다. 기본 작업은 showsql입니다.

이 매개변수는 필수입니다.

profile_name

AI 프로파일의 이름입니다. AI 프로파일이 DBMS_CLOUD_AI.SET_PROFILE를 사용하여 세션에 이미 설정된 경우 이 매개변수는 선택 사항입니다.

기본값은 NULL입니다.

다음 조건이 적용됩니다.

  • 프로파일이 현재 세션에서 설정된 경우 사용자는 DBMS_CLOUD_AI.GENERATE 함수에서 profile_name 인수를 생략할 수 있습니다.
  • profile_name 인수가 DBMS_CLOUD_AI.GENERATE 함수에 제공된 경우 DBMS_CLOUD_AI.SET_PROFILE 프로시저를 사용하여 세션에 설정된 모든 값을 무효화합니다.
  • DBMS_CLOUD_AI.SET_PROFILE 프로시저를 사용하여 세션에 설정된 프로파일이 없는 경우 DBMS_CLOUD_AI.GENERATE 함수에 profile_name 인수를 제공해야 합니다.

주: Database Actions의 경우 DBMS_CLOUD_AI.GENERATEprofile_name 인수를 지정하거나 PL/SQL 스크립트로 DBMS_CLOUD_AI.SET_PROFILEDBMS_CLOUD_AI.GENERATE의 두 단계를 실행할 수 있습니다.

EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
-----------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt => 'how many customers',
profile_name => 'OPENAI',
action => 'runsql')
FROM dual;
-----------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt => 'how many customers',
profile_name => 'OPENAI',
action => 'showsql')
FROM dual;
-----------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt => 'how many customers',
profile_name => 'OPENAI',
action => 'explainsql')
FROM dual;
------------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt => 'how many customers',
profile_name => 'OPENAI',
action => 'narrate')
FROM dual;
-------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt => 'what is oracle autonomous database',
profile_name => 'OPENAI',
action => 'chat')
FROM dual;

자세한 내용은 코드 편집기에서 SQL 문 실행을 참조하십시오.

action

AI를 사용하여 자연 프롬프트를 번역하기 위한 작업입니다. 지원되는 작업은 다음과 같습니다.

  • runsql(기본값)

  • showsql

  • explainsql

  • narrate

  • summarize

  • translate

  • chat

작업에 대한 설명은 AI 키워드를 사용하여 프롬프트 입력에 포함되어 있습니다.

attributes JSON 형식으로 속성을 제공하여 특정 AI 프로파일 속성을 대체합니다. 자세한 내용은 프로파일 속성을 참조하십시오.
params

대화 매개변수를 지정합니다. CREATE_CONVERSATION 속성을 참조하십시오. 다음 파라미터만 지정할 수 있습니다.

conversation_id: 기본값은 현재 세션에서 설정된 대화 ID입니다. 필수 매개변수가 아닙니다.

예: Select AI 작업에 GENERATE 함수 사용

다음 예에서는 DBMS_CLOUD_AI.GENERATE 함수와 함께 사용할 수 있는 runsql, showsql, explainsql, narrate, summarize, translatechat 작업에 대해 설명합니다.

자세한 내용은 AI 키워드를 사용하여 프롬프트 입력을 참조하십시오.

runsql 작업의 예는 다음과 같습니다.

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'runsql')
FROM dual;

showsql 작업의 예는 다음과 같습니다.

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

explainsql 작업의 예는 다음과 같습니다.

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'explainsql')
FROM dual;

narrate 작업의 예는 다음과 같습니다.

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;

chat 작업의 예는 다음과 같습니다.

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;

summarize 작업의 예는 다음과 같습니다.

SELECT DBMS_CLOUD_AI.GENERATE(
                prompt => TO_CLOB(
                            DBMS_CLOUD.GET_OBJECT(
                             credential_name => 'STORE_CRED',
                             object_uri => 'https://objectstorage.ca-toronto-1.oraclecloud.com' ||
                                '/n/namespace-string/b/bucketname/o/data_folder/' ||
                                'summary/test_4000_words.txt')),
                profile_name => 'GENAI_LLAMA',
                action => 'SUMMARIZE')
from DUAL;

결과:

The music streaming industry, led by Spotify, has revolutionized the way people consume music, with streaming accounting for 80% of the American recording industry's revenue. However, this shift has also complicated the lives of artists trying to survive in an on-demand, hyper-abundant present.
Spotify's business model, which pays royalties based on an artist's
popularity, has led to concerns about the fairness of the system, with some artists earning little to no royalties. The company's dominance has also changed the way people listen to music, with a focus on convenience and personalized playlists. Liz Pelly's book, "Mood Machine: The Rise of Spotify and the Costs of the Perfect Playlist," explores the impact of Spotify's rise on the music industry and listeners, arguing that the platform's emphasis on
affect and mood has led to a homogenization of music and a loss of autonomy for listeners. As the music industry continues to evolve, questions remain about the future of music creation and consumption, and whether artists will be able to thrive in a system that prioritizes convenience and profit over artistic expression.

다음 예에서는 translate 작업을 보여줍니다.

다음 예에서는 프롬프트에서 translate 작업을 사용하는 방법을 보여줍니다.

주: AI 프로파일은 대상 언어를 지정해야 합니다.

SELECT DBMS_CLOUD_AI.GENERATE('select ai translate text to be translated')
          FROM dual;

다음 예에서는 target_languagesource_language와 함께 DBMS_CLOUD_AI.GENERATE 함수에 제공된 translate 작업을 보여줍니다. 이 예에서는 생성형 AI 번역을 사용합니다. 입력 텍스트 this is a document(영어)(source_language: "en")는 프랑스어(target_language: "fr")로 번역됩니다.

DECLARE
         l_attributes  clob := '{"target_language": "fr", "source_language": "en"}';
         output clob;
      BEGIN
         output := DBMS_CLOUD_AI.GENERATE(
                        prompt            => 'this is a document',
                        profile_name      => 'oci_translate',
                        action            => 'translate',
                        attributes        => l_attributes
                     );

프로시저에서 GENERATE 함수 사용

프로시저에서 DBMS_CLOUD_AI.GENERATE를 사용하고 함수를 실행할 수 있습니다. 다음 예에서는 ai_prompt, profile_nameaction를 입력 매개변수로 사용하고 DBMS_CLOUD_AI.GENERATE를 호출합니다.

create or replace FUNCTION call_select_ai (ai_prompt  IN VARCHAR2,
                                           ai_profile IN VARCHAR2,
                                           ai_action  IN VARCHAR2) -- valid for 'chat', 'narrate', 'showsql'
                                           RETURN CLOB AS sai_resp clob;
BEGIN
  sai_resp := DBMS_CLOUD_AI.GENERATE(prompt       => ai_prompt,
                                     profile_name => ai_profile,
                                     action       => ai_action);
  return(sai_resp);
END call_select_ai;

GENERATE_MONOETIC_DATA 함수

이 절차에 따라 단일 테이블, 다중 테이블 또는 전체 스키마에 대한 합성 데이터를 생성할 수 있습니다.

다음은 단일 테이블에 대한 합성 데이터를 생성하는 구문입니다.

구문

DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
  profile_name        IN  VARCHAR2,
  object_name         IN  DBMS_ID,
  owner_name          IN  DBMS_ID,
  record_count        IN  NUMBER,
  user_prompt         IN  CLOB DEFAULT NULL,
  params              IN  CLOB DEFAULT NULL
);

다음은 여러 테이블에 대해 합성 데이터를 생성하는 구문입니다.

DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
  profile_name        IN  VARCHAR2,
  object_list         IN  CLOB,
  params              IN  CLOB DEFAULT NULL
);

테이블 데이터 또는 벡터 검색 문서를 LLM으로 전송하지 않으려는 경우 관리자 권한이 있는 사용자는 지정된 데이터베이스의 모든 사용자에 대해 해당 액세스를 사용 안함으로 설정할 수 있습니다. 실제로 narrate 작업을 사용 안함으로 설정합니다.

매개변수

매개변수 필수 설명
profile_name 필요한 LLM 서비스 정보를 포함하는 AI 프로파일입니다. CREATE_PROFILE 프로시저를 통해 생성할 수 있습니다.
object_name 합성 데이터를 채울 테이블 이름을 지정합니다.
  • 테이블 객체를 사용하는 사용자에게 테이블 객체에 대한 SELECTINSERT 권한이 필요합니다.
  • 테이블이 비어 있거나 테이블에 레코드가 있습니다.
owner_name 아니요 참조된 객체를 소유하는 데이터베이스 사용자를 지정합니다. 특정 소유자가 제공되지 않은 경우 프로시저는 기본적으로 소유자를 실행하는 사용자의 스키마를 사용합니다.
record_count 아니요 합성적으로 생성할 레코드 수입니다.
user_prompt 아니요 사용자가 합성 데이터를 생성하기 위해 언급할 수 있는 추가 정보입니다. 예를 들어, `release_date` 열을 사용하여 `MOVIE`라는 테이블에 대한 레코드를 생성하려면 `user_prompt`는 다음과 같을 수 있습니다.

영화의 출시 날짜는 2019 년이어야합니다.

params 아니요 API의 동작을 수정하기 위해 JSON 객체 문자열 형식으로 제공되는 선택적 속성입니다. 선택적 매개변수를 참조하십시오.
object_list 다중 테이블에 합성 데이터를 생성하려면 이 매개변수를 사용합니다. 이 매개변수는 테이블 객체 정보를 인수와 함께 사용하고 단일 테이블에 제공된 동일한 인수를 포함합니다. object_list Parameters를 참조하십시오.

선택적 매개변수

매개변수 값 데이터 유형 설명
sample_rows 번호 0 <= sample_rows <= 100

데이터 생성 시 LLM을 안내하는 샘플로 사용할 테이블의 행 수를 지정합니다.

값이 0이면 샘플 행이 사용되지 않습니다. 기본값은 0입니다.

table_statistics Boolean

  • True
  • False

테이블 통계 정보 사용을 사용 또는 사용 안함으로 설정하십시오.

기본값은 False입니다.

priority String

적합한 값은 다음과 같습니다.

  • HIGH
  • MEDIUM
  • LOW

합성 데이터 생성을 위해 LLM에 전송된 병렬 요청 수를 정의하는 우선순위 값을 지정합니다. 우선 순위가 높은 작업은 더 많은 데이터베이스 리소스를 소비하고 더 빠르게 완료됩니다.

기본값은 HIGH입니다.

  • HIGH: 데이터베이스의 ECPU 수(또는 데이터베이스에서 OCPU를 사용하는 경우 OCPU 수)를 기준으로 병렬 LLM 요청 수를 지정합니다.

  • MEDIUM: 중간 서비스에 대한 동시성 제한에 따라 동시 프로세스 수를 설정합니다. 기본값은 4입니다.

  • LOW: 병렬 처리 없이 직렬 순서로 파이프라인 작업을 실행합니다.

합성 데이터 생성에 사용되는 최대 동시 병렬 프로세스 수는 64개로 제한됩니다.

comments Boolean

  • True
  • False

데이터 생성을 안내하기 위해 LLM에 대한 의견 전송을 사용 또는 사용 안함으로 설정합니다.

기본값은 False입니다.

object_list 매개변수

매개변수 값 데이터 유형 필수 설명
owner String 참조되는 객체를 소유하는 데이터베이스 사용자를 지정합니다. 특정 소유자가 제공되지 않은 경우 프로시저는 기본적으로 소유자를 실행하는 사용자의 스키마를 사용합니다.
name String 아니요 합성 데이터를 채울 테이블 이름을 지정합니다. 테이블 객체를 사용하는 사용자에게 테이블 객체에 대한 SELECTINSERT 권한이 필요합니다. 테이블이 비어 있거나 테이블 객체에 레코드가 있습니다.
record_count 번호 아니요

합성적으로 생성할 레코드 수입니다. 0보다 큰 숫자를 제공하십시오.

record_count 또는 record_count_percentage를 제공합니다.

record_count_percentage 번호 아니요

합성적으로 생성할 레코드 수의 퍼센트입니다. 0보다 큰 숫자를 제공하십시오.

통계를 포함한 테이블 메타데이터가 보존되는 메타데이터 복제 데이터베이스의 경우 record_count_percentage 매개변수가 지원됩니다.

record_count 또는 record_count_percentage를 제공합니다.

record_count_percentage 매개변수를 사용하는 경우 테이블의 최종 레코드 수는 다음과 같이 계산됩니다.

Original_Num_Rows * record_count_percentage

user_prompt String 아니요 GENERATE_DATAETIC_DATA 함수 매개변수user_prompt와 동일합니다. user_prompt는 특정 테이블 객체와 연관됩니다.

다음 예에서는 단일 테이블 및 다중 테이블에 대한 합성 데이터를 생성하기 위한 DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA 함수를 보여줍니다. 전체 예 및 추가 예제를 보려면 예: 합성 데이터 생성을 참조하십시오.

BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_name  => 'Director',
        owner_name   => 'ADB_USER',
        record_count => 5
    );
END;
/
BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_list => '[{"owner": "ADB_USER", "name": "Director","record_count":5},
                         {"owner": "ADB_USER", "name": "Movie_Actor","record_count":5},
                         {"owner": "ADB_USER", "name": "Actor","record_count":10},
                         {"owner": "ADB_USER", "name": "Movie","record_count":5,"user_prompt":"all movies are released in 2009"}]'
    );
END;
/

ENABLE_DATA_ACCESS 프로시저

이 절차에서는 적용 가능한 Select AI 기능에 대한 데이터를 LLM으로 전송할 수 있습니다. 이는 기본 동작입니다. 관리자만 이 절차를 실행할 수 있습니다.

이 절차에서는 다음 AI 선택 기능에 대한 데이터 액세스를 제어합니다.

구문

DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();

매개변수

이 프로시저에는 파라미터가 필요하지 않습니다.

데이터 액세스를 사용으로 설정하는 예

BEGIN
  DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();
END;
/

DISABLE_DATA_ACCESS 프로시저

이 절차에서는 적용 가능한 Select AI 기능에 대해 LLM으로 데이터 전송을 사용 안함으로 설정합니다. 관리자만 이 절차를 실행할 수 있습니다.

이 절차에서는 다음과 같은 Select AI 기능을 제한합니다.

구문

DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();

매개변수

이 프로시저에는 파라미터가 필요하지 않습니다.

데이터 액세스를 사용 안함으로 설정하는 예

BEGIN
  DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();
END;
/

CREATE_VECTOR_INDEX 프로시저

이 프로시저는 지정된 벡터 데이터베이스에 벡터 인덱스를 생성하고 비동기 스케줄러 작업을 사용하여 객체 저장소의 데이터로 채웁니다.

구문

PROCEDURE CREATE_VECTOR_INDEX(
   index_name          IN  VARCHAR2,
   attributes          IN  CLOB      DEFAULT NULL,
   status              IN  VARCHAR2  DEFAULT NULL,
   description         IN  CLOB      DEFAULT NULL
);

매개변수

매개변수 설명
index_name

벡터 인덱스의 이름입니다. 벡터 인덱스 이름은 Oracle SQL 식별자의 이름 지정 규칙을 따라야 합니다. 벡터 저장소 이름의 최대 길이는 125자입니다.

필수 매개변수입니다.

attributes

JSON의 벡터 인덱스에 대한 사용자정의 속성입니다. 구성 가능한 매개변수 목록을 보려면 벡터 인덱스 속성을 참조하십시오.

기본값은 NULL입니다.

status

벡터 인덱스의 상태입니다. 가능한 값은 다음과 같습니다.

  • Enabled
  • Disabled

기본값은 비활성화됨입니다.

description

벡터 인덱스에 대한 설명입니다.

기본값은 NULL입니다.

다음 예제는 벡터 인덱스를 생성하고 속성을 JSON 매개변수로 구성하는 방법을 보여줍니다.

BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
            index_name    => 'MY_INDEX'
            attributes    => JSON_OBJECT(
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',
                       'profile_name'      value 'OCIGENAI',
                       'location'          value
                         'https://objectstorage.us-phoenix-1.' ||
                         'oraclecloud.com/n/mynamespace/b/mybucket',
                       'object_store_credential_name'   value 'OS_CRED',
                       'chunk_size'        value 2048,
                       'chunk_overlap'     value 256,
                       'refresh_rate'      value 720)
       );
END;
/

DROP_VECTOR_INDEX 프로시저

이 프로시저는 벡터 저장소 인덱스를 제거합니다. 일반적으로 벡터 저장소 인덱스 객체를 제거하고 벡터 저장소를 삭제합니다. FALSE로 설정된 경우 include_data 인수는 벡터 저장소를 유지하면서 프로시저가 벡터 저장소 인덱스 객체만 제거하도록 합니다.

구문

PROCEDURE DROP_VECTOR_INDEX(
   index_name          IN  VARCHAR2,
   include_data        IN  BOOLEAN DEFAULT TRUE,
   force               IN  BOOLEAN DEFAULT FALSE
);

매개변수

매개변수 설명
index_name

벡터 인덱스의 이름입니다. 벡터 인덱스 이름은 Oracle SQL 식별자의 이름 지정 규칙을 따라야 합니다. 벡터 저장소 이름의 최대 길이는 125자입니다.

필수 매개변수입니다.

include_data

벡터 인덱스 객체와 함께 고객의 벡터 저장소 및 벡터 인덱스를 모두 삭제할지 여부를 나타냅니다.

가능한 값:

  • TRUE
  • FALSE

기본값은 TRUE입니다.

force

벡터 인덱스가 없는 경우 발생하는 오류를 무시할지 여부를 나타냅니다.

가능한 값:

  • TRUE
  • FALSE

TRUE로 설정된 경우 이 매개변수는 벡터 인덱스가 존재하지 않을 경우 발생하는 오류를 무시합니다.

기본값은 FALSE입니다.

BEGIN
DBMS_CLOUD_AI.DROP_VECTOR_INDEX(
        index_name     => 'MY_INDEX',
        include_data   => FALSE,
        force          => TRUE
     );
END;
/

DISABLE_VECTOR_INDEX 프로시저

이 프로시저는 현재 데이터베이스의 벡터 인덱스 객체를 비활성화합니다. 사용 안함으로 설정된 경우 AI 프로파일은 벡터 인덱스를 사용할 수 없으며, 객체 저장소에 새 데이터가 추가되고 인덱스를 기반으로 인덱스화, 검색 또는 쿼리를 수행하지 않으므로 시스템이 벡터 저장소에 데이터를 로드하지 않습니다.

구문

DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(
   index_name       IN  VARCHAR2
);

매개변수

매개변수 설명
index_name

벡터 인덱스의 이름입니다. 벡터 인덱스 이름은 Oracle SQL 식별자의 이름 지정 규칙을 따라야 합니다. 벡터 저장소 이름의 최대 길이는 125자입니다.

필수 매개변수입니다.

벡터 인덱스의 이름을 제공하여 벡터 인덱스를 비활성화할 수 있습니다.

BEGIN
   DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(index_name => 'MY_INDEX');
END;
/

ENABLE_VECTOR_INDEX 프로시저

이 프로시저는 이전에 비활성화된 벡터 인덱스 객체를 활성화하거나 활성화합니다. 일반적으로 벡터 인덱스를 생성할 때 기본적으로 AI 프로파일에서 인덱스화 및 검색을 수행하는 데 사용할 수 있도록 사용으로 설정됩니다.

사용으로 설정된 경우, 벡터 인덱스는 AI 프로파일이 객체 저장소의 새 데이터를 사용자 지정 새로고침 속도로 벡터 저장소로 로드하는 데 사용할 수 있게 해줍니다. JSON 객체 목록을 통해 refresh_rate 매개변수를 지정할 수 있습니다. JSON 속성을 구성하려면 벡터 인덱스 속성을 참조하십시오.

구문

DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(
   index_name       IN  VARCHAR2
);

매개변수

매개변수 설명
index_name

벡터 인덱스의 이름입니다. 벡터 인덱스 이름은 Oracle SQL 식별자의 이름 지정 규칙을 따라야 합니다. 벡터 저장소 이름의 최대 길이는 125자입니다.

필수 매개변수입니다.

벡터 인덱스 이름을 다음과 같이 지정하여 벡터 인덱스를 활성화하거나 활성화할 수 있습니다.

BEGIN
   DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(index_name => 'MY_INDEX');
END;
/

UPDATE_VECTOR_INDEX 프로시저

이 프로시저는 벡터 인덱스 속성의 지정된 값으로 기존 벡터 저장소 인덱스를 갱신합니다.

다음을 수락하도록 오버로드됩니다.

구문

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
   index_name         IN  VARCHAR2,
   attributes         IN  CLOB
);
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
     index_name         IN  VARCHAR2,
     attribute_name     IN  VARCHAR2,
     attribute_value    IN  VARCHAR2
);
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
     index_name         IN  VARCHAR2,
     attribute_name     IN  VARCHAR2,
     attribute_value    IN  CLOB     DEFAULT NULL
  );

매개변수

매개변수 설명
index_name

벡터 인덱스의 이름입니다. 벡터 인덱스 이름은 Oracle SQL 식별자의 이름 지정 규칙을 따라야 합니다. 벡터 저장소 이름의 최대 길이는 125자입니다.

필수 매개변수입니다.

attributes

벡터 인덱스 속성을 JSON 형식으로 지정합니다.

필수 매개변수입니다.

attribute_name

CREATE_VECTOR_INDEX 프로시저에서 JSON 매개변수로 지정된 사용자정의 속성의 이름입니다.

다음 속성은 수정할 수 없습니다.

  • location
  • vector_table_name
  • chunk_size
  • chunk_overlap
  • vector_distance_metric
  • vector_dimension

필수 매개변수입니다.

attribute_value

사용자정의 attribute_name에 대한 사용자 지정 값입니다. 값은 CLOB, NUMBER 또는 VARCHAR2 유형일 수 있습니다.

기본값은 NULL입니다.

주: attributes 매개변수를 사용하여 attribute_name 및 값 쌍을 JSON 형식으로 지정하거나 attribute_nameattribute_value 매개변수를 함께 지정합니다.

BEGIN
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
      index_name       => 'MY_INDEX',
      attribute_name   => 'object_storage_credential_name',
      attribute_value  => 'NEW_CRED'
   );
END;
/

다음 예에서는 NUMBER 유형을 attribute_value로 허용합니다.

BEGIN
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
      index_name       => 'MY_INDEX',
      attribute_name   => 'match_limit',
      attribute_value  => 10
   );
END;
/

다음 예에서는 VARCHAR2 유형을 attribute_value로 허용합니다.

BEGIN
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
      index_name       => 'MY_INDEX',
      attribute_name   => 'profile_name',
      attribute_value  => 'AI_PROF2'
   );
END;
/

다음 예에서는 attributes를 JSON 형식으로 허용합니다.

BEGIN
  DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
    index_name => 'MY_VECTOR_INDEX',
    attributes => '{"match_limit": 10,
                    "refresh_rate": 30}'
  );
END;
/

벡터 인덱스 속성

벡터 인덱스의 속성은 벡터 인덱스의 동작을 관리하고 구성하는 데 도움이 됩니다. 필요에 따라 사용자정의 인덱스 속성을 추가할 수 있습니다. 일부 속성은 선택 사항이며 기본값을 가집니다.

속성

속성 이름 필수 설명
chunk_size 1024(기본값) 아니요

입력 데이터 조각화의 텍스트 크기입니다.

텍스트 데이터의 경우 문자 수를 의미합니다.

chunk_overlap 128(기본값) 아니요 인접한 텍스트 조각 사이에 겹치는 문자의 양을 지정합니다. 이 속성은 세그먼트 간 겹침을 허용하여 텍스트 처리에서 컨텍스트 연속성과 정확성을 보장하는 데 유용합니다. 이를 통해 조각 경계에서 컨텍스트 정보가 손실되지 않도록 방지할 수 있습니다.
location NA

이 매개변수는 소스 파일 URI 또는 디렉토리와 소스 파일을 지정합니다.

와일드카드 패턴은 소스 파일 URI와 디렉토리 모두에 지원됩니다.

클라우드 소스 파일 URI:

버킷 또는 하위 폴더에 대한 소스 파일 URI를 지정할 수 있습니다. 와일드카드를 사용하여 하위 폴더 또는 파일 이름을 지정할 수 있습니다. "*" 문자는 여러 문자에 대한 와일드 카드 문자로서 사용할 수 있으며, "?" 문자는 단일 문자의 와일드 카드 문자로서 사용할 수 있으며,

와일드카드를 사용하는 예:

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

디렉토리:

하나의 디렉토리와 파일 이름을 지정할 수 있습니다. 디렉토리를 지정하는 형식은 MY_DIR:filename.ext입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 대/소문자를 구분합니다.

와일드카드를 사용하여 디렉토리에 파일 이름만 지정할 수 있습니다. * 문자는 여러 문자에 대한 와일드카드 문자로 사용할 수 있으며, ? 문자는 단일 문자의 와일드카드 문자로 사용할 수 있으며, 예: MY_DIR:* 또는 MY_DIR:test?.

큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: "my_dir1":*, "my_dir2":Test?

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: MY_DIR:''filename.ext. 파일 이름이 따옴표(')로 시작하도록 지정합니다.

이 위치의 파일은 PDF, DOC, JSON, XML 또는 HTML과 같은 형식의 문서일 수 있습니다. 지원되는 문서 형식을 참조하십시오.

match_limit 5(기본값) 아니요 벡터 검색 질의에서 반환할 최대 결과 수를 지정하여 출력 크기를 제어하고 데이터 검색 작업의 효율성을 향상시킵니다.
object_storage_credential_name NA 오브젝트 스토리지에 액세스하기 위한 인증서의 이름을 지정합니다.
pipeline_name <vector_index_name>$VECPIPELINE 아니요 벡터 인덱스 데이터 로드 파이프라인의 이름을 지정합니다. 이 속성은 벡터 인덱스에 대해 자동으로 설정되므로 지정하거나 수정할 수 없습니다. 파이프라인 이름은 파이프라인 모니터링 및 문제 해결을 사용하여 벡터 인덱스 데이터 로드를 모니터하는 데 사용할 수 있습니다.
profile_name NA 소스 데이터 및 사용자 프롬프트 임베딩에 사용되는 AI 프로파일의 이름입니다.
refresh_rate 1440분(기본값) 아니요 벡터 저장소에서 데이터 업데이트 간격입니다. 단위는 분입니다.
similarity_threshold 0(기본값) 아니요 두 항목이 일치 항목으로 간주되는 데 필요한 최소 유사성 레벨을 정의합니다. 일치 알고리즘에서 결과를 필터링하여 관련성을 확인하는 데 유용합니다.
vector_distance_metric 설명에 지정된 값 중 하나에 해당하는 문자열입니다. 아니요

항목 간의 유사성이 정량화되는 방법을 결정하는 데이터베이스의 벡터를 비교하는 데 사용되는 거리 계산 유형을 지정합니다.

Oracle 23ai에 적합한 값은 다음과 같습니다.

  • EUCLIDEAN
  • L2_SQUARED (EUCLIDEAN_SQUARED)
  • COSINE(기본값)
  • DOT
  • MANHATTAN
  • HAMMING
vector_db_provider oracle 벡터 저장소를 관리하고 제공하는 제공자 이름을 지정합니다.
vector_dimension NA 아니요 벡터 저장소 내의 각 벡터에 있는 요소 수를 지정하여 데이터 표현의 크기와 구조를 정의합니다.
vector_table_name <vector_index_name>$VECTAB(기본값) 아니요

벡터 임베딩 및 조각 데이터를 저장할 테이블 또는 컬렉션의 이름을 지정합니다.

예: 오브젝트 스토리지 URI 위치 지정

다음 예제는 OCI Generative AI 벡터 저장소로 벡터 인덱스를 생성하는 방법을 보여줍니다.

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": 1024,
                          "vector_distance_metric": "cosine",
                          "chunk_overlap":128,
                          "chunk_size":1024
      }');
END;
/
/

예: 와일드카드 패턴으로 오브젝트 스토리지 URI 위치 지정

이 예에서는 오브젝트 스토리지 URI의 와일드카드 패턴(*)을 location 매개변수로 지정합니다. 오브젝트 스토리지 URI에서 모든 CSV 파일을 로드합니다.

BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
            index_name    => 'MY_INDEX',
            attributes    => JSON_OBJECT(
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',
                       'profile_name'      value 'OCIGENAI',
                       'location'          value 'https://objectstorage.myregion.oraclecloud.com/n/my$namespace/b/bucketname/o/year=????/month=??/file*.csv)',
                       'object_storage_credential_name'   value 'OS_CRED',
                       'chunk_size'        value 2048,
                       'chunk_overlap'     value 256,
                       'refresh_rate'      value 720)
       );
END;
/

예: 와일드카드 패턴으로 디렉토리 객체 위치 지정

이 예에서는 와일드카드 패턴을 사용하여 location 매개변수에 디렉토리 객체를 지정합니다. MY_DIR 디렉토리의 모든 CSV 파일을 로드합니다.

BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
            index_name    => 'MY_INDEX',
            attributes    => JSON_OBJECT(
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',
                       'profile_name'      value 'OCIGENAI',
                       'location'          value 'MY_DIR:*.csv',
                       'object_storage_credential_name'   value 'OS_CRED',
                       'chunk_size'        value 2048,
                       'chunk_overlap'     value 256,
                       'refresh_rate'      value 720)
       );
END;
/

예: 와일드카드 패턴으로 대소문자 구분 디렉토리 객체 위치 지정

이 예에서는 와일드카드 패턴을 사용하여 location 매개변수에서 대소문자를 구분하는 디렉토리 객체를 지정합니다. My_Dir 디렉토리의 모든 CSV 파일을 로드합니다.

BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
            index_name    => 'MY_INDEX',
            attributes    => JSON_OBJECT(
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',
                       'profile_name'      value 'OCIGENAI',
                       'location'          value '"My_Dir":*.csv',
                       'object_storage_credential_name'   value 'OS_CRED',
                       'chunk_size'        value 2048,
                       'chunk_overlap'     value 256,
                       'refresh_rate'      value 720)
       );
END;
/

예: 모든 파일을 와일드카드 패턴으로 사용하여 대소문자 구분 디렉토리 객체 지정

이 예에서는 와일드카드 패턴(*)을 사용하여 location 매개변수에 대소문자를 구분하는 디렉토리 객체를 지정합니다. My_Dir 디렉토리에 있는 모든 파일을 로드합니다.

BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
            index_name    => 'MY_INDEX',
            attributes    => JSON_OBJECT(
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',
                       'profile_name'      value 'OCIGENAI',
                       'location'          value '"My_Dir":*',
                       'object_storage_credential_name'   value 'OS_CRED',
                       'chunk_size'        value 2048,
                       'chunk_overlap'     value 256,
                       'refresh_rate'      value 720)
       );
END;
/

예: 디렉토리 객체에서 파일 이름 일치 지정

이 예에서는 디렉토리 객체를 지정하고 location 매개변수에서 파일 이름 접두어(예: test)를 사용합니다. MY_DIR 디렉토리에서 이름이 test로 시작하는 모든 파일을 로드합니다.

BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
            index_name    => 'MY_INDEX',
            attributes    => JSON_OBJECT(
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',
                       'profile_name'      value 'OCIGENAI',
                       'location'          value 'MY_DIR:test*',
                       'object_storage_credential_name'   value 'OS_CRED',
                       'chunk_size'        value 2048,
                       'chunk_overlap'     value 256,
                       'refresh_rate'      value 720)
       );
END;
/

CREATE_CONVERSATION 프로시저

이 절차에서는 대화를 생성하고 절차 내에서 conversation_id를 자동으로 설정할 수 있습니다.

주: DBMS_CLOUD_AI.CREATE_CONVERSATION 프로시저를 사용하는 경우 프로시저에서 자동으로 설정하므로 conversation_id 설정을 건너뛸 수 있습니다.

구문

DBMS_CLOUD_AI.CREATE_CONVERSATION(
  attributes            IN CLOB DEFAULT NULL
);

매개변수

매개변수 설명
attributes

JSON 형식의 대화에 대한 속성입니다. 자세한 내용은 CREATE_CONVERSATION 속성을 참조하십시오.

기본값은 NULL입니다.

예: 대화 생성

다음 예에서는 사용자 정의 없이 대화를 생성하는 방법을 보여줍니다.

EXEC DBMS_CLOUD_AI.CREATE_CONVERSATION;

예: 사용자정의 속성을 사용하여 대화 생성

다음 예에서는 사용자 정의 매개변수(예: title, description, retention_daysconversation_length)로 대화를 생성하는 방법을 보여줍니다.

-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
               attributes => '{"title":"Conversation 1",
                               "description":"this is a description",
                               "retention_days":5,
                               "conversation_length":5}')
     AS conversation_id FROM dual;

CREATE_CONVERSATION 함수

이 함수는 대화를 생성하고 DBMS_CLOUD_AI.SET_CONVERSATION_IDDBMS_CLOUD_AI.GENERATE와 같은 다른 프로시저나 함수에서 사용할 수 있는 conversation_id를 반환합니다.

Oracle은 대화를 사용으로 설정하려면 conversation_id을 설정할 것을 권장합니다. 또는 DBMS_CLOUD_AI.GENERATE 함수에서 conversation_id를 설정할 수 있습니다.

주: DBMS_CLOUD_AI.CREATE_CONVERSATION 프로시저를 사용하는 경우 프로시저가 자동으로 설정하므로 conversation_id 설정을 건너뛸 수 있습니다.

구문

DBMS_CLOUD_AI.CREATE_CONVERSATION(
  attributes            IN CLOB DEFAULT NULL
) RETURN VARCHAR2;

매개변수

매개변수 설명
attributes

JSON 형식의 대화에 대한 속성입니다. 자세한 내용은 CREATE_CONVERSATION 속성을 참조하십시오.

기본값은 NULL입니다.

예: 대화 생성

다음 예에서는 DBMS_CLOUD_AI.CREATE_CONVERSATION 함수를 사용하여 사용자 정의 없이 대화를 생성하는 방법을 보여줍니다.

SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION FROM DUAL;

결과:

CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92

예: 사용자정의 속성을 사용하여 대화 생성

다음 예에서는 DBMS_CLOUD_AI.CREATE_CONVERSATION 함수를 사용하여 title, retention_daysconversation_length와 같은 속성을 지정하는 방법을 보여줍니다.

SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
				attributes => '{"title":"This is a test conversation",
                               "retention_days":7,
                               "conversation_length":20}')
FROM DUAL;

CREATE_CONVERSATION 속성

이러한 속성은 대화 컨텍스트를 관리하며 여기에는 대화 컨텍스트를 유지할 기간, 저장 또는 표시할 응답이 있는 프롬프트 수, 참조용 제목 및 설명과 같은 메타데이터가 포함됩니다. 일부 속성은 선택 사항이며 기본값을 가집니다.

속성

속성 이름 기본값 설명
title 새 대화 대화에 대한 사용자 지정 이름입니다. 제공하지 않을 경우 Select AI는 대화가 프롬프트와 함께 처음 사용될 때 LLM이 LLM을 생성하도록 합니다.
description NULL 대화의 목적 또는 컨텍스트를 요약하는 사용자 정의 설명을 제공합니다. 제공되지 않은 경우 LLM은 대화가 프롬프트와 함께 처음 사용될 때 하나를 생성하고 5번째 사용 시 다시 업데이트하여 더 정확하고 관련성이 높은 정보를 포함합니다.
retention_days 7 대화 내역을 보존할 일 수를 지정합니다. 생성일로부터 데이터베이스에 저장됩니다. 값을 생략하면 기본값인 7로 설정됩니다. 0으로 설정하면 사용자가 DBMS_CLOUD_AI.DROP_CONVERSATION 프로시저 또는 DBMS_CLOUD.DELETE_ALL_OPERATIONS('CONVERSATION')를 사용하여 수동으로 삭제할 때까지 대화가 유지됩니다.
conversation_length NULL

현재 프롬프트에 포함할 최근 프롬프트 및 응답 수를 지정합니다. 허용되는 최대값은 999입니다. DBMS_CLOUD_AI.GENERATE 함수에서 conversation_length 매개변수를 지정하거나 SELECT AI <ACTION> <PROMPT>를 사용하여 AI 프로파일에서 설정하여 이 값을 대체할 수 있습니다. conversation_length에 대해 다음 우선 순위 규칙을 적용합니다.

  1. DBMS_CLOUD_AI.GENERATE의 attributes 인수 값
  2. 대화의 값 세트는 다음 우선순위를 갖습니다.
  3. AI 프로파일에 정의된 값이 마지막 우선순위를 갖습니다.

conversation_length를 지정하지 않을 경우 기본값은 10입니다.

다음 예에서는 DBMS_CLOUD_AI.CREATE_CONVERSATION 프로시저에서 대화 속성을 사용자정의하는 방법을 보여줍니다.

-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
               attributes => '{"title":"Conversation 1",
                               "description":"this is a description",
                               "retention_days":5,
                               "conversation_length":5}')
     AS conversation_id FROM dual;

UPDATE_CONVERSATION 프로시저

이 프로시저는 지정된 대화 속성 값으로 기존 대화를 업데이트합니다.

구문

DBMS_CLOUD_AI.UPDATE_CONVERSATION(
    conversation_id    IN VARCHAR2,
    attributes         IN CLOB
);

매개변수

매개변수 설명
conversation_id

대화에 지정된 고유 번호입니다.

필수 매개변수입니다.

attributes JSON 형식의 대화에 대한 속성입니다. 자세한 내용은 CREATE_CONVERSATION 속성을 참조하십시오.

EXEC DBMS_CLOUD_AI.UPDATE_CONVERSATION(
conversation_id => '30C9DB6E-EA4E-AFBA-E063-9C6D46644B92',
attributes => '{"retention_days":20,
		"description":"This a sample description",
		"title":"Sample title",
		"conversation_length":20}');

SET_CONVERSATION_ID 프로시저

이 절차에서는 현재 대화를 지정된 ID로 설정합니다. 후속 프롬프트에는 대화의 구성된 속성을 기반으로 하는 기존 대화 프롬프트가 포함됩니다.

구문

DBMS_CLOUD_AI.SET_CONVERSATION_ID(
    conversation_id   IN VARCHAR2
);

매개변수

매개변수 설명
conversation_id

현재 세션의 대화에 지정된 고유 번호입니다.

이 매개변수는 필수입니다.

EXEC DBMS_CLOUD_AI.SET_CONVERSATION_ID('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');

GET_CONVERSATION_ID 함수

이 함수는 DBMS_CLOUD_AI.SET_CONVERSATION_ID 또는 DBMS_CLOUS_AI.CREATE_CONVERSATION 프로시저를 사용하여 세션에 현재 설정된 대화 ID를 반환합니다. 대화를 설정하지 않은 경우 함수는 NULL을 반환합니다. 대화를 삭제하면 세션에서도 대화가 지워집니다. CLEAR_CONVERSATION_ID 프로시저를 참조하십시오.

구문

DBMS_CLOUD_AI.GET_CONVERSATION_ID
RETURN VARCHAR2;

이 예에서는 현재 세션에서 설정된 대화 ID를 표시합니다.

SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID;

결과:

--------------------------------------------------------------------------------
30C9DB6E-EA4F-AFBA-E063-9C6D46644B92

CLEAR_CONVERSATION_ID 프로시저

이 절차에서는 SELECT AI <ACTION> <PROMPT>에 대한 대화 기능을 사용 안함으로 설정하기 위해 세션에서 설정된 대화 ID를 지웁니다. 대화를 설정하지 않은 경우 시스템에서 오류가 발생하지 않습니다.

구문

DBMS_CLOUD_AI.CLEAR_CONVERSATION_ID;

이 예에서는 세션에 현재 대화 ID를 표시하고, ID를 지우고, 변경 사항을 확인하는 방법을 보여줍니다.

-- A conversation id is set in the session
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID FROM dual;

GET_CONVERSATION_ID
--------------------------------------------------------------------------------
3A88BFF0-1D7E-B3B8-E063-9C6D46640ECD


-- Clear the conversation id
EXEC DBMS_CLOUD_AI.CLEAR_CONVERSATION_ID;

PL/SQL procedure successfully completed.


-- The conversation id is removed from the session
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID FROM dual;

GET_CONVERSATION_ID
--------------------------------------------------------------------------------

DELETE_CONVERSATION_PROMPT 프로시저

이 절차에서는 대화에서 특정 프롬프트를 제거합니다.

구문

DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT(
    conversation_prompt_id  IN VARCHAR2,
    force                   IN BOOLEAN DEFAULT FALSE
);

매개변수

매개변수 설명
conversation_prompt_id

대화의 프롬프트에 지정된 고유 번호입니다. 프롬프트 ID는 DBA/USER_CLOUD_AI_CONVERSATION_PROMPTS 뷰를 질의하여 찾을 수 있습니다. DBMS_CLOUD_AI 뷰를 참조하십시오.

필수 매개변수입니다.

force

TRUE인 경우 conversation_prompt_id가 없으면 프로시저에서 오류를 무시합니다.

이 매개변수의 기본값은 FALSE입니다.

EXEC DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT('30C9DB6E-EA61-AFBA-E063-9C6D46644B92');

DROP_CONVERSATION 프로시저

프로시저는 대화 및 연관된 모든 프롬프트와 연관된 응답을 제거합니다. 삭제하면 conversation_id가 잘못됩니다. 세션에서 설정된 동안 대화가 삭제되면 자동으로 지워집니다.

구문

DBMS_CLOUD_AI.DROP_CONVERSATION(
    conversation_id  IN VARCHAR2,
    force            IN BOOLEAN  DEFAULT FALSE
);

매개변수

매개변수 설명
conversation_id

대화에 지정된 고유 번호입니다.

필수 매개변수입니다.

force

TRUE인 경우 conversation_id가 존재하지 않을 경우 프로시저에서 오류를 무시합니다.

이 매개변수의 기본값은 FALSE입니다.

EXEC DBMS_CLOUD_AI.DROP_CONVERSATION('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');

결과:

PL/SQL procedure successfully completed.

FEEDBACK 프로시저

이 절차를 통해 Select AI에 피드백을 제공하여 잠재적으로 쿼리 생성 정확도를 향상시킬 수 있습니다. 텍스트 주석 또는 수정된 SQL query는 물론 긍정적 또는 부정적 피드백을 제공할 수 있습니다.

구문

DBMS_CLOUD_AI.FEEDBACK(
      profile_name      IN  VARCHAR2,
      sql_id            IN  DBMS_ID,
      feedback_type     IN  VARCHAR2 DEFAULT NULL,
      response          IN  CLOB DEFAULT NULL,
      feedback_content  IN  CLOB DEFAULT NULL,
      operation         IN  VARCHAR2 DEFAULT 'ADD'
  );

DBMS_CLOUD_AI.FEEDBACK(
      profile_name      IN  VARCHAR2,
      sql_text          IN  CLOB,
      feedback_type     IN  VARCHAR2 DEFAULT NULL,
      response          IN  CLOB DEFAULT NULL,
      feedback_content  IN  CLOB DEFAULT NULL,
      operation         IN  VARCHAR2 DEFAULT 'ADD'
  );

매개변수

매개변수 설명
profile_name

사용할 AI 프로파일을 지정합니다. profile_name를 제공하지 않을 경우 Select AI는 세션에 설정된 기본 프로파일을 사용합니다.

필수 매개변수입니다.

sql_id

SQL 질의를 식별합니다. 하나의 sql_id에는 피드백 항목이 하나만 포함될 수 있습니다.

필수 매개변수입니다.

sql_text

SQL 질의의 전체 텍스트를 포함합니다.

필수 매개변수입니다.

feedback_type

피드백 유형을 지정합니다. 사용 가능한 값은 다음과 같습니다.

  • positive: 생성된 SQL을 적용합니다.
  • negative: 질의에서 오류를 식별하여 필요한 SQL 질의 개선사항을 제공합니다.

주: DBMS_CLOUD_AI.FEEDBACK 프로시저를 사용하면 sql_id 또는 sql_text를 지정할 수 있으므로 feedback_type가 필요한 반면, feedback 작업을 사용하는 경우 LLM은 피드백 유형을 동적으로 결정하거나 해석합니다.

operationadd인 경우 필수 매개변수입니다.

response

사용자가 예상하는 올바른 SQL 질의 결과를 나타냅니다.

operationadd이고 feedback_typenegative인 경우 필수 매개변수입니다.

feedback_content 사용자의 자연어 피드백을 수집합니다. 이 매개변수를 response와 함께 사용할 수 있습니다.
operation

수행할 작업을 지정합니다. 허용되는 값은 다음과 같습니다.

  • add(기본값): feedback_type를 지정하여 피드백을 추가합니다.
  • delete: sql_id를 제공하여 피드백을 삭제합니다.

예제: 추가 또는 삭제 작업을 사용하여 생성된 SQL에 대한 피드백 제공

다음 예제는 DBMS_CLOUD_AI.FEEDBACK 프로시저를 사용하여 프로시저의 매개변수를 지정함으로써 생성된 SQL을 수락하거나 개선하는 방법을 보여줍니다.

EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   feedback_type=>'positive',
                                   operation=>'add');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_text=> 'select ai showsql how many movies',
                                   feedback_type=> 'negative',
                                   response=>'SELECT SUM(1) FROM "ADB_USER"."MOVIES"',
                                   feedback_content=>'Use SUM instead of COUNT');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   operation=>'delete');

FEEDBACK에 대한 벡터 인덱스

Select AI는 피드백 기능을 처음 사용할 때 기본 속성으로 <*profile_name*>_FEEDBACK_VECINDEX이라는 기본 벡터 인덱스를 생성합니다.

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX 프로시저를 사용하여 similarity_thresholdmatch_limit와 같은 속성을 수정할 수 있습니다. 이 인덱스는 제공된 피드백을 기반으로 나중에 생성된 SQL을 세분화하는 데 도움이 됩니다. 연관된 AI 프로파일이 삭제되면 이 테이블이 삭제됩니다. <profile_name>_FEEDBACK_VECINDEX도 삭제할 수 있습니다. 이 경우 Select AI는 더 이상 피드백을 runsql, showsqlexplainsql 작업에 대한 힌트로 사용하지 않습니다. 그러나 AI 선택 피드백 기능을 사용하여 새 피드백을 제출하는 경우 Select AI가 자동으로 새 피드백 벡터 인덱스를 생성합니다.

주: feedback에 대한 match_limit의 기본값은 3입니다.

벡터 테이블 이름

<profile_name>_FEEDBACK_VECINDEX$VECTAB 테이블에는 다른 매개변수와 함께 사용자 피드백의 벡터 표현(임베딩)이 포함되어 있습니다. Select AI는 시간이 지남에 따라 SQL 생성을 개선하기 위해 사용합니다.

매개변수

설명
attributes FEEDBACK Procedure에 따라 JSON 객체 속성을 포함합니다.
content 사용자 프롬프트를 포함합니다.
embedding 사용자 프롬프트의 벡터 표현(임베딩)을 포함합니다.

다음 예제는 자동으로 생성된 벡터 인덱스 테이블을 사용하여 피드백을 질의하고 제공하는 방법을 보여줍니다.

SQL> select content, attributes from OCI_FEEDBACK1_FEEDBACK_VECINDEX$VECTAB where JSON_VALUE(attributes, '$.sql_text') = 'select ai showsql how many movies';
CONTENT
----------------------------------------------------------------------------------------------------
how many movies
ATTRIBUTES
----------------------------------------------------------------------------------------------------

{"response":"SELECT SUM(1) FROM "ADB_USER"."MOVIES"","feedback_type":"negative","sql_id":null,"sql_text":"select ai showsql how many movies","feedback_content":null}
DBMS_CLOUD_AI.feedback Procedure(Positive Feedback)

SUMMARIZE 함수

이 함수는 매개변수로 제공하는 사용자 정의 옵션에 따라 내용을 요약합니다.

구문

DBMS_CLOUD_AI.SUMMARIZE(
  content         IN  CLOB     DEFAULT NULL,
  credential_name IN  VARCHAR2 DEFAULT NULL,
  location_uri    IN  VARCHAR2 DEFAULT NULL,
  profile_name    IN  VARCHAR2 DEFAULT NULL,
  user_prompt     IN  CLOB     DEFAULT NULL,
  params          IN  CLOB     DEFAULT NULL
) RETURN CLOB;

매개변수

매개변수 설명
content

요약할 텍스트를 지정합니다. content 또는 location_uri를 지정해야 합니다.

필수 매개변수가 아닙니다.

credential_name

객체 저장소로 인증하는 데 사용되는 인증서 객체를 식별합니다. `DBMS_CLOUD.CREATE_CREDENTIAL`을 사용하여 이 인증서를 생성해야 합니다.

주: `location_uri`를 제공할 때만 이 매개변수를 사용하십시오.

location_uri

텍스트가 저장되는 URI 또는 로컬 파일의 경로를 제공합니다. content 또는 location_uri를 지정해야 합니다.

예:

오브젝트 스토리지: https://objectstorage.ca-toronto-1.oraclecloud.com/n/namespace-string/b/bucketname/o/data_folder/summary/test_file.txt

로컬 파일: summary_gobject:test_file.txt

profile_name

사용할 AI 프로파일을 지정합니다. profile_name를 제공하지 않을 경우 Select AI는 세션에 설정된 기본 프로파일을 사용합니다. 기본 프로파일이 설정되지 않은 경우 ORA-20046: AI 프로파일이 세션에서 사용으로 설정되지 않은 오류를 반환합니다.

기본값은 NULL입니다.

user_prompt

요약을 안내하거나 사용자 정의하는 자연어 프롬프트를 제공합니다. 요약 매개변수 이외의 추가 지침을 포함할 수 있습니다.

예를 들어, 요약은 ''로 시작해야 합니다. 문서의 요약은 '''입니다.

이 매개변수는 필수가 아닙니다.

params 요약 매개변수를 정의합니다. SUMMARIZE Parameters를 참조하십시오.

탐색하려면 예제: AI 요약 선택을 참조하십시오.

SUMMARIZE 매개변수

이러한 속성은 사용자정의 매개변수를 사용하여 요약 생성을 관리합니다. 일부 속성은 선택 사항이며 기본값을 가집니다.

속성

속성 이름 기본값 설명
min_words 0

생성된 요약에 포함해야 하는 대략적인 최소 단어 수를 지정합니다.

주: 이 매개변수는 엄격한 제한이 아닌 지침 역할을 합니다. 요약의 실제 길이는 제공된 콘텐츠 및 모델의 해석에 따라 다를 수 있습니다.

max_words 200

생성된 요약에 포함될 것으로 예상되는 대략적인 최대 단어 수를 지정합니다.

주: 이 매개변수는 엄격한 제한이 아닌 지침으로 작동하며, 실제 요약 길이는 제공된 콘텐츠 및 모델의 해석에 따라 다를 수 있습니다.

summary_style 단락

요약에 대한 형식 스타일을 지정합니다. 다음은 사용 가능한 요약 형식 옵션입니다.

  • paragraph: 요약은 하나 이상의 단락에 표시됩니다.
  • list: 요약은 텍스트의 키 포인트 목록입니다.

chunk_processing_method map_reduce

텍스트가 LLM이 처리할 수 있는 토큰 한도를 초과할 경우 관리 가능한 청크로 분할해야 합니다. 이 매개변수를 사용하면 이러한 청크 처리 방법을 선택할 수 있습니다. 다음 옵션이 제공됩니다.

  • iterative_refinement
  • map_reduce

자세한 내용은 Select AI Terminology를 참조하십시오.

extractiveness_level low 요약이 입력의 원래 표현을 얼마나 가깝게 따르는지 결정합니다. 이 컨트롤은 모델이 추출하는 정도와 다시 삽입하는 정도를 제어합니다. 다음과 같은 옵션이 있습니다.
  • High: 요약은 원래 구문에 가깝게 유지되며 가능한 경우 문장과 표현식을 재사용합니다.
  • Medium: 추출 및 구문 분석의 균형 잡힌 조합입니다.
  • Low: 정확한 구문이 아닌 의미에 초점을 맞춰 입력을 더 자유롭게 읽고 재구성하거나 단순화할 수 있습니다.

주: 이 설정은 모델의 요약 동작에 대한 지침으로 사용되며 엄격한 규칙은 적용되지 않습니다. 요약의 실제 스타일 및 표현은 입력 내용 및 모델 결정에 따라 달라질 수 있습니다.

TRANSLATE 함수

이 기능을 사용하면 텍스트를 지정된 target_language로 변환할 수 있습니다.

함수에 source_languagetarget_language 매개변수를 제공하거나 사용자의 AI 프로파일에서 가져올 수 있습니다. AI 프로파일에 source_language 속성이 포함되지 않은 경우 생성형 AI 제공자가 입력 언어를 자동으로 감지합니다. target_language 속성이 누락된 경우 Select AI가 오류를 반환합니다.

구문

DBMS_CLOUD_AI.TRANSLATE(
   profile_name      IN VARCHAR2,
   text              IN CLOB,
   source_language   IN VARCHAR2 DEFAULT NULL,
   target_language   IN VARCHAR2 DEFAULT NULL
) RETURN CLOB;

매개변수

매개변수 설명
profile_name

사용할 AI 프로파일을 지정합니다.

필수 매개변수가 아닙니다.

text

번역할 텍스트를 지정합니다.

필수 매개변수입니다.

source_language 입력 텍스트의 언어
target_language 텍스트가 번역되는 언어입니다.

탐색하려면 예제: AI 번역 선택을 참조하십시오.

관련 콘텐츠

Select AI를 사용하여 자연어 프롬프트에서 SQL 생성