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

전용 Exadata 인프라의 자율운영 AI 데이터베이스 Select AI를 사용하면 자연어로 데이터를 쿼리할 수 있습니다.

자율운영 AI 데이터베이스는 Select AI 기능을 통해 생성형 AI와 대규모 언어 모델(LLM)을 함께 사용하여 사용자의 입력 텍스트를 Oracle SQL로 변환할 수 있습니다. Select AI는 자연어 프롬프트를 처리하고, 메타데이터가 포함된 프롬프트를 보완하고, SQL 쿼리를 생성 및 실행합니다.

지원되는 플랫폼을

Select AI는 Autonomous AI Database 서버리스 및 Autonomous AI Database의 전용 Exadata Infrastructure 및 Cloud at Customers에서 지원됩니다.

  • 자율운영 AI Database 서버리스
  • 전용 Exadata 인프라에서 자율운영 AI 데이터베이스
  • 자율운영 AI 데이터베이스 전용 Exadata 인프라 리전
  • 자율운영 AI 데이터베이스 Cloud@Customer

SQL 생성 정보

이제 자연어를 사용하여 데이터베이스 데이터와 상호 작용할 수 있게 되었습니다. 즉, 일반 영어와 같은 자연어를 사용하여 데이터베이스를 query할 수 있습니다.

Select AI를 사용하는 경우 Autonomous AI Database는 자연어를 SQL로 변환하는 프로세스를 관리합니다. 즉, SQL 코드 대신 자연어 프롬프트를 제공하여 데이터와 상호 작용할 수 있습니다. Select AI는 SQL 사용자 및 개발자를 위한 생산성 도구 역할을 하며, 비전문가 SQL 사용자가 데이터 구조 또는 기술 언어를 이해할 필요 없이 데이터에서 유용한 인사이트를 도출할 수 있도록 지원합니다.

Autonomous AI DatabaseDBMS_CLOUD_AI 패키지를 사용하면 자연어 프롬프트를 사용하여 SQL 코드를 생성하기 위해 사용자 지정 LLM과 통합할 수 있습니다. 이 패키지는 LLM에 데이터베이스 스키마에 대한 지식을 제공하고 해당 스키마와 일치하는 SQL 쿼리를 작성하도록 지시합니다. DBMS_CLOUD_AI 패키지는 OpenAI, Cohere, Azure OpenAI Service, Oracle Cloud Infrastructure Generative AI와 같은 AI 제공업체와 함께 작동합니다.

주:

사용자는 AI 제공자가 포함된 계정을 가지고 있어야 하며 Autonomous AI Database에서 사용하는 DBMS_CLOUD_AI 객체를 통해 자격 증명을 제공해야 합니다.

용어

사용하기 전에 Select AI와 함께 사용되는 다양한 용어를 이해하는 것이 중요합니다.

다음은 AI 선택 기능과 관련된 용어입니다.

용어 정의

데이터베이스 인증서

데이터베이스 인증서는 데이터베이스에 액세스하고 데이터베이스와 상호 작용하는 데 사용되는 인증 인증서입니다. 일반적으로 사용자 이름과 암호로 구성되며 때로는 보안 토큰과 같은 추가 인증 요소로 보완됩니다. 이러한 인증서는 응용 프로그램이나 유저와 데이터베이스 간에 보안 연결을 설정하는 데 사용되며, 권한이 부여된 개인이나 시스템만 데이터베이스 내에 저장된 데이터에 액세스하고 조작할 수 있도록 합니다.

LLM에서 환각

대형 언어 모델의 맥락에서 환각은 모델이 입력 프롬프트와 관련이 없거나, 비의미하거나, 관련이 없는 텍스트를 생성하는 현상입니다. 모델이 일관된 텍스트를 생성하려고 시도한 결과에도 불구하고 이러한 인스턴스에는 제작, 오도 또는 순전히 상상력이 있는 정보가 포함될 수 있습니다. 환각은 훈련 데이터의 편향, 적절한 맥락 이해의 부족 또는 모델의 훈련 과정의 제한으로 인해 발생할 수 있습니다.

IAM Oracle Cloud Infrastructure Identity and Access Management(IAM)를 사용하면 클라우드 리소스에 접근할 수 있는 사용자를 제어할 수 있습니다. 사용자 그룹이 갖는 액세스 유형 및 특정 리소스에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 ID 및 액세스 관리 개요를 참조하십시오.

자연어 프롬프트

자연어 프롬프트는 사람이 읽을 수 있는 지침 또는 대규모 언어 모델과 같은 생성형 AI 모델을 안내하기 위한 요청입니다. 사용자는 특정 프로그래밍 언어 또는 명령을 사용하는 대신 보다 대화형 또는 자연어 형식으로 프롬프트를 입력하여 이러한 모델과 상호 작용할 수 있습니다. 그런 다음 제공된 프롬프트를 기반으로 출력을 생성합니다.

네트워크 액세스 제어 목록(ACL)

네트워크 액세스 제어 목록은 라우터, 방화벽 또는 게이트웨이와 같은 네트워크 장치를 통과할 수 있는 네트워크 트래픽을 정의하는 규칙 또는 권한 세트입니다. ACL은 IP 주소, 포트 번호 및 프로토콜과 같은 다양한 조건에 따라 수신 및 송신 트래픽을 제어하고 필터링하는 데 사용됩니다. 관리자는 무단 액세스, 잠재적 공격 및 데이터 침해를 방지하기 위해 네트워크 트래픽을 관리하고 제한할 수 있으므로 네트워크 보안에서 중요한 역할을 합니다.

