
한번 체험해 보자 Db2 AI 에디션 #10 〜SQL로 생성형 AI 편 Part#1〜
요약
Db2 for LUW v12.1.5에서 제공하는 LLM 통합 기능을 통해 미들웨어 없이 SQL만으로 생성형 AI를 호출하는 방법을 소개합니다. HTTP 클라이언트나 인증 관리 같은 복잡한 인프라 코드 없이 데이터베이스 내에서 직접 모델을 제어할 수 있습니다.
핵심 포인트
- 미들웨어 없이 SQL 쿼리만으로 LLM 호출 가능
- 인증, 에러 처리, 응답 분석 등 복잡한 로직을 Db2가 직접 처리
- watsonx.ai 및 OpenAI 호환 프로바이더(Amazon Bedrock 등) 지원
- 데이터베이스 오브젝트로 모델을 등록하여 관리 효율성 증대
이 기사에서는 Db2 for LUW v12.1.5에서 구현된 Db2 SQL을 사용한 생성형 AI (Generative AI) 활용을 개설합니다. 아래 블로그(Blog)의 초록 번역입니다.
"Db2 LLM Integration: Skip the Middleware. Call the Model from SQL"
LLM (Large Language Model)을 활용한 애플리케이션을 구축할 때, 데이터는 데이터베이스에, 모델은 외부 프로바이더(Provider) 상에 존재합니다.
이것들을 연결하는 것은 본래 심플해야 하지만, 실제로는 그렇지 않습니다.
데이터베이스와 모델 사이에는, 본래라면 쓰고 싶지도 않았을 코드가 개재하게 됩니다.
HTTP 클라이언트, 인증 헤더, 인증 정보의 관리, 재시도 처리 (Retry), 응답 분석 (Response Parsing), 에러 핸들링 (Error Handling), 그리고 데이터 보호와 같은 요소들입니다.
요청량이 늘어나면 커넥션 풀링 (Connection Pooling)이나 병행 처리 (Concurrency) 관리와 같은 메커니즘도 추가해야 합니다.
이것들은 모두 애플리케이션 자체의 가치를 높이는 것이 아닙니다.
코드 기술에 소비하는 한 줄 한 줄의 시간은, 본래 애플리케이션에 필요한 쿼리 (Query)나 로직 (Logic), 기능 개발에 할애해야 하는 것입니다.
이것들은 단순한 「배관 (인프라적인 연결)」 작업에 불과하며, 그 유지보수 및 운용을 담당하게 되는 것은 바로 당신 자신입니다.
더 좋은 방법이 있습니다.
Db2의 LLM 통합 기능은 통합 레이어 (Integration Layer)를 완전히 제거합니다.
언어 모델을 데이터베이스 오브젝트 (Database Object)로서 한 번 등록하는 것만으로, 그 후에는 다른 내장 함수와 마찬가지로 Db2 SQL에서 해당 모델을 호출할 수 있습니다.
HTTP 호출, 인증, 응답 분석, 에러 처리와 같은 일련의 처리는 Db2가 담당하며, 결과는 쿼리 실행 결과로서 직접 반환됩니다.
통합용 코드나 미들웨어 (Middleware)는 필요하지 않습니다.
배포, 모니터링, 유지보수가 필요한 새로운 서비스도 발생하지 않습니다.
이 기능은 Db2 for LUW v12.1.5 이후부터 제공됩니다.
이를 통해 데이터와 모델 모두에 동일한 Db2 SQL 쿼리로부터 액세스할 수 있게 됩니다.
Db2의 LLM 통합 기능은 다음과 같은 두 종류의 프로바이더를 지원합니다.
watsonx.ai: IBM의 엔터프라이즈용 AI 플랫폼. 전용 프로바이더 타입을 통해 네이티브하게 지원됩니다.
OpenAI 호환 프로바이더 (OpenAI Compatible Provider): OpenAI API 표준을 구현하고 있는 LLM 프로바이더나 추론 엔진 (Inference Engine). 클라우드, 상용 제품, 오픈 소스 등 폭넓은 선택지에 대응합니다.
이전 게시물에서는 첫 번째 패턴으로서, watsonx.ai의 임베딩 (Embedding) 모델을 등록하여 Db2 SQL만으로 시맨틱 검색 (Semantic Search) 시스템을 구축하는 방법을 다룹니다.
이 튜토리얼에서는 지원되는 프로바이더의 예로 Amazon Bedrock을 사용합니다. OpenAI 호환 프로바이더라면 API 키, 모델 ID, URL이 다를 뿐, 유사한 3단계로 이용 가능합니다.
Amazon Bedrock의 API 키를 준비한 후, Db2 SQL로 실제로 LLM을 호출할 수 있게 될 때까지 다음의 3단계를 진행합니다.

