ML.GENERATE_TEXT 함수
이 문서에서는 BigQuery 테이블에 저장된 텍스트에 대해 생성형 자연어 작업을 수행할 수 있는 ML.GENERATE_TEXT
함수를 설명합니다. 언어 태스크 예시에는 다음이 포함됩니다.
- 분류
- 감정 분석
- 항목 추출
- 추출적 질의 응답
- 요약
- 다른 스타일로 텍스트 재작성
- 광고 문구 생성
- 개념 구상
이 함수는 Vertex AI text-bison*
자연어 기반 모델(LLM) 중 하나를 나타내는 BigQuery ML 원격 모델로 요청을 전송한 후 LLM의 응답을 반환합니다. 여러 함수 인수는 LLM 응답을 구성하는 매개변수를 제공합니다.
prompt
매개변수는 분석할 모델을 위한 텍스트를 제공합니다.
프롬프트 디자인은 LLM에서 반환하는 응답에 큰 영향을 미칠 수 있습니다. 자세한 내용은 텍스트 프롬프트 설계를 참조하세요.
구문
ML.GENERATE_TEXT( MODEL `project_id.dataset.model`, { TABLE `project_id.dataset.table` | (query_statement) }, STRUCT( [number_of_output_tokens AS max_output_tokens] [, top_k_value AS top_k] [, top_p_value AS top_p] [, temperature AS temperature] [, flatten_json_output AS flatten_json_output]) )
인수
ML.GENERATE_TEXT
는 다음 인수를 사용합니다.
project_id
: 프로젝트 IDdataset
: 모델을 포함하는 BigQuery 데이터 세트model
:text-bison*
Vertex AI LLM 중 하나를 사용하는 원격 모델의 이름. 이 유형의 원격 모델을 만드는 방법에 대한 자세한 내용은ENDPOINT
를 참조하세요.table
: 프롬프트 데이터가 포함된 BigQuery 테이블의 이름.prompt
라는 열의 텍스트가 모델로 전송됩니다. 테이블에prompt
열이 없으면 이 인수에SELECT
문을 사용하여 기존 테이블 열에 별칭을 제공합니다.prompt
열을 사용할 수 없으면 오류가 발생합니다.query_statement
: 프롬프트 데이터를 생성하는 데 사용되는 GoogleSQL 쿼리max_output_tokens
: 모델이 출력하는 최대 토큰 수를 설정하는[1,1024]
범위의INT64
값. 응답이 짧을수록 낮은 값을 지정하고 응답이 길면 높은 값을 지정하세요. 기본값은50
입니다.토큰은 단어보다 작을 수 있으며 약 4자입니다. 100개의 토큰은 대략 60~80개의 단어에 해당합니다.
temperature
: 응답 생성 중에 샘플링에 사용되는[0.0,1.0]
범위의FLOAT64
값. 이 값은top_k
및top_p
가 적용될 때 발생합니다. 이는 토큰 선택의 무작위성 수준을 제어합니다.temperature
값이 낮을수록 보다 결정적이고 덜 개방적인 또는 창의적인 응답이 필요한 프롬프트에 적합하고,temperature
값이 높을수록 다양하거나 창의적인 결과로 이어질 수 있습니다.temperature
값0
은 결정적입니다. 즉, 가능성이 가장 높은 응답이 항상 선택됩니다. 기본값은1.0
입니다.top_k
: 모델이 출력을 위해 토큰을 선택하는 방법을 변경하는[1,40]
범위의INT64
값. 임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다. 기본값은40
입니다.top_k
값1
이면 다음에 선택된 토큰이 모델 어휘의 모든 토큰 중에서 가장 확률이 높은 반면,top_k
값3
이면temperature
값을 사용하여 가장 확률이 높은 3개 토큰 중에서 다음 토큰이 선택된다는 의미입니다.각 토큰 선택 단계에서 확률이 가장 높은
top_k
토큰이 샘플링됩니다. 그런 다음top_p
값을 기준으로 토큰을 추가로 필터링하고 강도 샘플링을 사용하여 최종 토큰을 선택합니다.top_p
: 모델이 출력에 사용할 토큰을 선택하는 방법을 변경하는[0.0,1.0]
범위의FLOAT64
값입니다. 임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다. 기본값은1.0
입니다.토큰은 확률의 합이
top_p
값과 같아질 때까지 (top_k
값 기준에서) 확률이 가장 높은 것부터 가장 낮은 것까지 선택됩니다. 예를 들어 토큰 A, B, C의 확률이0.3
,0.2
,0.1
이고top_p
값이0.5
인 경우, 모델은temperature
값을 사용하여 A 또는 B를 다음 토큰으로 선택하고 C는 고려하지 않습니다.flatten_json_output
: 함수로 반환된 JSON 콘텐츠가 개별 열로 파싱되는지 여부를 결정하는BOOL
값입니다. 기본값은FALSE
입니다.
출력
ML.GENERATE_TEXT
는 입력 테이블과 다음 열을 반환합니다.
ml_generate_text_result
: 모델에 대한projects.locations.endpoints.predict
호출의 JSON 응답입니다. 생성된 텍스트는content
요소에 있습니다. 안전 속성은safetyAttributes
요소에 있습니다.flatten_json_output
이FALSE
면 이 열이 반환됩니다.ml_generate_text_llm_result
: 모델에 대한projects.locations.endpoints.predict
호출에서 반환된 생성된 텍스트를 포함하는STRING
값입니다.flatten_json_output
이TRUE
면 이 열이 반환됩니다.ml_generate_text_rai_result
: 모델에 대한projects.locations.endpoints.predict
호출에서 반환된 안전 속성을 포함하는STRING
값입니다.flatten_json_output
이TRUE
면 이 열이 반환됩니다.ml_generate_text_status
: 해당 행의 API 응답 상태가 포함된STRING
값입니다. 작업이 성공하면 이 값이 비어 있습니다.
위치
ML.GENERATE_TEXT
은 함수가 참조하는 원격 모델과 동일한 리전에서 실행되어야 합니다. 다음 위치에서는 text-bison*
모델을 기반으로 하는 원격 모델만 만들 수 있습니다.
asia-northeast3
asia-southeast1
eu
europe-west1
europe-west2
europe-west3
europe-west4
europe-west9
us
us-central1
us-west4
할당량
Cloud AI 서비스 테이블 값 함수 할당량 및 한도를 참조하세요.
예시
예시 1
이 예시에서는 다음과 같은 특성을 가진 요청을 보여줍니다.
- 단일 프롬프트를 제공합니다.
- 더 긴 텍스트 응답을 반환합니다.
- 가능성이 낮은 텍스트 응답을 반환합니다.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, (SELECT 'What is the purpose of dreams?' AS prompt), STRUCT( 0.8 AS temperature, 1024 AS max_output_tokens, 0.95 AS top_p, 40 AS top_k));
예시 2
이 예시에서는 다음과 같은 특성을 가진 요청을 보여줍니다.
prompt
라는 이름의 테이블 열에서 프롬프트 데이터를 제공합니다.- 생성된 더 짧은 텍스트 응답을 반환합니다.
- 더 가능성이 높은 생성된 텍스트 응답을 반환합니다.
- JSON 응답을 별도의 열로 평면화합니다.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model` TABLE `mydataset.prompt_table`, STRUCT( 0.2 AS temperature, 75 AS max_output_tokens, 0.3 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));
예시 3
이 예시에서는 다음과 같은 특성을 가진 요청을 보여줍니다.
- 별칭
prompt
인question
이라는 이름의 테이블 열에서 프롬프트 데이터를 제공합니다. - 적당히 긴 텍스트 응답을 반환합니다.
- 다소 가능성이 있는 생성된 텍스트 응답을 반환합니다.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, (SELECT question AS prompt FROM `mydataset.prompt_table`), STRUCT( 0.4 AS temperature, 750 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k));
예시 4
이 예시에서는 다음과 같은 특성을 가진 요청을 보여줍니다.
- 프롬프트 데이터를 제공하기 위해 문자열과 테이블 열을 연결합니다.
- 더 긴 텍스트 응답을 반환합니다.
- 더 가능성이 높은 생성된 텍스트 응답을 반환합니다.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT( 'Classify the sentiment of the following text as positive or negative.Text:', input_column, 'Sentiment:') AS prompt FROM `mydataset.input_table` ), STRUCT( 0.1 AS temperature, 1000 AS max_output_tokens, 0.1 AS top_p, 10 AS top_k));
다음 단계
- 공개 데이터 세트를 사용한 텍스트 생성 튜토리얼 사용해 보기
- 자체 데이터를 사용하여 텍스트를 생성하는 방법에 대한 단계별 안내 참조하기
- BigQuery 데이터 분석에 사용할 수 있는 AI 함수 자세히 알아보기