LLM 파서 사용

이 페이지에서는 Vertex AI RAG 엔진 LLM 파서를 사용하는 방법을 설명합니다.

소개

Vertex AI RAG 엔진은 문서 파싱에 LLM을 사용합니다. LLM은 다음과 같은 방식으로 문서를 효과적으로 처리할 수 있습니다.

  • 다양한 형식의 의미론적 콘텐츠를 이해하고 해석합니다.
  • 관련 문서 청크를 검색합니다.
  • 문서에서 의미 있는 정보를 추출합니다.
  • 문서에서 관련 섹션을 식별합니다.
  • 복잡한 문서를 정확하게 요약합니다.
  • 시각적 요소를 이해하고 상호작용합니다.
  • 차트 및 다이어그램에서 데이터를 추출합니다.
  • 이미지를 설명합니다.
  • 차트와 텍스트 간의 관계를 이해합니다.
  • 맥락이 풍부하고 정확한 응답을 더 많이 제공합니다.

Vertex AI RAG 엔진의 기능은 생성된 응답의 품질을 크게 개선합니다.

지원되는 모델

LLM 파서는 Gemini 모델만 지원합니다. RAG API를 사용 설정한 경우 지원되는 모델에 액세스할 수 있습니다. 지원되는 생성 모델 목록은 생성형 모델을 참고하세요.

지원되는 파일 형식

LLM 파서에서 지원하는 파일 형식은 다음과 같습니다.

  • application/pdf
  • image/png
  • image/jpeg
  • image/webp
  • image/heic
  • image/heif

가격 책정 및 할당량

가격 책정 세부정보는 Vertex AI 가격 책정을 참고하세요.

적용되는 할당량은 할당량 요청을 참고하세요.

LLM 파서는 Gemini 모델을 호출하여 문서를 파싱합니다. 이로 인해 프로젝트에 추가 비용이 청구됩니다. 다음 수식을 사용하여 비용을 대략적으로 추정할 수 있습니다.

cost = number_of_document_files * average_pages_per_document *
(average_input_tokens * input_token_pricing_of_selected_model +
average_output_tokens * output_token_pricing_of_selected_model)

예를 들어 PDF 파일이 1,000개 있고 각 PDF 파일에 50페이지가 있습니다. 평균 PDF 페이지에는 500개의 토큰이 있으며 프롬프트를 표시하기 위해 100개의 토큰이 추가로 필요합니다. 평균 출력은 100개 토큰입니다.

Gemini 2.0 Flash-Lite는 파싱을 위해 구성에서 사용되며, 입력 토큰 100만 개당 $0.075, 출력 텍스트 토큰당 $0.3의 비용이 청구됩니다.

cost = 1,000 * 50 * (600 * 0.075 / 1M + 100 * 0.3 / 1M) = 3.75

비용은 3,750원입니다.

LlmParser가 사용 설정된 파일 가져오기

코드 샘플에 사용된 다음 변수의 값을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • LOCATION: 요청이 처리되는 리전입니다.
  • RAG_CORPUS_RESOURCE: 자료의 ID입니다.
  • GCS_URI: 가져올 파일의 Cloud Storage URI입니다.
  • GOOGLE_DRIVE_URI: 가져올 파일의 Google Drive URI입니다.
  • MODEL_NAME: 파싱에 사용되는 모델의 리소스 이름입니다.

    형식: projects/{project_id}/locations/{location}/publishers/google/models/{model_id}

  • CUSTOM_PARSING_PROMPT: 선택사항: LLM 파서가 문서 파싱에 사용할 수 있도록 고객이 구성한 맞춤 프롬프트입니다.
  • MAX_PARSING_REQUESTS_PER_MIN: 선택사항: 작업이 분당 Vertex AI 모델에 보낼 수 있는 최대 요청 수입니다. 자세한 내용은 Vertex AI의 생성형 AI 비율 제한 및 프로젝트의 할당량 및 시스템 한도 페이지를 참고하여 적절한 값을 설정하세요.

REST

  curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE/ragFiles:import" -d '{
    "import_rag_files_config": {
      "gcs_source": {
        "uris":  ["GCS_URI", "GOOGLE_DRIVE_URI"]
      },
      "rag_file_chunking_config": {
        "chunk_size": 512,
        "chunk_overlap": 102
      },
      "rag_file_parsing_config": {
        "llm_parser": {
          "model_name": "MODEL_NAME",
          "custom_parsing_prompt": "CUSTOM_PARSING_PROMPT"
          "max_parsing_requests_per_min": "MAX_PARSING_REQUESTS_PER_MIN"
        }
      }
    }
  }'

Python

Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참조 문서를 참고하세요.

  from vertexai.preview import rag
  import vertexai

  PROJECT_ID = "PROJECT_ID"
  CORPUS_NAME = "RAG_CORPUS_RESOURCE"
  LOCATION = "LOCATION"
  MODEL_ID = "MODEL_ID"
  MODEL_NAME = "projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}"
  MAX_PARSING_REQUESTS_PER_MIN = MAX_PARSING_REQUESTS_PER_MIN # Optional
  CUSTOM_PARSING_PROMPT = "Your custom prompt" # Optional

  PATHS = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]

  # Initialize Vertex AI API once per session
  vertexai.init(project={PROJECT_ID}, location={LOCATION})

  transformation_config = rag.TransformationConfig(
      chunking_config=rag.ChunkingConfig(
          chunk_size=1024, # Optional
          chunk_overlap=200, # Optional
      ),
  )

  llm_parser_config = rag.LlmParserConfig(
      model_name = MODEL_NAME,
      max_parsing_requests_per_min=MAX_PARSING_REQUESTS_PER_MIN, # Optional
      custom_parsing_prompt=CUSTOM_PARSING_PROMPT, # Optional
  )

  rag.import_files(
      CORPUS_NAME,
      PATHS,
      llm_parser=llm_parser_config,
      transformation_config=transformation_config,
  )