단계 1: Amazon Bedrock API 키 취득
Amazon Bedrock은 많은 LLM 프로바이더가 채택하고 있는 /v1/chat/completions 엔드포인트 (Endpoint) 형식을 사용한 OpenAI 호환 API를 제공합니다.
Db2에 Bedrock 모델을 등록하는 것은 다른 OpenAI 호환 프로바이더의 경우와 동일한 절차로 진행합니다.
Amazon Bedrock 콘솔*1에서 장기 유효한 API 키를 생성하고 즉시 복사하십시오 (키는 한 번만 표시됩니다).
상세한 절차에 대해서는 「Amazon Bedrock API 키 생성」*2를 참조하십시오.
(*1)https://console.aws.amazon.com/bedrock
(*2)https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-generate.html
Bedrock의 OpenAI 호환 엔드포인트를 통해 이용 가능한 모델이라면 Db2의 등록 패턴에서 사용할 수 있습니다.
현재의 모델 카탈로그에 대해서는 「Amazon Bedrock OpenAI 호환 API」*3를 참조하십시오.
(*3)https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-mantle.html
집필 시점에서는 이 엔드포인트가 텍스트 생성 모델을 지원합니다.
향후 Bedrock이 이 엔드포인트에 임베딩 (embedding) 모델을 추가하더라도, Db2에서 동일한 방법으로 호출하는 것이 가능합니다.
단계 2: Db2에 모델 등록
Amazon Bedrock의 LLM을 Db2에 외부 모델로 등록합니다.
CREATE EXTERNAL MODEL BEDROCK_TEXT_GEN
PROVIDER OPENAI
KEY 'your-aws-bedrock-api-key-here'
...
유의해야 할 3가지 파라미터는 다음과 같습니다.
PROVIDER OPENAI: Db2에 Bedrock이 지원하는 OpenAI 호환 프로토콜을 사용하도록 지시합니다.
ID: Bedrock의 /v1/models 엔드포인트에서 가져오는 모델 식별자입니다.
URL: Bedrock의 OpenAI 호환 엔드포인트용 채팅 보완 (chat completions) URL입니다.
등록은 한 번만 수행하면 완료됩니다. 그 이후의 호출은 단일 SQL 함수 호출로서 실행할 수 있습니다.
단계 3: Db2 SQL에서 호출
SQL에서 프롬프트를 지정하여 등록된 모델을 호출합니다.
VALUES TEXT_GENERATION('Explain the causes of the 2008 financial crisis' USING BEDROCK_TEXT_GEN)
Db2는 LLM의 응답을 쿼리 결과로 반환합니다.
The 2008 financial crisis resulted from a convergence of several factors:
1. Subprime mortgage lending: Banks issued mortgages to borrowers with poor
credit histories, often with adjustable rates that became unaffordable
...
LLM으로부터의 완전한 응답이 Db2 SQL의 '결과 세트 (result set)'로 반환됩니다.
HTTP 클라이언트도, 응답 분석도, 인증 정보 관리도 필요하지 않습니다. 모든 것을 Db2가 처리해 줍니다.
참고:
이 예시에서는 메커니즘을 설명하기 위해 정적인 프롬프트를 사용하고 있습니다.
프롬프트는 Db2 내의 기존 데이터로부터 동적으로 생성하는 것도 가능합니다.
Db2 내에서 완결되어 RAG (검색 증강 생성)용 프롬프트를 구축할 수 있습니다.
즉, 데이터베이스 외부의 애플리케이션 코드를 전혀 사용하지 않고, 단일 쿼리만으로 벡터 스토어에 대한 쿼리, 관련성 높은 문서 청크 (chunk) 가져오기, 이를 컨텍스트로 포함하기, 그리고 모델 호출까지 수행할 수 있습니다.
정리 (Cleanup)
등록된 모델이 더 이상 필요하지 않으면 삭제 (DROP)할 수 있습니다.
DROP EXTERNAL MODEL BEDROCK_TEXT_GEN
데이터와 모델을 동일한 쿼리 내에서 처리할 수 있습니다.
쿼리 실행 시 행 데이터를 확장 (enrich)하여, 고객 피드백 요약, 서포트 티켓 분류, 제품 설명 생성 등을 수행합니다.
데이터 추출과 같은 단계를 거치지 않고, 데이터가 저장되어 있는 곳에서 직접 모델을 동작시키는 것이 가능합니다.
TEXT_GENERATION은 Db2 SQL에서 함수를 사용할 수 있는 모든 곳에서 이용할 수 있습니다.
쿼리, 뷰, 저장 프로시저 (stored procedure) 내에서 이용 가능합니다.
모델은 애플리케이션 측에서 조정이 필요한 개별 서비스 호출이 아니라, 데이터 레이어 (data layer)의 일부로서 통합됩니다.
모델 전환 시 애플리케이션 코드의 변경은 불필요합니다.
다른 프로바이더의 새로운 모델을 등록하거나, 동일한 프로바이더 내의 다른 모델로 전환하는 경우에도 모든 작업은 Db2 SQL 상에서 이루어집니다.
애플리케이션 코드를 변경할 필요가 없습니다.
이 패턴은 어떤 프로바이더에서도 공통적입니다.
본 기사에서는 Amazon Bedrock을 예로 들었지만, '등록·호출·결과 획득'이라는 일련의 흐름은 Db2가 지원하는 모든 OpenAI 호환 프로바이더에 적용됩니다.
프로바이더가 바뀌더라도 SQL이나 애플리케이션을 변경할 필요는 없습니다.
과거 기사 소개
#1부터 #5까지는 AI 어시스턴트 (AI Assistant) 기능에 대해 소개하고 있습니다.
#6과 #7은 모니터링 (Monitoring) 기능에 대해 소개하고 있습니다.
#8은 양자 내성 암호화 (Post-Quantum Cryptography) 기능에 대해 소개하고 있습니다.
#9는 양자 내성 암호화 (Post-Quantum Cryptography) 기능을 포함한 v12.1.5의 신기능에 대해 소개하고 있습니다.
#1에서는 Db2 입문자나 초보자에게는 작성이 어렵다고 생각될 수 있는 복잡한 SQL을 AI 어시스턴트 (AI Assistant)를 사용하여 작성하고 있습니다. 이에 더해, Db2 Genius Hub 개요, 무료 평가판 다운로드 사이트 및 매뉴얼 URL도 소개하고 있습니다. #1부터 읽어보시는 것을 권장합니다.
한번 체험해 보자 Db2 AI 에디션 #1 〜에이전트형 AI 어시스턴트 편 Part#1〜
#2에서는 AI 어시스턴트 (AI Assistant)로 데이터베이스의 가동 상황 요약 (Summary)을 표시하고 있습니다.
한번 체험해 보자 Db2 AI 에디션 #2 〜에이전트형 AI 어시스턴트 편 Part#2〜
#3에서는 AI 어시스턴트 (AI Assistant)로 데이터베이스의 응답 시간 이력을 표시하고 있습니다.
한번 체험해 보자 Db2 AI 에디션 #3 〜에이전트형 AI 어시스턴트 편 Part#3〜
#4에서는 AI 어시스턴트 (AI Assistant)로 데이터베이스의 백업 이력과 프로세서 (Processor) 이용 상황 이력을 표시하고 있습니다.
한번 체험해 보자 Db2 AI 에디션 #4 〜에이전트형 AI 어시스턴트 편 Part#4〜
#5에서는 AI 어시스턴트 (AI Assistant)로 쿼리 (Query)의 처리량 (Throughput)을 표시하고 있습니다.
한번 체험해 보자 Db2 AI 에디션 #5 〜에이전트형 AI 어시스턴트 편 Part#5〜
#6인 "한번 체험해 보자 Db2 AI 에디션 #6 〜모니터링 편 Part#1〜"에서는 모니터링 (Monitoring) 기능을 소개하고 있습니다.
#7인 "한번 체험해 보자 Db2 AI 에디션 #7 〜모니터링 편 Part#2〜"에서는 감시 (모니터링) 리포트 작성 기능을 소개하고 있습니다.
#8인 "한번 체험해 보자 Db2 AI 에디션 #8 〜양자 내성 암호화 기능 편 Part#1〜"에서는 양자 내성 암호화 (Post-Quantum Cryptography) 기능과 등장 배경 등에 대해 기술하고 있습니다.
#9인 "한번 체험해 보자 Db2 AI 에디션 #9 〜v12.1.5 신기능 편 Part#1〜"에서는 v12.1.5 신기능의 하이라이트를 소개하고 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기