유사성 검색

유사성 검색은 벡터 저장소의 피쳐 벡터를 비교하여 지정된 질의와 거의 일치하는 데이터 포인트를 식별하고 검색합니다.

벡터 거리에서

벡터 거리는 다차원 공간에서 피쳐 벡터 사이의 거리를 계산하여 피쳐 벡터 간의 유사성 또는 유사성을 측정합니다.

벡터 인덱스

벡터 인덱스는 피쳐 벡터를 구성 및 저장하여 관련 데이터의 효율적인 유사성 검색 및 검색을 가능하게 합니다.

벡터 스토어

벡터 저장소에는 벡터 임베딩과 관련된 의미상 유사성 검색을 저장, 관리 및 지원하는 시스템이 포함됩니다. 여기에는 독립형 벡터 데이터베이스 및 Oracle Database 23ai AI Vector Search가 포함됩니다.

사용법 지침

향상된 사용자 경험을 보장하기 위해 SQL 생성을 위한 자연어 프롬프트를 효과적이고 적절하게 사용하는 사용 지침을 제공합니다.

용도

이 기능은 사용자가 제공한 자연어 프롬프트로 인해 발생하는 SQL 쿼리를 생성하고 실행하기 위한 것입니다. 또한 사용자가 선택한 대규모 언어 모델(LLM)과 함께 스키마 메타데이터를 기반으로 수동으로 수행할 수 있는 작업을 자동화합니다.

SQL 쿼리 결과의 운용과 관련이 없는 프롬프트를 포함하여 모든 프롬프트를 제공할 수 있지만 Select AI는 SQL 쿼리 생성에 중점을 둡니다. AI를 선택하면 chat 작업을 사용하여 일반 요청을 제출할 수 있습니다.

프롬프트 보강 데이터

데이터베이스는 LLM의 환각을 완화하기 위해 데이터베이스 메타데이터로 사용자 지정 프롬프트를 보완합니다. 그런 다음 증강 프롬프트가 사용자 지정 LLM으로 전송되어 질의를 생성합니다.

데이터베이스는 스키마 메타 데이터로만 프롬프트를 보강합니다. 이 메타 데이터에는 스키마 정의, 테이블 및 열 설명, 데이터 딕셔너리 및 카탈로그에서 사용할 수 있는 컨텐트가 포함될 수 있습니다. SQL 생성을 위해 데이터베이스는 프롬프트를 보강할 때 테이블 또는 뷰 컨텐트(실제 행 또는 열 값)를 제공하지 않습니다.

그러나 narrate 작업은 질의 결과를 설명하는 자연어 텍스트를 생성할 수 있는 사용자 지정 LLM에 데이터베이스 데이터를 포함할 수 있는 질의 결과를 제공합니다.

경고:

대규모 언어 모델(LLM)은 일반적으로 인터넷을 통해 광범위한 텍스트 문서 및 콘텐츠 세트에 대해 교육을 받았습니다. 결과적으로 LLM은 SQL 주입(Injection)을 포함하여 유효하지 않거나 악의적인 컨텐트의 패턴을 통합할 수 있습니다. 따라서 LLM은 유용하고 관련성이 높은 콘텐츠를 생성하는 데 능숙하지만 부정확한 결과를 생성하거나 데이터의 보안을 손상시키는 SQL 쿼리를 포함한 부정확하고 잘못된 정보를 생성할 수도 있습니다.

사용자 지정 LLM 제공자가 사용자를 대신하여 생성한 질의가 데이터베이스에서 실행됩니다. 귀하가 본 기능을 사용하는 것은 전적으로 귀하의 책임이며 Oracle이 제공하는 서비스와 관련된 기타 조항 및 조건에도 불구하고 해당 위험을 수락하고 그 사용으로 인해 발생하는 모든 손해에 대해 Oracle의 책임 또는 책임을 명시적으로 배제합니다.

AI 제공자 및 LLM 선택

보안 표준을 충족하고 텍스트 또는 코드 생성과 같은 특정 요구 사항에 부합하는 AI 제공업체 및 LLM을 선택할 수 있습니다.

서로 다른 LLM은 학습 데이터 및 의도된 목적에 따라 다양한 작업에서 탁월합니다. 일부 모델은 텍스트 생성에 탁월하지만 코드 생성에서 제대로 수행되지 않을 수 있으며, 다른 모델은 코딩 작업에 최적화되어 있습니다. 귀사의 니즈에 가장 적합한 LLM을 선택할 수 있습니다.

AI 제공자 LLM RAG에 모델 포함 용도

OCI 생성형 AI

  • meta.llama-3.3-70b-instruct(기본값)
  • meta.llama-3.2-90b-비전-강사
  • meta.llama-3.2-11b-비전-강사
  • meta.llama-3.1-70b-instruct
  • meta.llama-3.1-405b-instruct
  • cohere.command-r-08-2024
  • cohere.command-r-plus-08-2024
  • cohere.command-r-16k(사용되지 않음)
  • cohere.command–r-plus(사용되지 않음)
  • xai.grok-3
  • xai.grok-3-fast
  • xai.grok-3-mini
  • xai.grok-3-mini-fast
  • cohere.embed-english-v3.0(기본값)
  • cohere.embed-다국어-v3.0
  • cohere.embed-엔글리시 라이트-v3.0
  • cohere.embed-다국어-light-v3.0

