RAG 문서 수집: PDF·HTML을 검색 가능한 데이터로 바꾸기 (1/10)
PDF·HTML·스캔 문서를 수집해 layout과 표, 페이지, 권한, 출처 metadata를 보존하는 ingestion pipeline을 설계하고, stable ID·parser version·품질 gate로 검색 이전의 데이터 오류를 추적하는 방법을 배웁니다.
Series · Folio
문서 파싱부터 검색 평가까지 이어지는 초·중급 10편
PDF·HTML·스캔 문서를 수집해 layout과 표, 페이지, 권한, 출처 metadata를 보존하는 ingestion pipeline을 설계하고, stable ID·parser version·품질 gate로 검색 이전의 데이터 오류를 추적하는 방법을 배웁니다.
고정 길이·overlap·문서 구조·semantic·late chunking의 원리와 비용을 비교하고, tokenizer 기반 구현·parent-child 연결·평가 grid를 통해 자신의 문서와 질문에 맞는 chunk 경계와 크기를 선택하는 방법을 배웁니다.
역색인이 query term의 후보 문서를 찾는 구조부터 TF·IDF·문서 길이 정규화가 BM25 점수로 결합되는 과정을 수치로 계산하고, 한글 분석기·희귀 코드 보존·field 설계·Python baseline으로 sparse retrieval을 구현합니다.
Bi-Encoder의 query·passage 분리 encoding과 contrastive loss·negative 학습을 이해하고, prefix·pooling·normalization 계약을 지킨 exact search로 dense retrieval을 구현·평가합니다.
Exact kNN을 기준으로 HNSW graph, IVF cluster, PQ 압축 원리를 이해하고, ANN Recall@k·p95 latency·memory·build/update 비용을 함께 측정해 corpus와 운영 조건에 맞는 vector index를 선택합니다.
Exact term에 강한 BM25와 paraphrase에 강한 dense 후보를 stable chunk ID로 합치고, raw score 대신 RRF와 calibrated score fusion을 사용해 순위를 만드는 Python 구현·평가·운영 방법을 배웁니다.
Hybrid 후보를 query와 함께 읽는 Cross-Encoder·monoT5·ColBERT의 구조와 비용을 비교하고, candidate recall·batching·truncation·nDCG·latency를 측정하는 reranking pipeline을 구현합니다.
짧고 모호한 질문을 rewrite, expansion, multi-query, HyDE, decomposition으로 변환하되 코드·날짜·부정·권한을 보존하고, query drift·후보 recall·latency·비용으로 효과를 검증하는 방법을 배웁니다.
검색·reranking 후보를 prompt에 그대로 넣지 않고, token budget 안에서 span 중복을 제거하고 MMR로 관련성과 다양성을 조절하며 parent 문맥·subquery coverage·모순 근거·인용 좌표를 보존하는 context selector를 구현합니다.
Source span 기반 gold dataset으로 Hit·Recall·Precision·MRR·nDCG를 계산하고, ingestion부터 answer까지 단계별 상한과 failure slice·bootstrap·version manifest로 검색 실험을 재현합니다.