저도 비슷한 문제 겪었는데, 결국 하이브리드 방식으로 가니까 낫더라고요. 고정 크기에 문장 경계 인식하게 해서 청킹하고, 겹침은 20% 정도만 유지하는 식으로요. 의미론적 청킹은 오프라인에서 배치로 돌리고 온라인은 단순하게 가는 게 비용 효율 좋습니다.
궁금하면
저도 비슷한 문제 겪었는데, 결국 하이브리드 방식으로 가니까 훨씬 나아졌어요. 고정 크기 기본 청킹에 의미론적 병합만 가볍게 얹어서 쓰고 있습니다. 임베딩은 bge-small 썼을 때 성능과 비용 밸런스가 제일 괜찮더라고요. 초반엔 의미론적 청킹 비용이 크게 느껴질 수밖에 없으니까 이런 식으로 타협하면서 시작하는 것도 방법입니다.