데이터베이스 및 애플리케이션을 위한 OCI Generative AI 기반 SQL 에이전트 설계
이 참조 아키텍처는 Oracle Database와의 자연어(NL) 상호 작용을 원활하게 수행하도록 설계된 SQL 에이전트를 간략하게 설명합니다.
Oracle Cloud Infrastructure(OCI) 및 Oracle Cloud Infrastructure Generative AI(OCI Generative AI) 모델을 기반으로 구축된 이 에이전트는 수백 개의 테이블로 구성된 스키마를 처리하도록 설계된 강력하고 확장 가능한 시스템을 통해 텍스트-SQL 쿼리, 데이터 분석 및 보고를 수행할 수 있습니다.
또한 SQL 에이전트를 RAG(Retrieval Augmented Generation)와 함께 보다 일반적인 아키텍처에 통합하여 사용자가 구조적 및 비구조적 데이터에 대한 분석을 결합할 수 있습니다.
구조
솔루션의 핵심은 Python용 Oracle Cloud Infrastructure SDK 및 오픈 소스 라이브러리 LangChain를 기반으로 하는 Python 구성 요소 세트로 구성됩니다.
- 라우터: 요청 유형(SQL 생성 및 데이터 검색 또는 데이터 분석)을 식별하고 적절한 처리 파이프라인으로 지정합니다. 구성 요소는 특수한 프롬프트가 있는 LLM을 기반으로 합니다.
- 스키마 관리자: 데이터베이스 스키마와 관련된 모든 메타데이터를 관리합니다. SQL 생성 및 모든 연관된 메타 데이터에 사용할 테이블 리스트("제한된 스키마")를 각 NL 요청에 대해 제공하는 데 중요한 역할을 합니다. 데이터베이스 내에서 23ai 데이터베이스 및 의미 검색을 활용하여 사용자 NL 요청과 관련된 테이블을 찾습니다.
- SQL 생성기: NL 요청을 접속된 "데이터" 데이터베이스의 실행 가능한 SQL 문으로 변환합니다. LM 모델 어셈블을 사용하여 정확성을 높이고 올바르게 생성된 SQL 문의 성공률을 높입니다. LLM 모델은 OCI Generative AI 서비스를 통해 제공됩니다.
- SQL 캐시: 가장 빈번한 요청에 대한 NL 명령(및 해당하는 SQL)을 저장합니다.
- SQL 실행기: 생성된 SQL 문의 구문 검증을 사용으로 설정하고 지침을 실행합니다.
- AI 데이터 분석기: 저장된 대화형 데이터를 분석하여 분석 요청 또는 보고서 생성에 대한 응답을 생성합니다.
다음 다이어그램은 논리적 구조를 보여 줍니다.
그림 oci-genai-sql-agent-logical.png
oci-genai-sql-agent-logical-oracle.zip
이 솔루션의 특징은 Vector Search 및 Generative AI를 기반으로 데이터베이스 스키마를 유연하게 관리하는 것입니다.
설정 중에 LLM(Large Language Model)을 사용하여 각 데이터베이스 테이블에 대해 포괄적인 요약을 생성합니다. 이 요약에는 테이블 스키마, 관련 비즈니스 질의 및 샘플 데이터가 포함됩니다. 요약은 OCI Generative AI 임베딩 모델에서 생성된 내장 벡터와 함께 23ai 데이터베이스에 저장됩니다.
사용자가 질의를 제출하면 의미 검색은 질의 구성을 위한 후보 테이블을 식별하고, 순위 재지정 방식은 최적의 결과를 보장하기 위해 이 목록을 세분화합니다.
SQL 에이전트는 사용자와의 대화 내역을 관리합니다. conversation_id를 통해 연결된 교환된 메시지는 Oracle Cloud Infrastructure Cache with Redis(OCI Cache with Redis)를 사용하여 저장됩니다.
SQL 에이전트는 REST API를 통해 노출되고, Open-API를 준수하며, FastAPI 라이브러리로 구현됩니다. 이 REST API는 모든 사용자 인터페이스에 연결할 수 있습니다. 다이어그램은 Oracle Digital Assistant, Oracle APEX로 구축된 UI 또는 일반 웹 UI를 제안합니다.
다양한 OCI 구성요소에 대한 사용 통계 및 응답 시간을 수집하기 위해 Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service와의 통합은 자세히 탐색 섹션의 Oracle Cloud를 통한 RAG 솔루션의 관찰성 향상(블로그) 링크에 설명된 접근 방식을 기반으로 합니다.
다음 다이어그램은 모든 OCI 서비스가 포함된 물리적 아키텍처를 설명합니다.
oci-genai-sql-agent-arch-oracle.zip
구조에는 다음과 같은 구성 요소가 있습니다.
- OCI 생성형 AI 임베딩 모델
애플리케이션에서 의미 검색, 텍스트 분류 또는 텍스트 클러스터화에 사용할 수 있도록 텍스트를 벡터 포함으로 변환합니다. OCI Generative AI 내장 모델은 선택한 내장 모델에 따라 입력하는 각 구문, 문장 또는 단락을 384(경량 모델) 또는 1024개의 숫자로 구성된 배열로 변환합니다.
이러한 포함을 사용하여 컨텍스트 또는 범주에서 유사한 구문의 유사성을 찾을 수 있습니다. 임베딩은 일반적으로 벡터 데이터베이스에 저장됩니다. 임베딩은 주로 검색 함수가 키워드를 기반으로 결과를 찾는 대신 검색 중인 텍스트의 의미에 초점을 맞춘 의미 검색에 사용됩니다.
- OCI 생성형 AI 채팅 모델
AI 채팅 인터페이스를 통해 질문을 하고 대화형 응답을 받을 수 있습니다. OCI Generative AI 채팅 모델에 텍스트를 생성하라는 메시지를 표시합니다. 자연어로 질문을 할 수 있으며 선택적으로 문서, 이메일 및 제품 리뷰와 같은 텍스트를 채팅 모델에 제출하고 텍스트 위에 각 모델 이유를 제시하고 지능적인 답변을 제공합니다. 일부 모델의 경우 이미지를 제출하고 이미지에 대한 질문을 할 수 있습니다. 채팅 모델은 이전 프롬프트의 컨텍스트를 유지하며 후속 질문으로 채팅을 계속할 수 있습니다.
- 응용 프로그램 성능 모니터링
Oracle Cloud Infrastructure Application Performance Monitoring은 애플리케이션 성능에 대한 심층적인 가시성을 제공하며 일관된 수준의 서비스를 제공하기 위해 신속하게 문제를 진단할 수 있는 기능을 제공합니다. 여기에는 온프레미스 또는 클라우드에서 클라이언트, 타사 서비스 및 백엔드 컴퓨팅 계층에 분산된 여러 구성 요소 및 응용 프로그램 논리에 대한 모니터링이 포함됩니다.
- APEX 서비스
Oracle APEX는 Oracle Database가 설치된 모든 곳에 배포할 수 있는 확장성과 기능이 풍부하고 안전한 엔터프라이즈 앱을 구축할 수 있게 해주는 로우코드 개발 플랫폼입니다. 정교한 솔루션을 제공하기 위해 방대한 기술 분야의 전문가가 될 필요는 없습니다. Oracle APEX에는 사용자 인터페이스 테마, 탐색 제어, 폼 처리기 및 애플리케이션 개발 프로세스를 가속화하는 유연한 보고서와 같은 내장 기능이 포함되어 있습니다.
- API 게이트웨이
Oracle Cloud Infrastructure API Gateway를 사용하면 네트워크 내에서 액세스할 수 있고 필요한 경우 공용 인터넷에 노출할 수 있는 전용 엔드포인트가 있는 API를 게시할 수 있습니다. 엔드포인트는 API 검증, 요청 및 응답 변환, CORS, 인증 및 권한 부여, 요청 제한을 지원합니다.
- Autonomous Data Warehouse
Oracle Autonomous Data Warehouse는 데이터 웨어하우징 워크로드에 최적화된 자가 구동, 자가 보안 및 자가 복구 데이터베이스 서비스입니다. 하드웨어를 구성 또는 관리하거나 소프트웨어를 설치할 필요가 없습니다. Oracle Cloud Infrastructure는 데이터베이스 생성은 물론 데이터베이스 백업, 패치, 업그레이드, 튜닝을 처리합니다.
- Redis가 있는 캐시
Oracle Cloud Infrastructure Cache with Redis는 오픈 소스 Redis를 기반으로 구축된 포괄적인 관리형 인메모리 캐싱 솔루션입니다. 이 완전 관리형 서비스는 데이터 읽기 및 쓰기를 가속화하여 애플리케이션 응답 시간 및 데이터베이스 성능을 크게 향상시켜 향상된 고객 경험을 제공합니다.
- 계산
Oracle Cloud Infrastructure Compute를 사용하면 클라우드에서 컴퓨트 호스트를 프로비저닝하고 관리할 수 있습니다. CPU, 메모리, 네트워크 대역폭 및 스토리지에 대한 리소스 요구사항을 충족하는 구성을 사용하여 컴퓨트 인스턴스를 실행할 수 있습니다. 컴퓨트 인스턴스를 생성한 후에는 해당 인스턴스에 안전하게 액세스하고, 재시작하고, 볼륨을 연결 및 분리하고, 더 이상 필요하지 않을 때 이를 종료할 수 있습니다.
권장사항
- 데이터베이스 액세스
이 솔루션은 데이터베이스의 데이터에 "읽기 전용"만 액세스할 수 있도록 구현해야 합니다. 프롬프트의 지침에 따라 DDL 및 DML 지침을 금지할 수 있더라도 추가 보안을 위해 READ ONLY 데이터베이스 유저를 사용하여 "Data" 데이터베이스에 대한 연결을 수행해야 합니다.
- 보안
Oracle Cloud Guard를 사용하여 OCI의 리소스 보안을 사전에 모니터링하고 유지 관리할 수 있습니다. Oracle Cloud Guard는 리소스에서 보안 취약점을 검사하고 운영자 및 사용자에게 위험한 활동을 모니터링하기 위해 정의할 수 있는 감지기 레시피를 사용합니다. 잘못된 구성 또는 안전하지 않은 작업이 감지되면 Oracle Cloud Guard는 정의할 수 있는 응답기 레시피를 기반으로 수정 조치를 권장하고 해당 작업을 수행하는 데 도움을 줍니다.
최대 보안이 필요한 리소스의 경우 Oracle은 보안 영역을 사용할 것을 권장합니다. 보안 영역은 모범 사례를 기반으로 하는 Oracle 정의 보안 정책 레시피와 연관된 컴파트먼트입니다. 예를 들어, 보안 영역의 리소스는 공용 인터넷에서 액세스할 수 없어야 하며 고객 관리 키를 사용하여 암호화해야 합니다. 보안 영역에서 리소스를 생성 및 업데이트할 때 OCI는 보안 영역 레시피의 정책에 대해 작업을 검증하고 정책을 위반하는 작업을 거부합니다.
- Cloud Guard
사용자정의 감지기 및 응답기 레시피를 생성하도록 Oracle에서 제공하는 기본 레시피를 복제 및 사용자정의합니다. 이러한 레시피를 통해 경고를 생성하는 보안 위반 유형과 경고에 대해 수행할 수 있는 작업을 지정할 수 있습니다. 예를 들어 가시성이 퍼블릭으로 설정된 오브젝트 스토리지 버킷을 감지할 수 있습니다.
테넌시 레벨에서 Cloud Guard를 적용하여 가장 광범위한 범위를 다루고 여러 구성을 유지 관리하는 데 따르는 관리 부담을 줄이십시오.
관리 목록 기능을 사용하여 감지기에 특정 구성을 적용할 수도 있습니다.
- 보안 영역
최대 보안이 필요한 리소스의 경우 Oracle은 보안 영역을 사용할 것을 권장합니다. 보안 영역은 모범 사례를 기반으로 하는 Oracle 정의 보안 정책 레시피와 연관된 컴파트먼트입니다. 예를 들어, 보안 영역의 리소스는 공용 인터넷에서 액세스할 수 없어야 하며 고객 관리 키를 사용하여 암호화해야 합니다. 보안 영역에서 리소스를 생성 및 업데이트할 때 Oracle Cloud Infrastructure는 보안 영역 레시피의 정책에 대해 작업을 검증하고 정책을 위반하는 작업을 거부합니다.
- NSG(네트워크 보안 그룹)
NSG를 사용하여 특정 VNIC에 적용되는 수신 및 송신 규칙 세트를 정의할 수 있습니다. NSG를 사용하면 애플리케이션의 보안 요구사항과 VCN의 서브넷 아키텍처를 분리할 수 있으므로 보안 목록이 아닌 NSG를 사용하는 것이 좋습니다.
고려사항
OCI에서 이 솔루션을 실행하려는 경우 다음 보안 세부정보를 고려해 보십시오.
- 보안
운용 설정에서는 SQL 에이전트의 모든 구성 요소가 전용(private) 네트워크에 배치되어야 합니다.
REST API에 대한 액세스는 OCI API 게이트웨이를 통해서만 제공되어야 합니다. 로드 밸런서는 여러 VM에 모든 Python 구성요소를 배포하여 안정성과 확장성을 높일 수 있도록 설계되었습니다.
OCI Generative AI 서비스에 액세스하려면 OCI Generative AI 정책을 적절히 설정해야 합니다.