RAG(Retrieval Augmented Generation)의 성능을 획기적으로 높이는 9가지 전략 – 1/3 

RAG(Retrieval-Augmented Generation) 시스템은 LLM의 할루시네이션을 줄이고 정확한 정보를 제공하기 위한 핵심 방법론입니다. 그러나 실제 구현 시 검색 품질 저하나 LLM의 과도한 창의성으로 인해 원하는 결과를 얻지 못하는 경우가 많습니다.

질문에 따라 참고를 위해 RAG에서 검출된 문서를 보면, 의아한 결과가 종종 발생됩니다. 또한 제한된 검출 문서내에서 LLM이 답변해주기 충분한 정보량을 제공하지 못하였을 때 응답의 결과가 좋지 않을 수가 있습니다.

RAG구축 자체는 매우 쉽지만, 결국 상용화를 위한 품질을 높이는 과정은 매우 어려운 부분입니다.

이 글에서는 RAG 시스템 구축 시 품질향상을 위한 개선 전략에 대해서 살펴봅니다. 상용화 수준을 위한 성능을 위해서는 좀더 노력이 필요하지만, 노력의 방향에 대해서 고민해보자는 취지로 봐주시면 좋겠습니다.

우선, RAG에 대한 흐름의 이해를 가지고 계시다는 전제에서 포스트를 봐주시면 좀더 도움이 될 것 같습니다.

1. 효과적인 문서 전처리

1-1. 문서 청크 사이즈 최적화

문서가 길다고 좋은 것은 아닙니다. 대화형으로 주제를 첨부해서 이어갈때 앞에 참고된 문서의 길이가 대화의 히스토리에서 토큰의 제약을 줄 수 있습니다. 더불어 문서의 유형에 따라 청크 사이즈의 변화를 주는 것이 더 효율적이라는 연구가 있습니다.

너무 긴 청크는 처리시간이 길어지고, 토큰 제한으로 컨텍스트 범위가 줄어들고, 검색 정확도를 낮추기도 합니다. 반대로 너무 짧은 경우, 문맥손실, 의미단절, 검색 노이즈가 늘어납니다.

참고: https://ai.plainenglish.io/investigating-chunk-size-on-semantic-results-b465867d8ca1

문맥을 보존하는 문서 분할 전략

문맥 보존을 위해 20-30% 오버랩 (윈도우 슬라이딩 방식)권장, 핵심 문장 기준 분할 로직 구현하는 방법이 있습니다.

– 주제 변화 지점 감지 알고리즘 적용

문서 내에서 유사도가 급격히 낮아지는 곳의 문서 분할 지점

응집도가 높은 부분을 더 중요하게 반영하여 요약 생성

문서 간 관계정보를 저장

헤더 정보 유지 , 문서 간 관계 정보 저장, 참조 관계, 선후관계, 의존성 정보, 계층 구조 메타데이터 추가

메타데이터 활용을 통한 검색 컨텍스트 강화

생성 일자, 버전, 작성자 문서 카테고리, 주제 분류 정보를 문서에 메타데이터로 정의해서 검색에 활용하는 방법.

1-2. 임베딩 품질 개선

도메인 특화 임베딩 모델 활용

-분야별 특화 모델 선택

도메인 별로 사용되는 전문용어가 다르고 그 내용에 대한 이해가 요구됨.
같은 단어라도 도메인에 따라 의미가 다름 (예, “Charge”는 법률에서는 기소, 금융에서는 수수료의 의미)
도메인 특화모델은 해당분야의 데이터 학습으로 품질이 더 좋음

도메인특화된 임베딩 모델설명
일반 자연어(NLP)all-MiniLM-L6-v2 (SBERT)
distiluse-base-multilingual-cased (USE)
범용적으로 가장 많이 쓰이는 모델. 가볍고 성능이 우수.
의료(Medical/Biomedical)BioBERT
PubMedBERT
ClinicalBERT
논문, 전자의무기록(EMR), 생물의학 데이터 기반으로 훈련됨.
법률(Legal)LegalBERT
CaseLaw-BERT
법률 문서, 판례, 계약서 같은 데이터를 학습.
금융(Finance)FinBERT금융 뉴스, 보고서, 주식 분석 데이터 기반 학습.
코드(Code, Programming)CodeBERT
GraphCodeBERT
소스 코드와 문서를 학습하여 코드 검색 및 이해에 최적화됨.
특허(Patents)PatentBERT특허 문서의 복잡한 용어 및 법률적 표현을 학습.
과학/논문(Scientific)SciBERT논문(Abstract, 본문) 데이터를 학습하여 연구 용어를 잘 이해함.
대화(Chatbot, QA)ConvBERT
DialoGPT
대화 데이터를 학습해서 챗봇과 QA 시스템에 적합.

