데이터 청킹 : 인공지능에게 줄 자료를 정리
청킹이란 무엇일까요? 네이버 사전에 청크의 뜻을 검색해보면
다음과 같은 결과가 나옵니다. 즉, 자료를 한 덩어리로 쪼개는 과정인데 이러한 과정은 왜 필요한 것일까요?
이유는 다음과 같습니다.
1. 인공지능이 한번에 처리할 수 있는 데이터의 양은 제한되어 있습니다. 따라서 데이터를 인공지능이 먹을 수 있는만큼으로 쪼개서 주는 것입니다.
2. 효율적으로 청킹된 데이터는 인공지능의 데이터 검색 정확도를 올려줍니다.
※ 청킹 VS 라벨링
여기서 주의해야할 점!! 청킹과 라벨링은 명확히 구분해야합니다.
청킹과 라벨링은 인공지능이 이용할 데이터를 만든다는 의미에서는 비슷하지만 차이점이 있습니다.
라벨링은 인공지능이 학습을 할 때, 필요한 학습 데이터의 정답을 지정해주는 작업입니다. 반면에 청킹은 인공지능이 사용할 참고 자료를 정리해주는 것이라고 생각하면 됩니다.
물론 학습 데이터를 제작할 때도 메모리를 고려해 청킹이 필요할 수도 있습니다. 하지만 이건 그저 데이터를 한 덩어리로 쪼갠다는 의미에서의 청킹이지 메인은 아닙니다. 우리가 청킹할 데이터는 학습 데이터가 아닌 RAG 인공지능이 검색에 이용할 자료입니다.
RAG? 그게 뭔데 : 인공지능이 검색도 해준다!!
Retrieval-Augmented Generation의 약자로 한국어로 하면 검색 증강 모델입니다. 언어모델 인공지능이 자신이 학습한 내용에서만 답변을 해준다면 인공지능이 제공할 수 있는 정보는 매우 제한적일 것 입니다. 그렇게 되면 할루시네이션 현상으로 헛소리를 할 수도 있죠.
따라서 우리는 인공지능이 학습한 데이터 외에 자료에 접근할 수 있게 만들어주었습니다. 이게 바로 RAG입니다.
그렇다면!! 청킹 방법에는 어떤 방법들이 있고 효율적인 청킹이라 무엇일까요?
인공지능이 사용자의 질문에 관련있는 자료를 잘 찾기 위해서는 관련성 있는 데이터들끼리 묶여있어야겠죠? 이런 부분을 보면 사람하고 비슷한 것 같습니다.
우리가 데이터를 청킹해서 데이터베이스에 저장하면 이 데이터들은 인공지능의 검색에 용이하게 벡터 형식, 즉 숫자 형식으로 인덱싱됩니다. 이 과정을 임베딩이라고 합니다.
이제 청킹 방법론은 알아봅시다! 청킹 방식은 여러가지 방법이 있습니다.
일반적으로 "5 Chunking Strategies for RAG"라고 하면서 크게 5가지로 나눕니다.
1. Fixed-size Chunking : 데이터 크기 고정!|
데이터의 길이를 10글자, 20글자와 같이 고정하는 청킹 방법입니다.
데이터의 크기를 일정하게 관리할 수 있지만, 맥락과 관계없이 문장이 끊어지기 때문에 맥락이 소실될 수도 있습니다.
2. Recursive Chunking : ",", "", ".", "/n"등을 기준으로
특정 문자를 기준으로 데이터를 나누는 방법입니다. 콜론(.)이나 줄바꿈(\n)은 우리가 문장의 끝이나 문단의 끝을 나타낼 때, 쓰므로 이러한 문자를 기준으로 데이터를 나누면 Fixed-size Chunking 방식처럼 문장한 가운데가 그냥 잘리는 일은 없습니다. 하지만 한 문장이 다음 문장과 이어지는 관계성을 가지고 있을 경우, 이들이 분리되어 청크의 문맥의 연결성이 약해집니다.
3. Document Based(Specialized) Chunking : Markdown, LaTex
print("이건 코드를 출력하는 칸입니다!")
위와 같이 블로그에서 파이썬 코드나 수식과 같이 특수한 텍스트는 따로 표현하는 것을 보신 적이 있을 겁니다. 이와 같이 언어 모델도 특수한 문자는 따로 그 문자에 맞게 청크를 만들어주는 것이 Document Based Chunking 입니다.
4. Semantic Chunking : 임베딩 이용
벡터 데이터베이스에서는 데이터들을 벡터로 변환해서 그 관련성을 벡터 사이의 거리로 추측할 수 있습니다. 이 과정에서 텍스트 데이터를 벡터화하는 것을 임베딩이라고 합니다. 이런 관계 정보를 가진 벡터 데이터베이스를 이용해서 말 그대로 의미관계, semantic이 비슷한 문장을 묶는 청킹 방식을 Semantic Chunking이라고 합니다.
5. Agentic Chunking : LLM 이용, 인공지능~ 해줘~ 딸~깍
언어모델을 이용하는 청킹이라고 생각하시면 됩니다. 언어모델에게 청크의 특징과 전체 데이터를 입력한 뒤, 요구한 특징을 지닌 청크를 받을 수 있습니다. 청크의 특징은 상황에 따라 효율적인 형식을 사용자가 정할 수 있습니다.
마무리
다음 시간에는 직접 청킹을 해보는 실습시간을 가지겠습니다.
코드로 알아보는 데이터 청킹!! : 5 Chunking Strategies for RAG with code
지난 시간에 이어서 직접 코드로 인공지능 검색 알고리즘을 위한 5가지 방법의 "데이터 청킹"을 해보겠습니다. 데이터 청킹이 어떤 것인지 감이 안 잡힌다면 다음 글 먼저 읽으시는 것을 권장
codzer.tistory.com
'ML' 카테고리의 다른 글
코드로 알아보는 데이터 청킹!! : 5 Chunking Strategies for RAG with code (0) | 2025.01.10 |
---|