개인 프로젝트에서 RAG 시스템 만들고 있는데 문서 청킹 방식 때문에 고민이 생겼어요. 처음엔 그냥 고정 크기(512 토큰)로 잘라냈는데 의미 단위가 깨지는 경우가 많더라고요. 특히 테이블이나 리스트 형식 데이터는 거의 망가져요.
요즘엔 recursive character splitter 써보고 있는데 확실히 나아지는 느낌은 있어요. 다만 처리 속도가 조금 느려지는 게 단점이네요. 혹시 프로덕션에서는 어떤 방식 써보신 분 계신가요? 벡터 임베딩 품질 개선도 중요하지만 청킹 자체가 정말 중요하다는 걸 느껴요.
저도 비슷한 경험했는데 recursive splitter가 정답인 것 같아요. 속도가 느린 건 맞지만 결국 청킹 품질이 임베딩 전체 퀄리티를 좌우하니까요. 프로덕션에선 청크 overlap을 30~50% 정도 줘서 의미 경계 손실을 보완하고 있어요. 테이블 같은 경우엔 따로 프리프로세싱으로 마크다운 포맷으로 변환해서 넘기는 게 도움이 됐습니다.
조용한엔지니어
저도 같은 고민 했거든요. recursive splitter 쓰다가 속도 때문에 결국 semantic chunking으로 갈아탔어요. 문장 단위로 끊은 뒤 임베딩 유사도로 병합하는 방식인데 청크 품질이 훨씬 낫더라고요. langchain의 semantic splitter 한번 시도해보세요. 초기 세팅만 잘하면 후속 처리 속도도 나쁘지 않습니다.