LLM 효율 높이는 RAG 문서 데이터 정형화 방법
RAG란 요청된 내용에 대하여 정확한 출처를 가진 지식 베이스를 활용해 응답을 생성하는 기술입니다. 내부 문서나 이메일 등 LLM이 기존에 학습한 데이터 셋에 포함되지 않은 특정 외부 데이터를 활용하여 응답을 생성하기 때문에 LLM의 고질병인 환각(Hallucination) 현상을 감소시키고 최신 정보를 반영하여 LLM의 효율을 높일 수 있도록 돕습니다.
RAG 작동 과정을 살펴보면 다음과 같습니다.
- Retrieval(검색)
구축된 지식 베이스에서 사용자 요청(쿼리)과 관련된 정보를 검색 - Augmentation(증강)
가장 관련성 높은 정보를 추출하여 사용자 요청(쿼리)와 함께 LLM에 제공함으로써 데이터를 증강 - Generation(생성)
LLM이 정확한 출처에 기반하여 추출된 정보를 토대로 최종 답변을 생성
위 과정에서 지식 베이스를 문서 형태의 데이터를 활용할 경우 아래와 같은 어려움이 발생할 수 있습니다.
- 필요한 정보 검색을 위해 문서 전체를 읽어야 하기에 속도가 느림
- 표현 방식이 일관되지 않아 검색 및 추론 과정에서 오류를 일으킬 수 있음
- LLM이 지식을 정확하게 이해하기 어려움
이러한 문제를 해결하기 위해 문서를 정형화할 경우 아래와 같은 기대효과를 얻을 수 있습니다.
- 검색 속도 향상 정형화된 데이터는 검색 엔진이 훨씬 빠르게 필요한 정보를 찾을 수 있도록 함.
- 정보 정확도 향상 정형화된 데이터는 형태가 일관적이기 때문에 검색 과정에서 정보가 잘못 검색되거나 추론 과정에서 정보가 잘못 해석될 가능성이 줄어듦.
- 모델 추론 효율성 증대 정보를 더욱 정확하게 이해하기 때문에 지식을 더 효과적으로 활용할 수 있음
이 글에서는 문서 형태의 자료를 LLM이 이해하기 쉬운 정형화 된 형태로 변환하는 방법에 대하여 다뤄보고자 합니다.
문서 구조 처리
문서는 형식이 다양하고 복잡합니다. 이를 구조화 된 형태로 정형화하기 위해서는 우선적으로 문서의 형태와 레이아웃을 파악하는 것이 중요합니다.
형태
문서의 형태는 다양하게 존재합니다. 파일 확장자, 파일이 저장된 방법 등에 따라 달라질 수 있습니다. 이를 각각 처리하게 되면 시간과 비용이 더 들기 때문에 문서 정형화 과정에서는 가장 우선적으로 정보 추출 가능한 동일한 형태로 변환해야 합니다. 예를 들어 스캔 형태로 저장된 PDF의 경우, 이미지로 저장된 텍스트 형태를 라이브러리(PyMuPDF, Camelot OCR 등)를 활용하여 처리 가능한 텍스트 형태로 변환할 수 있습니다.
레이아웃
페이지 내 구성 요소가 어떻게 배열되어 있는지 구조를 파악하여 문맥에 맞게 요소를 추출해야 합니다. 각 객체의 위치 벡터 값을 메타 정보로 같이 제공하는 방법도 있지만 이보다는 해당 객체가 가진 의미를 분석하여 제공하는 것이 RAG의 성능을 더욱 높일 수 있습니다. 문서가 어떤 순서로 작성되어 있으며, 각 요소가 어떤 식으로 포함되어 있는지, 각 정보가 어떤 흐름으로 이어지는 지 등에 대한 파악이 우선적으로 진행되어야 합니다.
그 후에는 파악된 레이아웃에 맞게 라이브러리(fitz 등)를 활용하여 내용을 추출하거나 Bounding Box를 활용하여 필요한 내용만 추출합니다.마지막으로 후처리를 통해 문맥에 맞는 흐름으로 재정렬하거나 불필요하게 반복되는 정보를 제거하거나 더 적절한 의미를 가진 문장으로 다듬을 수 있습니다.
객체 처리
문서 내 정보는 단순한 텍스트 형태로만 존재하는 것이 아니기 때문에 각 객체에 맞게 LLM이 쉽게 이해할 수 있는 형태로 처리하는 과정이 필요합니다.
LLM이 쉽게 이해할 수 있는 형태란 이미 알고 있는 구조와 텍스트를 활용한 형태이며, 아래와 같습니다.
- LLM이 이미 잘 이해하고 있는 구조
LLM이 이미 학습한 지식 정보를 활용한 경우, 해당 정보에 대한 이해도를 높일 수 있으며, 모델이 학습하지 못한 표현 규칙으로 인한 리스크를 줄일 수 있습니다. 예를 들어 해외 LLM 중 일부는가.
나.
의 표현이 목차를 나타내기 위한 요소인 것이 학습되지 않아 단순한 텍스트로 인지할 수 있습니다. - 각 객체가 가진 의미를 텍스트로 표현
해당 객체의 특성에 따라 해당 객체가 가진 의미를 메타 정보로 제공하거나 이미지의 내용을 텍스트로 변환함으로써 검색 매칭률을 높일 수 있습니다. 해당 내용에 대해서는 아래 각 객체별 변환 방법 내 이미지 부분에서 다시 다루도록 하겠습니다.
문서 내 존재하는 대표적인 몇 가지에 객체에 대해 하나씩 살펴보자면 아래와 같습니다.
- 텍스트 (문서의 구조)
텍스트는 전체적인 문서의 구조와 밀접한 관련이 있습니다. 일반 텍스트로 LLM에게 전달 시, 문서의 구조를 제대로 파악하지 못할 수 있습니다. 각 문서마다 제목, 목록 등에 대한 표현 방식이 모두 다르기 때문입니다.
이를 해결하기 위해 마크다운을 활용할 수 있습니다. 마크다운 활용 시 LLM에게 텍스트의 의도를 명확하게 전달하여 모델의 이해도를 높일 수 있으며 다른 마크업 언어에 비해 직관적이고 간단한 문법이라 차지하는 용량이 적다는 이점이 있습니다. 또한 일부 라이브러리(PyMuPDF 등)에서 Text to markdown 변환 기능을 제공하기 때문에 데이터 구축 시 일부 자동화를 통해 공수를 줄일 수 있습니다.
간단한 예시로 오이 소박이 무침 레시피 데이터를 제공하고 해당 데이터를 활용하여 아래 질문에 답하게 해보겠습니다. 이때 제공된 데이터의 형식 외 다른 환경 변수는 조작되지 않았습니다.
[질문] 오이 소박이를 만들 때 사용하는 재료는 무엇인가요?
- 표
표도 마크다운 형식으로 나타낼 수는 있으나, 병합 셀이 포함된 표를 표현할 수 없기 때문에 해당 셀이 가진 정보가 다르게 저장되어 정보의 오류를 초래할 수 있습니다.
각 병합 내용을 풀어서 모든 셀에 저장하는 방법도 있으나, 표 내 해당 셀의 의미를 분석하여 사람이 직접 후처리해야 하는 경우가 발생할 수 있어 공수가 많이 듭니다. 예를 들면 아래와 같은 상황이 존재할 수 있습니다. 이 경우 공수뿐 아니라 반복되는 정보의 양이 길어져 데이터의 길이(용량)에서도 불리합니다. 그렇기 때문에 복합 셀을 처리할 수 있는 형태(html 등)로 변환해야 합니다. 병합된 셀의 범위를 저장 후, 각 셀의 병합 여부를 확인하여 colspan 및 rowspan을 설정하여 병합 셀을 표현하는 html 변환 알고리즘을 통해서 병합 셀을 표현해 내는 html로 자동 변환할 수 있습니다.
택1
비고가 병합 셀로 존재할 때를 예로 들어보겠습니다.
이 경우 공수뿐 아니라 반복되는 정보의 양이 길어져 데이터의 길이(용량)에서도 불리합니다. 그렇기 때문에 복합 셀을 처리할 수 있는 형태(html 등)으로 변환해야 합니다. 병합된 셀의 범위를 저장 후, 각 셀의 병합 여부를 확인하여 colspan 및 rowspan을 설정하여 병합 셀을 표현하는 html 변환 알고리즘을 통해서 병합 셀을 표현해 내는 html로 자동 변환할 수 있습니다.
여행 예산서로 예를 들어보겠습니다.
- 이미지
단순히 이미지의 문서 내 위치 정보만을 제공하는 것은 해당 이미지가 무엇을 나타내는지를 설명하지 않기 때문에, 이미지의 의미를 쉽게 이해할 수 있도록 텍스트로 표현하여 메타 정보로 저장하는 것이 검색 정확도를 높이는 데 더 효과적입니다. 특히 시각화된 분석 결과와 같은 이미지의 경우 이미지의 내용 중 특정 정보를 요청할 수 있습니다.
예를 들어, 연령별 스마트폰 보급률 그래프의 경우, 그래프 자체를 요청하는 경우도 있지만, 특정 연도의 특정 연령대 보급률을 요청할 수도 있습니다. 이러한 요청에 응답하기 위해서는 이미지 내 값을 포함한 정보가 확장 데이터로 저장되어 있어야 보다 더 정확한 답을 가져올 수 있습니다.
[질문] 2016년도랑 2021년도에 스마트폰 보급률이 가장 차이 나는 연령대는?
이 외에도 수식, 날짜 등의 경우가 존재하며 LLM이 이해하고 활용할 수 있는 텍스트로 변환하는 과정이 필요합니다.
마치며
FineTuning보다 RAG를 활용하는 것이 보다 적은 비용과 시간으로 모델의 환각(Hallucination)을 줄일 수 있습니다. 이 과정에서 문서 정형화가 얼마나 제대로 되었는지에 따라 모델의 성능이 좌지우지됩니다.
문서 정형화 과정에서 정보 해석 오류를 발생시킬 수 있는 암시적 표현, 모호한 문장, 전문 용어 등에 대한 리스크를 줄이기 위해서는 문서의 특성에 맞는 적절한 정형화 방법을 선택하고 정형화 과정을 자동화하는 도구를 활용하는 것뿐만 아니라 해당 문서와 관련한 도메인에 대한 이해를 토대로 해당 객체가 의미하는 바를 언어적으로 풀어낼 수 있는 인문학적 능력을 필요로 합니다.
유의미한 데이터를 창출하기 위해 배우고 성장 중인 통계학도입니다.
TEXTNET 소개
지금의 딥러닝을 있게 한 AI Guru 제프리 힌튼의 데이터셋 'ImageNet'에 어원을 둔 TEXTNET은 (주)스피링크가 운영하는 AI/챗봇을 위한 텍스트 데이터 설계 및 구축 서비스입니다.
TEXTNET은 언어학, 심리학, 전산언어학 석·박사를 포함한 전문 인력으로 구성된 언어전문가 그룹으로서, 고객사의 니즈에 부합하는 텍스트 데이터를 설계·가공·구축하고 내부 R&D를 통해 설계 방식을 지속적으로 개선하여 최적의 데이터 설계 방법을 제안합니다. 프로젝트 목적에 따라 적합한 숙련 작업자를 선별하여 투입하고, 체계적이고 효율적으로 고품질의 학습데이터를 생산합니다.
TEXTNET은 삼성, LG, KT, SK 등 유수 대기업의 데이터 구축 파트너로 함께하며 금융, 마케팅, 콘텐츠, 메타버스, 서비스 기획, CS 등 다양한 도메인을 다루고 있습니다.