메시지 표시

Vertex AI RAG 엔진 LLM 파서는 문서 파싱을 위해 사전 정의되고 조정된 프롬프트를 사용합니다. 그러나 일반적인 프롬프트에 적합하지 않을 수 있는 전문 문서가 있는 경우 API를 사용할 때 맞춤 파싱 프롬프트를 지정할 수 있습니다. Gemini에 문서 파싱을 요청하면 Vertex AI RAG 엔진이 기본 시스템 프롬프트에 프롬프트를 추가합니다.

프롬프트 템플릿 표

문서 파싱에 도움이 되도록 다음 표에는 Vertex AI RAG 엔진에서 문서를 파싱하는 데 사용할 수 있는 프롬프트를 만드는 방법을 안내하는 프롬프트 템플릿 예가 나와 있습니다.

안내 템플릿 문 예시
역할을 지정합니다. [사실 데이터 추출자 또는 정보 검색자와 같은 역할 지정]입니다. 정보 검색 담당자입니다.
태스크를 지정합니다. [문서, 텍스트, 기사, 이미지, 표와 같은 문서 소스 지정] 에서 [사실적 진술, 주요 데이터, 구체적인 세부정보와 같은 정보 유형 지정]을 추출합니다. sample.txt 파일에서 키 데이터를 추출합니다.
LLM이 문서에 따라 출력을 생성하는 방법을 설명합니다. 각 사실을 [구조화된 목록 또는 텍스트 형식과 같은 출력 형식 지정]으로 표시하고 [페이지, 단락, 표, 행과 같은 소스 위치 지정]에 연결합니다. 각 사실을 구조화된 목록으로 표시하고 샘플 페이지로 연결합니다.
LLM의 초점이 되어야 할 부분을 강조 표시합니다. [이름, 날짜, 숫자, 속성, 관계와 같은 주요 데이터 유형을 지정]을 설명과 정확하게 추출합니다. 이름과 날짜를 추출합니다.
LLM에서 피하려는 항목을 강조 표시합니다. [분석, 해석, 요약, 추론, 의견 제시 등 피해야 할 작업을 나열하세요.] 문서에 명시적으로 명시된 내용만 추출합니다. 의견을 제시하지 않습니다. 문서에 명시적으로 명시된 내용만 추출합니다.

일반 지침

LLM 파서로 전송할 프롬프트를 작성하려면 다음 가이드라인을 따르세요.

  • 구체적: 추출할 태스크와 정보 유형을 명확하게 정의합니다.
  • 상세: 출력 형식, 소스 기여 분석, 다양한 데이터 구조 처리에 관한 자세한 안내를 제공합니다.
  • 제약: 분석이나 해석과 같이 AI가 수행해서는 안 되는 작업을 명시적으로 명시합니다.
  • 명확함: 명확하고 지시적인 표현을 사용합니다.
  • 구조화됨: 가독성을 위해 번호 매기기 목록이나 글머리기호를 사용하여 안내를 논리적으로 정리합니다.

파싱 품질 분석

이 표에는 고객이 Vertex AI RAG 엔진을 사용하여 실행한 시나리오의 결과가 나와 있습니다. 의견에 따르면 LLM 파서가 문서 파싱 품질을 개선하는 것으로 보입니다.

시나리오 결과
슬라이드에서 정보를 파싱하고 섹션 연결 LLM 파서가 한 슬라이드의 섹션 제목을 후속 슬라이드에 표시된 세부정보에 연결했습니다.
표에서 정보 이해 및 추출 LLM 파서는 대규모 표 내의 열과 헤더를 올바르게 연결하여 특정 질문에 답변했습니다.
플로우 차트 해석 LLM 파서는 플로우 차트의 로직을 따르고 올바른 작업 시퀀스와 해당 정보를 추출할 수 있었습니다.
그래프에서 데이터 추출 LLM 파서는 선 그래프와 같은 다양한 유형의 그래프를 해석하고 쿼리를 기반으로 특정 데이터 포인트를 추출할 수 있습니다.
제목과 텍스트 간의 관계 캡처 프롬프트에 따라 LLM 파서는 제목 구조에 주의를 기울였으며 특정 주제 또는 섹션과 관련된 모든 관련 정보를 검색할 수 있었습니다.
프롬프트 엔지니어링으로 삽입 제한을 극복할 수 있는 잠재력 처음에는 일부 사용 사례에서 임베딩 모델의 제한으로 인해 어려움이 있었지만, 추가 실험을 통해 잘 작성된 LLM 파서 프롬프트는 임베딩 모델만으로는 의미 이해가 어려운 경우에도 이러한 문제를 완화하고 올바른 정보를 검색할 수 있음을 보여주었습니다.

LLM 파서는 문서 내 컨텍스트를 이해하고 추론하는 LLM의 기능을 향상시켜 더 정확하고 포괄적인 응답을 제공합니다.

검색 쿼리

생성형 AI 모델로 전송되는 프롬프트를 입력하면 RAG의 검색 구성요소는 기술 자료를 통해 쿼리와 관련된 정보를 찾습니다. 검색어 텍스트를 기반으로 코퍼스에서 RAG 파일을 검색하는 예는 검색 쿼리를 참고하세요.

다음 단계