생성형 AI에 모델 포함 정보를 참조하십시오.

OCI 생성형 AI 채팅 모델은 runsql, showsql, explainsql, narrate, chat 등의 모든 SELECT AI 작업에 지원됩니다.

OCI 텍스트 생성 모델은 SELECT AI chat 작업에 대해서만 지원됩니다.

프로파일 속성을 구성하려면 를 참조하십시오.

Azure OpenAI 서비스

  • GPT-4o
  • GPT-4
  • 비전이 있는 GPT-4 터보
  • GPT-3.5-터보

텍스트 포함 -ada-002

자연어 프롬프트, chat 작업 및 Select AI RAG에서 SQL을 생성하는 데 가장 적합합니다.

OpenAI

  • gpt-3.5-turbo(기본값)
  • gpt-4o
  • gpt-4o-미니
  • gpt-4
  • gpt-4-0613
  • gpt-4-32k
  • gpt-4-32k-0613
  • gpt-3.5-turbo-0613
  • gpt-3.5-turbo-16k
  • gpt-3.5-turbo-16k-0613

텍스트 포함 -ada-002

자연어 프롬프트, chat 작업 및 Select AI RAG에서 SQL을 생성하는 데 가장 적합합니다.

OpenAI 호환 가능

OpenAI 호환 제공자의 모델:
  • 불꽃놀이 AI
  • xAI
  • 다른 사람
OpenAI-compaitble 제공자의 모델 포함. 예를 들어, Fireworks AI 임베딩 모델을 참조하십시오.

광범위한 사용 사례를 지원합니다.

Cohere

  • 명령(기본값)
  • command-nightly(실험적)
  • 명령-r
  • 명령-r-plus
  • 명령 라이트
  • command-light-nightly (실험적)
  • 사용자 정의 모델

embed-english-v2.0

chat 작업에 가장 적합합니다.

Google

  • gemini-1.5-flash(기본값)
  • gemini-1.5-pro
  • gemini-1.0-pro
text-embedding-004(기본값)

자연어 프롬프트, chat 작업 및 Select AI RAG에서 SQL을 생성하는 데 가장 적합합니다.

인류학

  • claude-3-5-sonnet-20240620(기본값)
  • claude-3-opus-20240229
  • claude-3-sonnet-20240229
  • claude-3-하이쿠-20240307
NA

자연어 프롬프트, chat 작업 및 Select AI RAG에서 SQL을 생성하는 데 가장 적합합니다.

Hugging Face

  • Mixtral-8x7B-Instruct-v0.1(기본값)
  • Meta-Llama-3-70B-강사
  • Qwen1.5-1.8B
  • 기타 채팅 모델
NA

자연어 프롬프트, chat 작업 및 Select AI RAG에서 SQL을 생성하는 데 가장 적합합니다.

AWS

  • amazon.titan-embed-text-v1
  • amazon.titan-embed-text-v2:0
  • cohere.embed-영어-v3

광범위한 사용 사례를 지원합니다.

주:

  • provider 매개변수 대신 provider_endpoint를 통해 OpenAI 호환 제공자를 지정합니다. 여기를 참조하십시오.

  • 이미지를 허용하는 모델의 경우 meta.llama-3.2-90b-vision-instruct를 사용합니다. 이 모델은 시각과 이미지를 위해 특별히 훈련되었습니다. 텍스트 및 SQL 생성에 사용할 수 있지만 이 모델은 이미지에 가장 적합합니다. 자세한 내용은 OCI Generative AI에서 채팅하기를 참조하세요.

    meta.llama-3.2-11b-vision-instruct 모델은 강력한 멀티모달 기능을 제공합니다.

  • 임베딩 모델은 변압기 모델이라고도 합니다.

AI 개념 선택

Select AI와 관련된 개념과 용어를 살펴봅니다.

SQL 생성 정보

이제 자연어를 사용하여 데이터베이스 데이터와 상호 작용할 수 있는 LLM을 사용할 수 있습니다. 즉, 일반 영어와 같은 자연어를 사용하여 데이터베이스를 질의할 수 있습니다.

Select AI를 사용하는 경우 Autonomous AI Database는 자연어를 SQL로 변환하는 프로세스를 관리합니다. 즉, SQL 코드 대신 자연어 프롬프트를 제공하여 데이터와 상호 작용할 수 있습니다. Select AI는 SQL 사용자 및 개발자를 위한 생산성 도구 역할을 하며, 비전문가 SQL 사용자가 데이터 구조 또는 기술 언어를 이해할 필요 없이 데이터에서 유용한 인사이트를 도출할 수 있도록 지원합니다.

Autonomous AI DatabaseDBMS_CLOUD_AI 패키지를 사용하면 자연어 프롬프트를 사용하여 SQL 코드를 생성하기 위해 사용자 지정 LLM과 통합할 수 있습니다. 이 패키지는 LLM에 데이터베이스 스키마에 대한 지식을 제공하고 해당 스키마와 일치하는 SQL 쿼리를 작성하도록 지시합니다. DBMS_CLOUD_AI 패키지는 OpenAI, Cohere, Azure OpenAI Service, Oracle Cloud Infrastructure Generative AI와 같은 AI 제공업체와 함께 작동합니다.

