← AI 용어집

AI 용어집 · 심화 · 데이터 엔지니어링 · 언어 모델

중복 제거 Deduplication

중복 제거는 학습 데이터 안에 똑같거나 거의 똑같은 문서·문장·이미지가 여러 번 들어 있을 때 하나만 남기고 나머지를 걸러 내는 것이다. 특히 인터넷에서 대량으로 모은 LLM 학습 데이터를 정리할 때 필수 단계다.

쉽게 말하면 이사하기 전에 책장에서 같은 책을 여러 권 샀던 것을 골라 한 권만 남기는 일과 같다. 표지만 다른 개정판처럼 '거의 같은 책'을 찾아내는 게 더 어렵다는 점도 비슷하다.

어떻게 작동하나

먼저 글자 하나 다르지 않은 완전 중복을 찾는다. 문서마다 해시(내용을 짧은 고유 번호로 바꾼 값)를 계산해 같은 번호가 나오면 같은 문서로 보고 하나만 남긴다. 다음은 광고 문구나 날짜만 다른 유사 중복이다. 문서를 짧은 글자 묶음으로 쪼갠 뒤 겹치는 정도를 빠르게 어림하는 MinHash 같은 기법이나, 임베딩으로 의미가 가까운 문서를 찾는 방법을 쓴다. 기준(얼마나 비슷하면 중복으로 볼지)을 정해 그 이상 닮은 묶음에서 대표 하나만 남긴다.

중복을 걸러 내는 단계

수집한 전체 문서
완전 중복 제거
유사 중복 제거
평가 데이터와 겹침 제거
정리된 학습 데이터
단계를 거칠수록 같은 내용이 빠져 남는 문서가 줄어든다. 수치 없이 흐름만 나타냈다.

왜 중요한가

인터넷 데이터에는 같은 기사 전재, 복사된 코드, 반복되는 이용약관이 엄청나게 많다. 이런 중복을 그대로 두면 모델이 같은 글을 여러 번 보면서 그 문장을 통째로 외워 그대로 내뱉기 쉬워지고, 개인정보나 저작권 문제가 생길 수 있다. 학습 계산도 같은 내용에 낭비된다. 또 평가용 벤치마크 문제가 학습 데이터에 섞여 들어가면 실력이 부풀려지는 데이터 오염이 생기는데, 중복 제거로 학습 데이터와 평가 데이터의 겹침을 걸러 내는 것도 중요한 용도다.

알아 둘 점

'얼마나 비슷하면 중복인가'의 기준을 너무 느슨하게 잡으면 서로 다른 좋은 문서까지 지워지고, 너무 엄격하면 중복이 남는다. 데이터가 수십억 건 규모가 되면 모든 문서 쌍을 직접 비교할 수 없어서 대략적으로 빠르게 비교하는 근사 기법이 필요하다. 또 반복이 자연스러운 데이터(법 조문, 자주 쓰는 코드 관용구)도 있으므로 무조건 지우기보다 데이터의 성격을 보고 정해야 한다. RAG용 문서 저장소에서도 중복을 정리하면 검색 결과가 같은 내용으로 도배되는 일을 줄일 수 있다.

예시

LLM을 사전학습하는 팀은 웹에서 모은 문서를 학습에 넣기 전에 데이터 파이프라인 안에 중복 제거 단계를 둔다. 같은 뉴스가 여러 사이트에 실린 경우나 복사된 코드 파일을 걸러 내고, 벤치마크 문제와 겹치는 문서도 빼서 모델이 문제를 외워 점수를 얻지 않도록 한다. 사내 문서로 RAG를 만들 때도 버전만 다른 같은 문서를 정리해 검색 품질을 높인다.

함께 보면 좋은 용어