I built a readability test for my own compression format. It scored 0/24.
개요
ctxfold의 CSV 압축 형식에 대한 가독성 테스트 결과, 모델이 데이터를 제대로 인식하지 못하는 0/24라는 낮은 점수를 기록했으며, 이는 형식 자체의 문제로 인해 발생했습니다.
주요 내용
- ctxfold는 LLM 프롬프트에 사용되는 데이터를 손실 없이 압축하는 형식으로, JSON 및 로그 형식에서는 모델이 압축된 데이터를 성공적으로 읽고 처리하는 성능을 보였으나 CSV 형식에서는 가독성 테스트에서 0/24라는 극도로 낮은 점수를 기록했습니다.
- CSV 형식의 낮은 성능은 ctxfold가 CSV의 구조적 중복성(예: sku 접두사 NW-)을 제거하여 각 행에서 가변적인 중간 부분만 유지하는 인코딩 방식 때문이며, 모델은 이 제거된 접두사를 기반으로 행을 찾고 값을 재구성하는 데 실패했습니다.
- GPT-4o-mini뿐만 아니라 GPT-4o와 같은 더 강력한 모델에서도 CSV 형식의 가독성 문제는 일관되지 않게 개선되는 경향을 보였으며, 이는 모델의 능력이 아닌 형식 자체의 문제임을 시사합니다.
- 이러한 문제점을 해결하기 위해 CSV 형식에 대한 직접적인 모델 읽기 지원을 중단하고, 데이터를 전송하거나 저장할 때만 압축하고 프롬프트 빌드 전에 압축을 해제하는 '파이프라인 모드'로 변경되었습니다.
- ctxfold v0.2.0에는
--profile기능이 추가되어, 입력 데이터의 토큰이 어떻게 구성되는지, 어떤 부분이 압축에 적합한지 분석할 수 있게 되었으며, 이를 통해 JSON 형식은 약 66%의 토큰 감소 효과를 보였으나 CSV는 원본 그대로 보내거나 압축 해제 후 보내야 한다는 정보가 제공됩니다. - 개발자는 자신들이 만든 도구가 제공하는 절감 효과, 정확도, 호환성 등에 대한 주장이 실제 측정값과 일치하는지 자체적으로 검증하는 것이 중요하며, 이를 통해 예상치 못한 문제점을 발견하고 솔직하게 문서화하는 것이 도구의 신뢰성을 높이는 방법임을 강조합니다.
시사점
ctxfold는 CSV 형식의 압축에서 발생한 가독성 문제를 통해, 압축률뿐만 아니라 모델이 직접 읽을 수 있는 가독성까지 고려해야 함을 입증했으며, 이를 바탕으로 --profile 기능을 개발하여 사용자에게 데이터의 특성을 명확히 인지시키고 올바른 사용 방안을 제시하는 실용적인 기능을 제공하게 되었습니다.
원문을 불러오는 중...
댓글
GitHub Discussions