이 페이지에서는 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 API 사용 설정
프로젝트에 Document AI API를 사용 설정해야 합니다. API 사용 설정에 대한 자세한 내용은 서비스 사용 문서를 참조하세요.
Enable the Document AI API.
레이아웃 파서 사용 설정
레이아웃 파서를 사용 설정하려면 다음 단계를 따르세요.
프로세서 만들기 및 관리의 안내에 따라 레이아웃 파서를 만듭니다.
프로세서 유형 이름은
LAYOUT_PARSER_PROCESSOR
입니다.프로세서 사용 설정의 안내에 따라 Layout Parser를 사용 설정합니다.
RAG 기술 자료 (코퍼스)
RAG 코퍼스가 없는 경우 RAG 코퍼스를 만듭니다. 예를 보려면 RAG 코퍼스 만들기 예시를 참고하세요.
이미 RAG 자료가 있는 경우 레이아웃 파서 없이 가져온 기존 파일은 레이아웃 파서를 사용하여 파일 가져오기를 실행해도 다시 가져오지 않습니다. 파일에서 레이아웃 파서를 사용하려면 먼저 파일을 삭제하세요. 예를 보려면 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/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import
JSON 요청 본문:
{
"import_rag_files_config": {
"gcs_source": {
"uris": "GCS_URIS"
},
"rag_file_parsing_config": {
"layout_parser": {
"processor_name": "LAYOUT_PARSER_PROCESSOR_NAME"
}
},
"rag_file_transformation_config": {
"rag_file_chunking_config": {
"fixed_length_chunking": {
"chunk_size": CHUNK_SIZE
}
}
},
}
}
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
request.json 파일에 요청 본문을 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"
Powershell
request.json 파일에 요청 본문을 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content
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 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,
transformation_config = rag.TransformationConfig(
chunking_config=rag.ChunkingConfig(
chunk_size=512, # Optional
chunk_overlap=100, # Optional
),
),
max_embedding_requests_per_min=900, # Optional
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 파일을 검색하는 예는 검색 쿼리를 참고하세요.
예측
예측은 검색된 컨텍스트를 사용하여 그라운딩된 응답을 생성합니다. 예를 보려면 세대를 참고하세요.