주:

사용자는 AI 제공자가 포함된 계정을 가지고 있어야 하며 Autonomous AI Database에서 사용하는 DBMS_CLOUD_AI 객체를 통해 자격 증명을 제공해야 합니다.

DBMS_CLOUD_AI를 사용하여 AI 프로파일 구성

자율운영 AI 데이터베이스는 AI 프로파일을 사용하여 LLM에 대한 액세스를 용이하게 및 구성하고 자연어 프롬프트에서 SQL 문을 생성하도록 설정합니다.

AI 프로파일에는 자연어 쿼리의 대상인 데이터베이스 객체가 포함됩니다. 이러한 대상에서 사용되는 메타 데이터에는 데이터베이스 테이블 이름, 열 이름, 열 데이터 유형 및 주석이 포함될 수 있습니다. DBMS_CLOUD_AI.CREATE_PROFILEDBMS_CLOUD_AI.SET_PROFILE 절차를 사용하여 AI 프로파일을 만들고 구성합니다.

DBMS_CLOUD_AI 패키지 구성 요구 사항

DBMS_CLOUD_AI를 실행하려면 다음이 필요합니다.

  • Oracle Cloud Infrastructure 클라우드 계정 및 자율운영 AI 데이터베이스 인스턴스에 액세스합니다.
  • 지원되는 AI 공급자에 대한 유료 API 계정은 다음 중 하나입니다.
    • OpenAI: 자연어 프롬프트에서 SQL을 생성하기 위해 OpenAI를 사용으로 설정하려면 OpenAI 유료 계정에서 API 키를 가져옵니다.

      보안 API 키는 사용자 설정에서 찾을 수 있습니다.

    • Cohere: Cohere가 자연어 프롬프트에서 SQL을 생성할 수 있도록 하려면 Cohere 유료 계정에서 API 키를 받습니다.

      대시보드를 누르고 왼쪽 탐색에서 API 키를 누릅니다. 기본 API 키를 복사하거나 다른 키를 생성합니다. 자세한 내용은 API-Keys를 참조하십시오.

    • Azure OpenAI 서비스: 자연어 프롬프트에서 SQL을 생성하기 위해 Azure OpenAI 서비스를 사용으로 설정하려면 AI 제공자를 구성하고 액세스 권한을 제공합니다.

      Azure OpenAI Service를 사용하려면 다음 단계를 수행합니다.

      1. 보안 API 키를 얻습니다. API 키는 Azure 포털의 Resource Management 섹션에서 찾을 수 있습니다. Azure OpenAI 서비스 리소스 페이지에서 키 및 끝점을 누릅니다. KEY1 또는 KEY2를 복사할 수 있습니다.
      2. Azure OpenAI 서비스 리소스를 생성하고 Azure OpenAI 서비스 리소스 생성 및 배포 모델을 배포합니다.

        참고:

        • 이러한 매개변수는 네트워크 액세스 권한을 제공하고 DBMS_CLOUD_AI.CREATE_PROFILE 프로시저를 사용하여 Azure OpenAI Service 프로파일을 만드는 데 사용되므로 리소스 이름과 배포 이름을 확인합니다.
        • 모델에서 분당 토큰의 비율 제한에 대해 자세히 알아보려면 Azure OpenAI 서비스 할당량 및 제한을 참조하십시오.
      3. Azure OpenAI 서비스에 대한 액세스 허용:
        • 암호 API 키를 사용하여 Azure OpenAI 서비스에 대한 액세스를 허용할 수 있습니다. 자세한 내용은 의 예를 참조하십시오.
    • OCI Generative AI: How to Generate the API Signing Key을 참조하십시오.
    • Google: Google AI Studio가 자연어 프롬프트에 대한 SQL 및 텍스트 응답을 생성할 수 있도록 하려면 Google AI Studio 유료 계정에서 API 키를 가져옵니다.
      1. Google AI Studio로 이동합니다.
      2. Sign In to Google AI Studio를 누릅니다.
      3. 프롬프트 화면에서 Get API key를 누릅니다.
      4. 다음 페이지에서 적용 가능한 모든 옵션을 선택합니다.
      5. Create API key를 누릅니다.
      6. 새 프로젝트에서 [API 키 생성]을 누릅니다.

        화면에 진행률이 표시되고 API 키가 생성됩니다. 키를 복사하고 저장합니다.

    • Anthropic: Anthropic Developer Console이 자연어 프롬프트에 대한 SQL 및 텍스트 응답을 생성할 수 있도록 하려면 Anthropic Developer Console 유료 계정에서 API 키를 얻습니다.
      1. Anthropic Developer Console로 이동합니다.
      2. 아직 계정이 없으면 계정을 만드세요.
      3. 로그인한 후 API 섹션 또는 대시보드로 이동합니다.
      4. API 키를 생성하거나 볼 수 있는 옵션을 찾습니다.
      5. 새 API 키를 생성하려면 누릅니다.
      6. 생성된 API 키를 복사하여 저장합니다.

        Claude API는 유료 서비스입니다. API 키를 사용하려면 먼저 계정에 크레딧을 추가해야 합니다.

    • Hugging Face: AI 제공자로서 Hugging Face가 자연어 프롬프트에 대한 SQL 및 텍스트 응답을 생성할 수 있도록 하려면 Hugging Face 유료 계정에서 API 키를 가져옵니다.
      1. Hugging Face로 이동합니다.
      2. 아직 계정이 없으면 계정을 만드세요.
      3. 계정 설정으로 이동합니다.
      4. 탐색 메뉴에서 액세스 토큰을 찾습니다.
      5. 새 API 키를 생성하려면 누릅니다.
      6. 생성된 API 키를 복사하여 저장합니다.
    • AWS: AWS를 사용으로 설정하려면 API 키 및 모델 ID를 가져옵니다.

      API 키를 가져와서 DBMS_CLOUD.CREATE_CREDENTIAL를 통해 인증서를 생성하는 데 사용합니다.

      이 프로세스에 따라 API 키 및 모델 이름을 가져옵니다.

      1. 아직 AWS 계정이 없는 경우 AWS 계정에 가입하십시오.
      2. AWS Bedrock Console에서 액세스 키와 암호 키를 생성합니다.
      3. 생성된 키를 복사하여 저장합니다.
      4. 기초 모델에 대한 액세스를 요청합니다. Amazon Bedrock 기반 모델에 액세스를 참조하십시오.
      5. 모델 ID를 가져옵니다. DBMS_CLOUD_AI.CREATE_PROFILE 프로시저에서 모델 ID가 필요합니다. 모델 ID는 사용하는 리소스에 따라 다릅니다. 사용하는 경우:

        주:

        임포트된 모델은 Bedrock Converse API에서 지원되지 않습니다.

      AWS를 제공자로 사용하려면 예제: AWS와 함께 AI 선택을 참조하십시오.

  • 외부 AI 제공자에 액세스할 수 있는 네트워크 ACL 권한입니다.

    주:

    OCI Generative AI에는 네트워크 ACL을 적용할 수 없습니다.
  • AI 제공자에 대한 액세스를 제공하는 인증서입니다.

