VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
vsql_ai 확장은 ai_prompt()를 추가합니다 — 쿼리에서 AI 모델을 직접 호출하는 함수이므로, 보강, 분류, 생성이 데이터가 이미 있는 곳에서 이루어질 수 있습니다.
문제: SQL과 AI 사이의 컨텍스트 전환
VillageSQL 없이 사용하는 일반적인 패턴:VillageSQL 사용: SQL에서 ai_prompt()
ai_prompt(provider, model, api_key, prompt)는 API를 호출하고 응답을 문자열로 반환합니다. 스칼라 함수를 사용할 수 있는 모든 곳에서 사용하세요.
행을 대량으로 업데이트하기
가장 일반적인 용도: 기존 행 전체에 보강 컬럼을 백필하기.WHERE에서 프롬프트 결과 사용하기
AI 출력으로 필터링할 수 있지만, 스캔하는 모든 행에 대해 모델을 호출합니다:ai_prompt()를 호출하는 대신 저장된 컬럼을 업데이트하고 그 컬럼을 쿼리하는 방식을 권장합니다.
여러 컬럼으로 프롬프트 구성하기
모델에 전체 컨텍스트를 제공하려면 컬럼을 프롬프트에 연결하세요:성능과 속도 제한
각ai_prompt() 호출은 독립적인 HTTPS 요청입니다. 대량 작업의 경우:
- UPDATE에서 LIMIT 사용 — AI 호출은 각각 5–30초가 걸리므로, 100행에 대한 배치
UPDATE는 몇 분이 걸립니다. 공급자 속도 제한을 지키려면 50–100행 단위로 배치 처리하세요.max_execution_time은SELECT만 제한하며 여기서는 아무 효과가 없습니다 — 실행 중인UPDATE를 중단하려면 다른 세션에서KILL QUERY <connection_id>를 사용하세요. - 결과 저장 — 결과를 저장하지 않고 SELECT에서
ai_prompt()를 호출하지 마세요. 반복되는 SELECT는 매번 API 호출을 다시 실행합니다.
모델 선택
분류와 레이블링 작업에는 허용 가능한 정확도를 내는 가장 빠르고 저렴한 모델을 사용하세요. 처리량보다 출력 품질이 더 중요한 작업에만 더 뛰어난 모델을 사용하세요.
설정과 공급자 구성은 MySQL을 AI API에 연결하기를 참조하세요.
자주 묻는 질문
DEFAULT 표현식에서 ai_prompt()를 사용할 수 있나요?
아니요 — MySQL에서는 비결정적 함수(ai_prompt()가 여기에 해당)를 DEFAULT 표현식이나 생성 컬럼에 사용할 수 없습니다.
저장 프로시저에서 ai_prompt()를 사용할 수 있나요?
예. 저장 프로시저, 트리거, 함수 모두 동일한 타임아웃 제약 아래에서ai_prompt()를 호출할 수 있습니다. 트리거에는 주의하세요 — 모든 INSERT마다 AI를 호출하면 모든 쓰기가 느려집니다.
응답 형식은 어떻게 제어하나요?
프롬프트로 제어합니다. “Reply with one word: positive, negative, or neutral”은 분류에 예측 가능한 출력을 줍니다. “Return valid JSON with keys: category, confidence”는 구조화된 출력을 줍니다. 지시가 구체적이면 모델은 지시를 안정적으로 따릅니다.ai_prompt()는 실패 시 재시도하나요?
아니요. API 호출이 실패하면 NULL을 반환합니다. 애플리케이션의 배치 루프에 재시도 로직을 구현하기 전에SHOW WARNINGS를 실행하여 원인을 확인하세요 — vsql_ai는 실제 실패 원인을 담은 Warning 3200을 발생시킵니다.
문제 해결
참고
- MySQL을 AI API에 연결하기 — 먼저 vsql_ai 확장 설치 및 구성하기
- MySQL에서 AI 요약하기 — ai_prompt()로 긴 텍스트 요약하기
- AI로 MySQL에서 텍스트 분류하기 — ai_prompt()를 사용하여 범주별로 행에 레이블 지정하기
- MySQL 데이터의 감정 분석 — 텍스트의 어조와 감정 점수 매기기