-도메인 데이터 기반 파인튜닝

추가적인 도메인 데이터로 MLM(Masked Language Model) 파인튜닝
기존 BERT, SBERT 등의 모델을 도메인 문서(논문, 기사, 법률문서 등)로 추가 학습시키는 방식. MLM(Masked Language Model) 방식으로 특정 단어를 가리고 문맥을 학습하게 만들어 도메인 언어 이해도를 높임.

문장 임베딩 (Sentence Embedding) 파인튜닝

문장 간의 의미 유사성을 학습하기 위해 SBERT나 Sentence-T5 같은 모델을 파인튜닝
특정 문장 세트(문장1, 문장2, 유사도 점수)로 데이터 셋을 만들어 학습할 수 있음
이러한 접근은 도메인에 특화된 용어와 문맥을 모델이 더 잘 이해할수 있고, 도메인 지식을 포함한 검색, 응답 성능을 높일 수 있으나, 데이터 준비에 대한 과정이 어렵고, 특정 도메인에 더욱 특화되면서 일반적인 문장 처리 능력을 떨어뜨리는 현상을 발생할 수 있음.

하이브리드 임베딩 접근법

-다중 임베딩 모델 활용

범용 모델 (예: all-MiniLM-L6-v2)
범용 임베딩 모델은 광범위한 텍스트 데이터로 훈련되어 다양한 주제와 도메인에 대한 일반적인 의미 파악에 능합니다. all-MiniLM-L6-v2와 같은 모델은 계산 효율성과 성능의 균형이 잘 맞춰져 있어 RAG 시스템의 기반 모델로 자주 사용됩니다.

– 커스텀 학습 모델

조직의 특정 데이터와 사용 사례에 맞게 파인튜닝된 모델입니다. 기존 임베딩 모델을 조직 내부 문서나 특수용어가 포함된 데이터 셋으로 추가 학습 시켜 개발하는 케이스입니다. 조직 특화 용어 , 개념에 대해 최적화 됩니다.

– 가중치 기반 결합

문서 특성별 가중치 조정
문서의 유형, 구조 , 내용에 따라 각 임베딩 모델의 기여도를 다르게 설정하는 방법입니다. 예를 들어, 기술문서는 도메인 특화 모델에 가중치를 높게, 일반 설명문서는 범용 모델에 가중치를 부여하여 효율을 높이는 방식입니다.

– 동적 가중치 할당 시스템

쿼리의 특성, 사용자 프로필, 이전 상호작용 등을 분석하여 실시간으로 임베딩 모델의 가중치를 조정합니다. 사용자 맞춤형 검색경험을 제공하고, 상황과 맥락에 따른 지능적인 응답이 가능합니다. 반면 시스템의 복잡성과 계산요구 빈도가 늘어나는 문제가 있습니다.

– 다중 임베딩 앙상블 전략

여러 임베딩 모델의 결과를 통합하여 최종 결과를 생성하는 방법론으로 단순 가중치 합산 부터 모델별로 부여한 점수를 통해서 최종 순위를 선정하여 진행하는 방식입니다. 다양한 모델의 강점을 결합하여 견고한 검색결과를 얻을수 있습니다만, 계산 오버헤드와 시스템의 복잡성이 증가될수 있습니다.
조합에 따라 성능의 차이가 존재합니다.

1-3. 검색 알고리즘 고도화

시맨틱 검색과 키워드 검색의 조합

LLM을 거쳐서 임베딩된 유사도 높은 모델의 검색결과가 나쁘다면, 검색엔진 자체가 시맨틱 검색을 지원하여 문서를 찾아낼수 있도록 하거나, 기존 검색엔진에서 사용되고 있는 키워드 검색 방식으로 문서를 찾아내서 그것을 기반으로 LLM응답의 참고문서로 사용하는 방법입니다.

재순위화(Reranking) 도입

검색 시, 초기에 광범위한 후보군 추출하고, 기본 관련성 점수(Score)를 계산합니다. 이후 문맥 일치도, 최신성, 사용자의 피드백이 좋은 순서 등에 따라 검색결과의 순위를 조정하여 검색의 품질을 높이는 접근을 합니다.

다단계 검색 파이프라인 구축

검색결과를 좀더 효과적으로 얻어내기 위한 중간 과정을 추가하는 것, 예를 들자면 LLM의 문장에서 검색에 필요

마무리

RAG성능향상을 위한 방법 중 문서 전처리와 관련된 부분을 작성하였습니다. 여러 도메인의 다양한 데이터 특성을 고려하여 반복된 경험을 통한 노하우가 매우 중요하다는 느낌을 받았습니다. 다음은 이어서 “LLM 응답 품질 고도화를 위한 전략”에 대해 포스팅 해보도록 하겠습니다.

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다