DBMS_CLOUD_AI 패키지 구성

Select AI를 사용하기 전에 DBMS_CLOUD_AI을 사용으로 설정하는 단계가 있습니다.

DBMS_CLOUD_AI를 구성하려면 다음과 같이 합니다.
  1. Select AI를 사용하려는 사용자에게 DBMS_CLOUD_AI 패키지에 대한 EXECUTE 권한을 부여합니다.

    기본적으로 ADMIN 사용자에게만 EXECUTE 권한이 부여됩니다. ADMIN 사용자는 다른 사용자에게 EXECUTE 권한을 부여할 수 있습니다.

  2. Select AI 및 AI 공급자 끝점을 사용하려는 사용자에게 네트워크 ACL 액세스 권한을 부여합니다.

    ADMIN 사용자는 네트워크 ACL 액세스 권한을 부여할 수 있습니다. 자세한 내용은 Oracle Database 19c PL/SQL Packages and Types ReferenceAPPEND_HOST_ACE Procedure 또는 Oracle Database 26ai PL/SQL Packages and Types Reference를 참조하십시오.

  3. AI 제공자에 대한 액세스를 사용으로 설정할 인증서를 생성합니다.

    자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.

다음 예에서는 EXECUTE 권한을 ADB_USER에 부여합니다.
grant execute on DBMS_CLOUD_AI to ADB_USER;

다음 예에서는 ADB_USERapi.openai.com 끝점을 사용할 수 있는 권한을 부여합니다.

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;
/

APPEND_HOST_ACE 함수 매개변수

매개변수 설명

host

호스트 - 호스트의 이름 또는 IP 주소일 수 있습니다. 와일드카드를 사용하여 도메인 또는 IP 서브넷을 지정할 수 있습니다. 호스트 또는 도메인 이름은 대소문자를 구분하지 않습니다.

OpenAI의 경우 api.openai.com를 사용합니다.

Cohere의 경우 api.cohere.ai를 사용합니다.

Azure OpenAI Service의 경우 <azure_resource_name>.openai.azure.com를 사용합니다. azure_resource_name에 대한 자세한 내용은 프로파일 속성을 참조하십시오.

Google의 경우 generativelanguage.googleapis.com를 사용합니다.

Anthropic의 경우 api.anthropic.com를 사용합니다.

Hugging Face의 경우 api-inference.huggingface.co를 사용합니다.

ace

액세스 제어 항목(ACE)입니다. ACL에 대한 각 ACE 항목을 생성하기 위해 XS$ACE_TYPE 유형이 제공됩니다. 자세한 내용은 Oracle Database 19c Real Application Security Administrator's and Developer's Guide 또는 Oracle Database 26ai Real Application Security Administrator's and Developer's GuideCreating ACLs and ACEs를 참조하십시오.

다음은 OpenAI에 대한 액세스를 사용으로 설정하기 위해 인증서를 생성하는 방법의 예입니다.

EXEC DBMS_CLOUD.CREATE_CREDENTIAL('OPENAI_CRED', 'OPENAI', 'your_api_token');

DBMS_CLOUD.CREATE_CREDENTIAL 매개변수

매개변수 설명

credential_name

저장할 인증서의 이름입니다. credential_name 매개변수는 공백이나 하이픈을 허용하지 않는 Oracle 객체 이름 지정 규칙을 준수해야 합니다.

username

usernamepassword 인수는 AI 제공자 인증서를 함께 지정합니다.

