메인 콘텐츠로 건너뛰기

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
MySQL에는 AI 모델을 호출하는 방법이 없습니다. SQL로 데이터를 처리한 다음, AI 단계를 위해 애플리케이션 코드로 옮기고, 결과를 다시 가져와야 합니다. VillageSQL의 vsql_ai 확장은 ai_prompt()를 추가합니다 — 쿼리에서 AI 모델을 직접 호출하는 함수이므로, 보강, 분류, 생성이 데이터가 이미 있는 곳에서 이루어질 수 있습니다.

문제: SQL과 AI 사이의 컨텍스트 전환

VillageSQL 없이 사용하는 일반적인 패턴:
이 방식은 동작하지만 행마다 세 번의 왕복이 필요합니다: SELECT, AI 호출, UPDATE. 큰 테이블에서는 조정 오버헤드가 누적되고, 보강 로직은 데이터가 있는 스키마가 아니라 애플리케이션 코드에 존재하게 됩니다.

VillageSQL 사용: SQL에서 ai_prompt()

ai_prompt(provider, model, api_key, prompt)는 API를 호출하고 응답을 문자열로 반환합니다. 스칼라 함수를 사용할 수 있는 모든 곳에서 사용하세요.

행을 대량으로 업데이트하기

가장 일반적인 용도: 기존 행 전체에 보강 컬럼을 백필하기.
NULL 행이 더 이상 남지 않을 때까지 애플리케이션에서 루프로 UPDATE를 실행하세요.

WHERE에서 프롬프트 결과 사용하기

AI 출력으로 필터링할 수 있지만, 스캔하는 모든 행에 대해 모델을 호출합니다:
성능을 위해서는 WHERE 절에서 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을 발생시킵니다.

문제 해결

참고