Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

PDF 텍스트 추출과 청크 구성

긴 문서를 청크(Chunk)로 나누면 임베딩 모델(Embedding model)의 입력 길이를 맞추고 서로 다른 주제를 별도로 검색할 수 있습니다. 각 청크를 객체(Object)로 만들고 원문 객체와 링크(Link)로 연결합니다. 검색 화면에는 청크 내용과 원본 PDF를 함께 표시하여 사용자가 근거를 확인하게 합니다.

PDF 가져오기와 텍스트 추출

  1. PDF를 미디어 집합(Media set)으로 가져옵니다.
  2. 해당 미디어 집합을 Pipeline Builder의 입력으로 추가합니다.
  3. Get Media References 보드에서 파일을 가리키는 미디어 참조(Media reference)를 얻습니다.

  1. Text Extraction 보드의 Media reference에 참조 열을 지정합니다. Extract method에서 Raw text 또는 OCR을 선택합니다. Start page와 End page는 양 끝을 포함합니다. 시작의 기본값은 첫 페이지인 1이고 끝을 생략하면 마지막 페이지까지 처리합니다. 끝 페이지는 뒤에서 세는 음수 인덱스도 지원합니다.

추출 결과에서 검색할 텍스트를 준비하고 문서 식별값을 함께 유지합니다. 이미지나 도표가 중요하면 멀티모달 모델의 페이지 이미지 처리도 검토합니다.

Chunk string 설정

변환 메뉴에서 Chunk string 보드를 추가합니다. 배치와 스트리밍 모두 사용할 수 있으며 출력은 문자열 배열입니다.

입력의미
Expression나눌 텍스트 열입니다.
Chunk size청크의 대략적인 문자 수입니다. 0보다 커야 합니다.
Chunk overlap앞 청크와 공유할 대략적인 문자 수입니다. 0 이상이고 Chunk size보다 작아야 합니다.
Separators우선순위가 있는 구분자 목록입니다. 높은 우선순위로 나눈 조각이 여전히 크면 다음 구분자를 사용합니다.
Keep separator구분자를 출력 청크에 포함할지 정합니다.

설정 예는 크기 256자, 중첩 20자이며 구분자 순서는 빈 줄 \n\n, 줄바꿈 \n, 공백과 빈 문자열입니다. 먼저 문단과 문장 및 단어를 가능한 한 유지하면서 더 작은 단위로 나눕니다. 지정한 구분자가 모두 소진되면 크기를 넘는 조각이 남을 수 있으므로 실제 청크 크기도 확인합니다.

문자 수는 모델의 토큰 수와 다릅니다. 모델 입력 한도를 기준으로 여유를 두며, 더 복잡한 청크 전략은 코드 저장소의 파이프라인에서 구현할 수 있습니다.

청크를 객체용 행으로 바꾸기

다음 데이터는 구조를 설명하기 위한 가상 문서 두 건입니다. 단어별 행을 보기 쉽게 만들기 위해 여기에서는 Chunk size를 4, Chunk overlap을 0, Separators를 공백 하나, Keep separator를 false로 설정합니다. 앞의 256자 설정과 별개의 예입니다.

object_idobject_textchunks
abcgold ring lost[gold, ring, lost]
xyzfast cars zoom[fast, cars, zoom]

Explode Array with Position 보드로 chunks를 펼칩니다. 각 행에는 배열 위치 position과 해당 값 element를 가진 구조체(Struct)가 생깁니다.

object_idobject_textchunks_with_position
abcgold ring lost{position: 0, element: gold}
abcgold ring lost{position: 1, element: ring}
abcgold ring lost{position: 2, element: lost}
xyzfast cars zoom{position: 0, element: fast}
xyzfast cars zoom{position: 1, element: cars}
xyzfast cars zoom{position: 2, element: zoom}

구조체의 position과 element를 각각 position, chunk 열로 꺼냅니다. 이때 원래 chunks 배열과 object_text는 정리 전까지 각 행에 남아 있습니다.

position을 문자열로 바꾸고 object_id, 밑줄과 연결하여 chunk_id를 만듭니다.

이 예에서는 object_text, chunks, position과 chunks_with_position을 제거하여 다음 열을 남깁니다.

object_idchunkchunk_id
abcgoldabc_0
abcringabc_1
abclostabc_2
xyzfastxyz_0
xyzcarsxyz_1
xyzzoomxyz_2

chunk_id는 청크 객체의 기본 키(Primary key), object_id는 원문과 연결할 식별값입니다. 임베딩 생성에서 각 chunk를 모델에 전달하고 실제 반환 벡터를 embedding 열에 추가합니다. 원문 표시가 필요한 앱에서는 PDF 미디어 참조와 필요한 페이지 정보도 청크와 연결하여 유지합니다.