username은 사용자가 지정한 사용자 이름입니다.

password

usernamepassword 인수는 AI 제공자 인증서를 함께 지정합니다.

password은 AI 제공자 보안 API 키로, 제공자에 따라 다릅니다. 예: OpenAI, Cohere, Azure OpenAI Service, OCI, Google, Anthropic, Hugging Face. 자세한 내용은 Requirements to Configure DBMS_CLOUD_AI Package을 참조하십시오.

AI 프로파일 만들기 및 설정

AI 프로파일을 만들고 사용으로 설정하는 단계를 설명합니다.

DBMS_CLOUD_AI.CREATE_PROFILE를 사용하여 AI 프로파일을 만듭니다. 다음으로 DBMS_CLOUD_AI.SET_PROFILE를 시작하여 자연어 프롬프트와 함께 SELECT AI를 사용할 수 있도록 AI 프로파일을 사용으로 설정합니다.

주:

SELECT AI를 사용하기 전에 각각의 새 데이터베이스 세션(연결)에서 DBMS_CLOUD_AI.SET_PROFILE를 실행해야 합니다.

다음 예에서는 OpenAI 제공자가 OPENAI이라는 AI 프로파일을 만들고 현재 사용자 세션에 대해 OPENAI 프로파일을 설정합니다.

-- Create AI profile
--
SQL> BEGIN
  DBMS_CLOUD_AI.create_profile(
      'OPENAI',
      '{"provider": "openai",
        "credential_name": "OPENAI_CRED",
        "object_list": [{"owner": "SH", "name": "customers"},
                        {"owner": "SH", "name": "sales"},
                        {"owner": "SH", "name": "products"},
                        {"owner": "SH", "name": "countries"}]
       }');
END;
/
 
PL/SQL procedure successfully completed.
 
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
 
PL/SQL procedure successfully completed.

AI 키워드를 사용하여 프롬프트 입력

자연어 프롬프트를 사용하여 데이터베이스와 상호 작용하려면 SELECT 문에서 AI을 키워드로 사용합니다.

SELECT 문의 AI 키워드는 SQL 실행 엔진이 활성 AI 프로파일에서 식별된 LLM을 사용하여 자연어를 처리하고 SQL을 생성하도록 지시합니다.

SQL Developer, OML Notebooks 및 타사 도구와 같은 Oracle 클라이언트와 쿼리에 AI 키워드를 사용하여 자연어로 데이터베이스와 상호 작용할 수 있습니다.

주:

AI 키워드를 사용하여 PL/SQL 문, DDL 문 또는 DML 문은 실행할 수 없습니다.

구문

AI 프롬프트 실행 구문은 다음과 같습니다.
SELECT AI action natural_language_prompt

매개변수

action 매개변수에 사용할 수 있는 매개변수는 다음과 같습니다.
매개변수 설명

runsql

자연어 프롬프트를 사용하여 제공된 SQL 명령을 실행합니다. 기본 작업이며 이 매개변수를 지정하는 것은 선택 사항입니다.

showsql

자연어 프롬프트에 대한 SQL 문을 표시합니다.

narrate

프롬프트 출력은 자연어로 설명됩니다. 이 옵션은 자연어 요약을 생성하기 위해 SQL 결과를 AI 제공자에게 전송합니다.

chat

프롬프트에 따라 LLM에서 직접 응답을 생성합니다. DBMS_CLOUD_AI.CREATE_PROFILE 함수의 conversationtrue로 설정된 경우 이 옵션에는 스키마 메타데이터를 포함하여 이전 상호 작용 또는 프롬프트의 콘텐츠가 포함됩니다.

explainsql

프롬프트에서 생성된 SQL은 자연어로 설명됩니다. 이 옵션은 생성된 SQL을 AI 제공자에게 전송하여 자연어 설명을 생성합니다.

사용법 참고

  • AI 선택은 데이터베이스 작업 또는 APEX 서비스에서 지원되지 않습니다. DBMS_CLOUD_AI.GENERATE 함수만 사용할 수 있습니다.

  • AI 키워드는 SELECT 문에서만 지원됩니다.

  • AI 키워드를 사용하여 PL/SQL 문, DDL 문 또는 DML 문은 실행할 수 없습니다.

  • 순서는 SELECT 뒤에 AI가 옵니다. 이 키워드에서는 대소문자를 구분하지 않습니다. DBMS_CLOUD_AI.SET_PROFILE가 구성된 후 SELECT AI 뒤에 오는 텍스트는 자연어 프롬프트입니다. AI 프로파일이 설정되지 않은 경우 SELECT AI에서 다음 오류를 보고합니다.

    ORA-00923: FROM keyword not found where expected
    00923. 00000 -  "FROM keyword not found where expected"
  • 특수 문자 사용 규칙은 Oracle 지침에 따라 적용됩니다. 예를 들어 문장에 아포스트로피를 사용하는 경우 작은 따옴표를 두 번 사용합니다.

    select ai how many customers in SF don''t own their own home
  • LLM에는 hallucinations가 적용되며 결과가 항상 정확하지는 않습니다.

    • SELECT AI가 특정 자연어 프롬프트에 대해 생성된 SQL을 실행하지 못할 수 있습니다.

    • SELECT AI가 특정 자연어 프롬프트에 대해 SQL을 생성하지 못할 수 있습니다.

    이러한 시나리오에서 SELECT AI는 유효한 SQL을 생성하는 데 도움이 되는 정보로 응답합니다.

  • chat 작업을 SELECT AI chat와 함께 사용하여 SQL 생성자에 대해 자세히 알아봅니다. chat 작업을 통해 더 나은 결과를 얻으려면 컨텍스트 열 이름이 있는 데이터베이스 뷰 또는 테이블을 사용하거나 열에 저장된 값을 설명하는 열 설명을 추가하는 것이 좋습니다.

  • DBA 또는 USER 뷰에 액세스하려면 DBMS_CLOUD_AI 뷰를 참조하십시오.

