Vertex AI RAG 엔진에서 Document AI 레이아웃 파서 사용

이 페이지에서는 Document AI 레이아웃 파서와 RAG 엔진에서 사용되는 방식을 소개합니다.

Document AI

Document AI는 문서에서 비정형 데이터를 가져와서 데이터베이스에 저장하기에 적합한 필드로 변환하는 문서 처리 및 문서 이해 플랫폼입니다. 구조화된 데이터는 이해하고 분석하고 사용할 수 있는 데이터로 이어집니다.

Document AI는 확장 가능한 엔드 투 엔드 클라우드 기반 문서 처리 애플리케이션을 만드는 데 도움이 되도록 생성형 AI를 사용하여 Vertex AI 내 제품 위에 구축됩니다. 이러한 제품을 사용하기 위해 전문적인 머신러닝 지식이 필요하지 않습니다.

Document AI 레이아웃 파서

레이아웃 파서는 텍스트, 표, 목록과 같은 문서의 콘텐츠 요소를 추출합니다. 그런 다음 레이아웃 파서는 생성형 AI 및 탐색 애플리케이션에서 정보 검색을 용이하게 하는 컨텍스트 인식 청크를 만듭니다.

검색 및 LLM 생성에 사용할 때는 청크 처리 과정에서 문서의 레이아웃이 고려되므로 시맨틱 일관성이 개선되고 콘텐츠의 노이즈가 줄어듭니다. 청크의 모든 텍스트는 제목, 부제목, 목록과 같은 동일한 레이아웃 항목에서 가져옵니다.

레이아웃 감지에 사용되는 파일 형식은 파일 유형별 레이아웃 감지를 참고하세요.

Vertex AI RAG에서 레이아웃 파서 사용

ImportRagFiles API는 레이아웃 파서를 지원하지만 다음과 같은 제한사항이 적용됩니다.

  • 모든 파일 형식의 최대 파일 크기는 20MB입니다.
  • PDF 파일당 최대 500페이지가 허용됩니다.

Document AI 할당량가격이 적용됩니다.

Document AI API 사용 설정

다음 샘플 코드는 curl 명령어에서 REST를 사용하고 Python용 Vertex AI SDK를 사용하여 고급 파싱을 사용 설정하는 방법을 보여줍니다.

REST

이 코드 샘플에서는 레이아웃 파서를 사용하여 Cloud Storage 파일을 가져오는 방법을 보여줍니다. 다른 소스에서 파일을 가져오는 등 더 많은 구성 옵션은 ImportRagFilesConfig를 참고하세요.

코드 샘플에 사용된 변수를 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 요청을 처리할 리전입니다.
  • RAG_CORPUS_ID: RAG 자료 리소스의 ID입니다.
  • GCS_URIS: Cloud Storage 위치 목록입니다. 예: "gs://my-bucket1", "gs://my-bucket2"
  • LAYOUT_PARSER_PROCESSOR_NAME: 생성된 레이아웃 파서 프로세서의 리소스 경로입니다. 예를 들면 "projects/{project}/locations/{location}/processors/{processor_id}"입니다.
  • CHUNK_SIZE: 선택사항: 각 청크에 있어야 하는 토큰 수입니다.
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

JSON 요청 본문:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": GCS_URIS
    },
    "file_parsing_config": {
      "layout_parser": {
        "processor_name": "LAYOUT_PARSER_PROCESSOR_NAME"
      }
    },
    "rag_file_chunking_config": {
      "chunk_size": CHUNK_SIZE
    },
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

request.json 파일에 요청 본문을 저장하고 다음 명령어를 실행합니다.

curl -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

Python

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

코드 샘플에 사용된 변수를 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 요청을 처리할 리전입니다.
  • RAG_CORPUS_ID: RAG 자료 리소스의 ID입니다.
  • GCS_URIS: Cloud Storage 위치 목록입니다. 예: "gs://my-bucket1", "gs://my-bucket2"
  • LAYOUT_PARSER_PROCESSOR_NAME: 생성된 레이아웃 파서 프로세서의 리소스 경로입니다. 예를 들면 "projects/{project}/locations/{location}/processors/{processor_id}"입니다.
  • CHUNK_SIZE: 선택사항: 각 청크에 있어야 하는 토큰 수입니다.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/<var>PROJECT_ID</var>/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"
# paths = ["https://drive.google.com/file/123", "GCS_URIS"]
# Supports Cloud Storage and Google Drive Links
layout_parser_processor_name = "projects/PROJECT_ID/locations/<var>LOCATION</var>/processors/LAYOUT_PARSER_PROCESSOR_NAME"

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

