모델에 PDF 대신 Markdown을 주는 이유
채팅에 PDF를 첨부하면 앱이 텍스트를 대신 뽑아 주지만, 모델이 실제로 무엇을 받았는지는 보이지 않습니다. 먼저 직접 변환하면 세 가지가 좋습니다.
- 텍스트가 보입니다. 깨진 표, 뒤섞인 단, 텍스트 없는 페이지가 모델을 헷갈리게 하기 전에 드러납니다.
- 구조가 살아남습니다. 제목, 목록, 표가 모델이 잘 읽는 Markdown으로 남고, 밋밋한 줄의 나열이 되지 않습니다.
- 토큰이 덜 듭니다. 쪽 번호, 반복되는 머리글, 줄 끝 하이픈, 레이아웃용 여백이 사라져서 컨텍스트 창을 내용에 더 많이 씁니다.
이 페이지는 처음부터 그에 맞춘 설정으로 열립니다. 이미지는 빼고, 각 페이지가 시작하는 곳에 <!-- Page N --> 주석을 넣어 모델이 페이지를 인용할 수 있게 하며, 이미지 줄은 뺍니다.
믿을 수 있는 토큰 수
Markdown 위의 숫자는 복사하거나 내려받을 내용의 정확한 토큰 수이며, 프런트매터와 페이지 구분도 포함합니다. GPT-4o와 그 이후 OpenAI 모델이 쓰는 인코딩 o200k_base로 셉니다. Claude를 비롯한 다른 모델은 자체 토크나이저를 쓰므로, 그런 모델에는 정확한 값이 아니라 가까운 추정치로 보세요.
LLM용으로 줄이기의 스위치마다, 켜기 전에 그 파일에서 몇 토큰을 아끼는지 보여 줍니다.
| 스위치 | 하는 일 |
|---|---|
| 링크 주소 빼기 | 링크 글자는 두고 URL을 없앰 |
| 굵게와 기울임 빼기 | **와 * 기호를 없앰 |
| 이미지 줄 빼기 | 이미지 자리 표시도 링크도 없음 |
| HTML 태그를 일반 텍스트로 | <sup>, <sub>, <br>을 일반 텍스트로 |
| 문자 정규화 | fi 같은 합자는 fi로, 특이한 공백은 보통 공백으로 |
| 표 압축 | 빈 열과 셀 여백을 없앰 |
PDF를 다시 읽지 않으므로 스위치는 밀리초 안에 반영됩니다.
RAG용 청크
검색에는 임베딩할 수 있을 만큼 작고 그 자체로 뜻이 통하는 조각으로 나눈 문서가 필요합니다. 청크 탭이 Markdown을 나눠 줍니다.
- 먼저 제목에서 나눕니다. 할 수 있는 한 절 중간에서 시작하지 않으므로, 청크마다 한 가지 주제를 다룹니다.
- 고른 토큰 한도 안에서 나눕니다. 256에서 8,192 토큰까지 고를 수 있습니다. 한도보다 큰 절은 문장 사이에서, 큰 표는 행 사이에서 나누고 머리글 행을 반복합니다.
- 제목 경로와 함께. 청크마다
방법 › 데이터 수집처럼 위에 있는 제목을 알고, 그것으로 시작할 수 있어서, 검색된 청크도 어디서 왔는지 알려 줍니다. - 페이지와 함께. 답변이 원본의 12쪽을 가리킬 수 있습니다.
JSONL 다운로드를 누르면 한 줄에 JSON 객체 하나가 들어 있습니다.
{
"id": "report.pdf#3",
"source": "report.pdf",
"chunk": 3,
"headings": ["Methods", "Data collection"],
"page_start": 4,
"page_end": 5,
"tokens": 812,
"text": "..."
}
코드 몇 줄로 쓰고 있는 벡터 저장소에 넣을 수 있습니다.
잘 통하는 작업 순서
- PDF를 놓고 확인할 페이지부터 보세요. 잘못 나온 페이지는 고치거나 OCR로 읽습니다.
- 아끼는 양이 가치 있는 줄이기만 켜세요. 모델이 출처를 밝히게 하려면 링크는 두세요.
- 채팅이라면 Markdown을 복사해 붙여 넣으세요. 파이프라인이라면 JSONL 청크를 쓰세요.
모든 일이 브라우저 안에서 일어나고, 여기서는 그게 중요합니다. 사람들이 모델에 주는 문서는 내부 보고서, 계약서, 연구 자료처럼 또 다른 서비스에 올리면 안 되는 것이 많기 때문입니다.
자주 묻는 질문
LLM에는 정말 일반 텍스트보다 Markdown이 낫나요?
구조가 있는 문서라면 대개 도움이 됩니다. 제목은 절이 어떻게 겹쳐 있는지 모델에 알려 주고, 표는 숫자를 이름표 옆에 둡니다. 산문 한 페이지라면 차이가 작습니다. 스위치로 그 구조를 남기거나 뺄 수 있습니다.
청크 크기는 얼마로 해야 하나요?
문서에 대한 질의응답이라면 512나 1,024 토큰으로 시작하세요. 작은 청크는 좁은 질문에 더 정확히 맞고, 큰 청크는 문맥을 더 많이 함께 둡니다. 청크 탭 아래 요약에 개수와 가장 큰 청크가 나오니 효과를 바로 볼 수 있습니다.
토큰은 제 기기에서 세나요?
네. 토크나이저는 변환기의 다른 부분처럼 탭 안에서 돌아갑니다. 세기 위해 OpenAI나 다른 누구에게도 보내지 않습니다.
데이터셋용으로 PDF를 많이 처리할 수 있나요?
한 번에 20개까지 놓고 모두 하나의 .zip으로 내려받을 수 있습니다. 파일이 수천 개라면 스크립트가 더 맞습니다. Python으로 PDF를 Markdown으로를 보세요.