예: AI 작업 선택

다음 예에서는 일반적인 Select AI 작업을 보여줍니다.

다음 예에서는 SELECT AI로 수행할 수 있는 runsql(기본값), showsql, narrate, chat, explainsql, feedbacksummarize과 같은 작업을 보여줍니다. 이러한 예에서는 sh 스키마를 DBMS_CLOUD_AI.CREATE_PROFILE 함수에 지정된 AI 제공자 및 프로파일 속성과 함께 사용합니다. 현재 세션의 DBMS_CLOUD_AI.SET_PROFILE 절차를 사용하여 AI 프로파일을 설정한 후 AI 선택 작업을 사용합니다.

텍스트 요약을 생성하려면 SELECT AI SUMMARIZE <TEXT>를 사용합니다.

SQL> select ai how many customers exist;
 
CUSTOMER_COUNT
--------------
         55500
 
SQL> select ai showsql how many customers exist;
 
RESPONSE
----------------------------------------------------
SELECT COUNT(*) AS total_customers
FROM SH.CUSTOMERS
 
 
SQL> select ai narrate how many customers exist;
 
RESPONSE
------------------------------------------------------
There are a total of 55,500 customers in the database.
 
SQL> select ai chat how many customers exist;
 
RESPONSE
--------------------------------------------------------------------------------
It is impossible to determine the exact number of customers that exist as it con
stantly changes due to various factors such as population growth, new businesses
, and customer turnover. Additionally, the term "customer" can refer to individu
als, businesses, or organizations, making it difficult to provide a specific num
ber.


SQL> select ai explainsql how many customers in San Francisco are married;
 
RESPONSE
--------------------------------------------------------------------------------
SELECT COUNT(*) AS customer_count
FROM SH.CUSTOMERS AS c
WHERE c.CUST_STATE_PROVINCE = 'San Francisco' AND c.CUST_MARITAL_STATUS = 'Married';
 
Explanation:
- We use the 'SH' table alias for the 'CUSTOMERS' table for better readability.
- The query uses the 'COUNT(*)' function to count the number of rows that match the given conditions.
- The 'WHERE' clause is used to filter the results:
  - 'c.CUST_STATE_PROVINCE = 'San Francisco'' filters customers who have 'San Francisco' as their state or province.
  - 'c.CUST_MARITAL_STATUS = 'Married'' filters customers who have 'Married' as their marital status.
The result of this query will give you the count of customers in San Francisco who are married, using the column alias 'customer_count' for the result.
 
Remember to adjust the table and column names based on your actual schema if they differ from the example.
 
Feel free to ask if you have more questions related to SQL or database in general.

-- Feedback on SQL Text
-- Negative feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", please use sum instead of count;
-- Positive feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", the sql query generated is correct;
 
-- Feedback on SQL ID
-- Negative feedback example:
SQL > select ai feedback please use sum instead of count for sql_id  1v1z68ra6r9zf;
-- Positive feedback example:
SQL > select ai feedback sql query result is correct for sql_id  1v1z68ra6r9zf;
 
-- If not specified, use default LASTAI SQL
-- To use default LASTAI sql, make sure that set server output off;
-- Negative feedback example:
SQL > select ai feedback please use ascending sorting for ranking;
-- Positive feedback example:
SQL > select ai feedback the result is correct;

SQL> SELECT AI SUMMARIZE
Like countless other people around the globe, I stream music, and like more
than six hundred million of them I mainly use Spotify. Streaming currently
accounts for about eighty per cent of the American recording industry’s
revenue, and in recent years Spotify’s health is often consulted as a measure
for the health of the music business over all. Last spring, the International
Federation of the Phonographic Industry reported global revenues of $28.6
billion, making for the ninth straight year of growth. All of this was
unimaginable in the two-thousands, when the major record labels appeared
poorly equipped to deal with piracy and the so-called death of physical media.
On the consumer side, the story looks even rosier. Adjusted for inflation, a
 
... (skipped 1000 rows in the middle)
 
Pelly writes of some artists, in search of viral fame, who surreptitiously use
social media to effectively beta test melodies and motifs, basically putting
together songs via crowdsourcing. Artists have always fretted about the
pressure to conform, but the data-driven, music-as-content era feels
different. “You are a Spotify employee at that point,” Daniel Lopatin, who
makes abstract electronic music as Oneohtrix Point Never, told Pelly. “If your
art practice is so ingrained in the brutal reality that Spotify has outlined
for all of us, then what is the music that you’re not making? What does the
music you’re not making sound like?” Listeners might wonder something similar.
What does the music we’re not hearing sound like?;
 
 
RESPONSE
------------------------------------------------------------------------------
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, who struggle to survive in a hyper-abundant present where
music is often valued for its convenience rather than its artistic merit.
Spotify's algorithms prioritize popularity and profitability over artistic
diversity, leading to a homogenization of music and a devaluation of the
labor that goes into creating it. Meanwhile, the company's executives reap
enormous profits, with CEO Daniel Ek's net worth rivaling that of the
wealthiest musicians. As music critic Liz Pelly argues, the streaming economy
raises important questions about autonomy, creativity, and the value of art
in a world where everything is readily available and easily accessible.