response = rag.import_files(
    corpus_name=RAG_CORPUS_ID,
    paths=paths,
    chunk_size=512,  # Optional
    chunk_overlap=100,  # Optional
    max_embedding_requests_per_min=900,  # Optional
    layout_parser=rag.LayoutParserConfig(
        processor_name=layout_parser_processor_name,
        max_parsing_requests_per_min=120,  # Optional
    )
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.

레이아웃 파서 사용 설정

이 코드 샘플은 레이아웃 파서를 사용 설정하는 방법을 보여줍니다.

RAG 기술 자료 (코퍼스)

RAG 코퍼스가 없는 경우 RAG 코퍼스를 만듭니다. 예를 보려면 RAG 코퍼스 만들기 예시를 참고하세요.

이미 RAG 자료가 있는 경우 Layout Parser를 사용하여 파일 가져오기를 실행해도 레이아웃 파서 없이 가져온 기존 파일이 다시 가져오지 않습니다. 파일에서 레이아웃 파서를 사용하려면 먼저 파일을 삭제하세요. 예를 보려면 RAG 파일 삭제 예를 참고하세요.

Layout Parser를 사용하여 파일 가져오기

레이아웃 파서를 사용하여 다양한 소스의 파일과 폴더를 가져올 수 있습니다.

REST

이 코드 샘플은 레이아웃 파서를 사용하여 Cloud Storage 파일을 가져오는 방법을 보여줍니다. 다른 소스에서 파일을 가져오는 등 더 많은 구성 옵션은 ImportRagFilesConfig 참조를 참고하세요.

요청 데이터를 사용하기 전에 코드 샘플에 사용된 다음 변수를 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 요청을 처리하는 리전입니다.
  • RAG_CORPUS_ID: RAG 자료 리소스의 ID입니다.
  • GCS_URIS: Cloud Storage 위치 목록입니다. 예: "gs://my-bucket1", "gs://my-bucket2"
  • LAYOUT_PARSER_PROCESSOR_NAME: 생성된 레이아웃 파서 프로세서의 리소스 경로입니다. 예를 들면 "projects/{project}/locations/{location}/processors/{processor_id}"입니다.
  • CHUNK_SIZE: 선택사항: 각 청크에 있어야 하는 토큰 수입니다.
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

JSON 요청 본문:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": "GCS_URIS"
    },
    "file_parsing_config": {
      "layout_parser": {
        "processor_name": "LAYOUT_PARSER_PROCESSOR_NAME"
      }
    },
    "rag_file_chunking_config": {
      "chunk_size": CHUNK_SIZE
    },
  }
}

요청을 보내려면 다음 코딩 옵션 중 하나를 선택합니다.

request.json 파일에 요청 본문을 저장하고 다음 명령어를 실행합니다.

curl -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

Python

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

코드 샘플에서 사용되는 다음 변수를 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 요청을 처리하는 리전입니다.
  • RAG_CORPUS_ID: RAG 자료 리소스의 ID입니다.
  • GCS_URIS: Cloud Storage 위치 목록입니다. 예: "gs://my-bucket1", "gs://my-bucket2"
  • LAYOUT_PARSER_PROCESSOR_NAME: 생성된 레이아웃 파서 프로세서의 리소스 경로입니다. 예를 들면 "projects/{project}/locations/{location}/processors/{processor_id}"입니다.
  • CHUNK_SIZE: 선택사항: 각 청크에 있어야 하는 토큰 수입니다.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"
# paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]
# Supports Cloud Storage and Google Drive links
layout_parser_processor_name = "LAYOUT_PARSER_PROCESSOR_NAME"

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

response = rag.import_files(
    corpus_name=corpus_name,
    paths=paths,
    chunk_size=512,  # Optional
    chunk_overlap=100,  # Optional
    max_embedding_requests_per_min=900,  # Optional
    layout_parser=rag.LayoutParserConfig(
        processor_name=layout_parser_processor_name,
        max_parsing_requests_per_min=120,  # Optional
    )
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.

검색 쿼리

사용자가 질문하거나 프롬프트를 제공하면 RAG의 검색 구성요소는 기술 자료를 통해 쿼리와 관련된 정보를 찾습니다.

검색 텍스트를 기반으로 코퍼스에서 RAG 파일을 검색하는 예는 검색 쿼리를 참고하세요.

예측

예측은 검색된 컨텍스트를 사용하여 그라운딩된 응답을 생성합니다. 예를 보려면 세대를 참고하세요.

다음 단계