Skip to content

Configuration

dnjsgkfka edited this page Aug 18, 2026 · 3 revisions

Evidence Chunker가 노출하는 튜닝 파라미터와, 각 기본값이 어떻게 결정됐는지 정리한다.

스윕 실험 세부사항은 Experiments §04를 참고.

요약

파라미터 기본값 결정 근거
bbox_threshold 300.0 (pt) 100~1000pt 스윕, 통계적으로 300pt보다 늘릴 근거 부족
sim_threshold 0.0 0.00~0.60 스윕, 낮출수록 전 유형 EM 단조 증가
DEFAULT_TOKEN_LIMIT 512 EU 분할 기준 토큰 수

bbox_threshold

표 위/아래로 설명 단락을 수집할 거리 범위(pt).

  • 캡션 탐색 범위(caption.pyCAPTION_SEARCH_PT = 200.0)와는 다른 값이다. 캡션은 표에 훨씬 바짝 붙어 있는 게 보통이라 더 좁은 반경을 사용한다. (서로 다른 용도로 분리)
  • 100~1000pt로 스윕한 결과, 400pt 이상에서 context_dependent EM이 0.250으로 포화되지만 300pt(0.222) 대비 차이가 95% CI(±11.55pp, n=72)보다 작아 통계적으로 유의미하지 않았다.
  • 결론: dev20 표본만으로는 300pt보다 더 늘릴 근거가 부족해 기본값 300pt를 유지한다.
chunker = EvidenceChunker(bbox_threshold=300.0)  # 기본값

sim_threshold

문맥 단락을 채택할 코사인 유사도 임계값.

  • 0.00~0.60(0.05 간격)으로 스윕한 결과, 임계값을 낮출수록 cell_value/table_about/context_dependent 세 유형 EM이 전 구간에서 단조 증가하거나 유지되었다. 특히 context_dependent는 0.40(구 기본값)에서 0.194, 0.00에서 0.319로 +12.5pp 차이.
  • QA 생성기가 bbox, 코사인 기준과 무관하게(순수 토큰 중복 기준으로) 문제를 만들도록 설계되어 있어 이 스윕 결과가 청킹 모듈의 실제 필터 성능을 검증하는 데이터로 유효하다.
  • 결론: sim_threshold 기본값을 0.0으로 낮춘다. 다만, 완전히 없애지 않고 기본값을 0.0으로 두고 사용자가 필요에 따라 활성화할 수 있는 옵션으로 남겨둔다.
  • 부수 효과: sim_threshold <= 0이면 _embedding_filter()model.encode() 호출 자체를 건너뛰므로, 기본 설정으로 쓰면 sentence-transformers/torch 없이도 청킹이 동작한다. 0보다 큰 값을 명시적으로 넘기는 사용자만 pip install evidence-chunker[similarity]가 필요하다.
chunker = EvidenceChunker(sim_threshold=0.0)   # 기본값 — bbox 거리만으로 문맥 수집, 임베더 불필요
chunker = EvidenceChunker(sim_threshold=0.4)   # 코사인 필터 활성화 (sentence-transformers 필요)

DEFAULT_TOKEN_LIMIT (evidence_chunker.tokens, 기본 512)

EU 하나(eu.text 기준)가 넘지 않아야 할 토큰 수.

초과 시 split.split_eu()가 행 단위로 분할한다.

전략 조건 동작
single 한도 이내 원본 그대로 통과
row_split 한도 초과, LLM_SUMMARY_LIMIT(한도의 6배) 이내 캡션/헤더/문맥을 유지한 채 행 단위로 분할
llm_summary 행 하나만으로도 한도를 넘거나 LLM_SUMMARY_LIMIT 초과 기계적 분할을 포기하고 원본 EU 통과 — 요약이 필요하다는 신호로만 쓰임(실제 요약은 수행하지 않음)

EvidenceRetrieverk / fetch_k

export.langchain.EvidenceRetriever(vectorstore, k=5, fetch_k=None, dedupe=True)

  • fetch_k 기본값은 max(k * 4, 20) — EU 하나가 retrieval_units로 여러 벡터를 만들 수 있으므로, dedupe 후에도 k개가 채워지도록 넉넉하게 가져온다.
  • dedupe=False로 끄면 max-pool 없이 기존 유닛 단위 flat 랭킹으로 되돌아간다.
  • max-pool을 켜면 Recall@5(+1.4pp)에서는 baseline을 이기지만, Recall@10(-1.9pp)에서는 근소하게 진다. 자세한 원인은 Limitations & Roadmap 참고.

Clone this wiki locally