예: AWS를 사용한 AI 선택

이 예에서는 AWS를 사용하여 자연어 프롬프트에서 SQL을 생성, 실행 및 설명하거나 AWS에서 사용 가능한 모델을 사용하여 채팅하는 방법을 보여줍니다.

다음 예에서는 AWS를 Amazon Bedrock 및 해당 기반 모델을 사용하는 AI 제공업체로 사용하는 방법을 보여줍니다. 이 예제에서는 AWS 자격 증명을 생성하고, 네트워크 액세스를 제공하고, AI 프로파일을 생성하고, Select AI 작업을 사용하여 자연어 프롬프트에서 SQL 쿼리를 생성하고, AWS 기반 모델을 사용하여 채팅하는 방법을 보여줍니다.

AWS를 사용하려면 액세스 키, 보안 키 및 모델 ID를 얻습니다. 여기를 참조하십시오. DBMS_CLOUD_AI.CREATE_PROFILE 절차에서 모델 ID를 model 속성으로 사용합니다. 기본 모델이 제공되지 않으므로 model 속성을 명시적으로 지정해야 합니다.

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

--
-- Create Credential for AI provider
--
BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'AWS_CRED',
        username    => '<your_AWS_access_key>',
        password    => '<your_AWS_secret_key>'
      );
END;
/
 
PL/SQL procedure successfully completed.
 
 
--
-- Grant Network ACL for AWS
--
BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'bedrock-runtime.us-east-1.amazonaws.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 AI profile 
--
BEGIN
      DBMS_CLOUD_AI.CREATE_PROFILE(
        profile_name =>'AWS',
        attributes   =>'{"provider": "aws",
          "credential_name": "AWS_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"}],
           "model" : "anthropic.claude-v2",
           "conversation" : "true"
          }');
END;
/
 
 
PL/SQL procedure successfully completed.


--
-- Enable AI profile in current session
--
EXEC DBMS_CLOUD_AI.SET_PROFILE('AWS');

PL/SQL procedure successfully completed.
 
--
-- Use AI
--

SELECT AI how many customers exist;
"RESPONSE"
"COUNT(*)"
55500


SELECT AI how many customers in San Francisco are married;
"RESPONSE"
"COUNT(*)"
46

SELECT AI showsql how many customers in San Francisco are married;
"RESPONSE"
"SELECT COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE UPPER(C."CUST_CITY") = UPPER('San Francisco')
AND UPPER(C."CUST_MARITAL_STATUS") = UPPER('Married')"

SELECT AI explainsql how many customers in San Francisco are married;

"RESPONSE""SELECT 
COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE C."CUST_CITY" = 'San Francisco'
AND C."CUST_MARITAL_STATUS" = 'Married'

Explanation:
- Used table alias C for CUSTOMERS table
- Used easy to read column names like CUST_CITY, CUST_MARITAL_STATUS
- Enclosed table name, schema name and column names in double quotes 
- Compared string values in WHERE clause without UPPER() since the values are not in double quotes
- Counted number of rows satisfying the condition and aliased the count as "Number of Married Customers in San Francisco""

SELECT AI narrate what are the top 3 customers in San Francisco;
"RESPONSE"
The top 3 customers in San Francisco ordered by credit limit in descending order are:

1. Bert Katz
2. Madallyn Ladd  
3. Henrietta Snodgrass

SELECT AI chat what is Autonomous AI Database;
"RESPONSE"
"An Autonomous AI Database is a cloud database service provided by Oracle Corporation. Some key features of Oracle Autonomous AI Database include:

- Fully automated and self-driving - The database automatically upgrades, patches, tunes, and backs itself up without any human intervention required.

- Self-securing - The database uses machine learning to detect threats and automatically apply security updates.

- Self-repairing - The database monitors itself and automatically recovers from failures and errors without downtime.

- Self-scaling - The database automatically scales compute and storage resources up and down as needed to meet workload demands. 

- Serverless - The database is accessed as a cloud service without having to manually provision any servers or infrastructure.

- High performance - The database uses Oracle's advanced automation and machine learning to continuously tune itself for high performance.

- Multiple workload support - Supports transaction processing, analytics, graph processing, etc in a single converged database.

- Fully managed - Oracle handles all the management and administration of the database. Users just load and access their data.

- Compatible - Supports common SQL and Oracle PL/SQL for easy migration from on-prem Oracle databases.

So in summary, an Oracle Autonomous AI Database is a fully automated, self-driving, self-securing, and self-repairing database provided as a simple cloud service. The automation provides high performance, elasticity, and availability with minimal human labor required."

--
--Clear the profile
--
BEGIN
   DBMS_CLOUD_AI.CLEAR_PROFILE;
END;
/
PL/SQL procedure successfully completed.

--
--Drop the profile
--
EXEC DBMS_CLOUD_AI.DROP_PROFILE('AWS');
 
PL/SQL procedure successfully completed.