본문 바로가기
YES - 개발일지

[Upstage AI Lab 5기 부트캠프] Information Retrieval 경진대회 ─ 정보 검색부터 RAG까지의 실전 경험기

by YES - IT SPOT 2025. 3. 14.
반응형

안녕하세요!
패스트캠퍼스 Upstage AI Lab 5기 수강생 ‘예스잇(YES-IT)’입니다. 😊

 

이번 Upstage AI 부트캠프에서는 Information Retrieval(IR) 경진대회에 참가하며, 문서 검색과 LLM을 결합한 과학 지식 질의응답 시스템을 구축하는 프로젝트를 진행했습니다. 이 과정에서 실전 경험을 쌓으며, AI 부트캠프를 통해 얻을 수 있는 배움의 가치를 다시 한번 느낄 수 있었어요!

 

IR 시스템을 직접 구현하면서,
🔹 문서 검색 → 임베딩 변환 → 벡터 검색 → 재순위화 → LLM 응답 생성까지
전체적인 RAG(Retrieval-Augmented Generation) 파이프라인을 경험할 수 있었습니다.

 

이번 경진대회의 핵심 목표는 정확한 검색 결과를 기반으로 LLM이 최적의 답변을 생성하도록 최적화하는 것!
하지만, 검색 시스템을 구축하는 과정에서 데이터 전처리, 검색 성능 개선, LLM과의 연결 방식다양한 기술적 도전이 필요했어요.

 

이 글에서는 경진대회의 목표와 수행 과정, 그리고 직접 경험하며 배운 인사이트를 공유해보려고 합니다.
그럼, 경진대회의 시작부터 살펴볼까요? 🚀

 

 


1. Information Retrieval(IR) 경진대회, 목표와 도전 방향은?

 

 

먼저, 이번 경진대회가 어떤 프로젝트였는지 정리해볼게요.

항목 내용
📍 주제 과학 지식 기반 질의응답 시스템 구축
📆 기간 2025.02.24 ~ 2025.02.28 (총 4일)
🎯 목표 정보 검색 + LLM 결합한 RAG 기반 QA 시스템 구축
🔍 주요 기술 Elasticsearch, 임베딩 모델(BERT, RoBERTa, BGE-M3), Hybrid Retrieve, Reranking, LLM (GPT-4o, Solar-pro)
🛠️ 수행 과정 데이터 전처리 → 검색 최적화 → RAG 파이프라인 구축 → 평가 및 개선
🏆 목표 성능 검색 정확도를 높이고, LLM이 최적의 답변을 생성하도록 최적화

이번 프로젝트에서는 단순한 키워드 검색을 넘어, 문맥을 이해하는 검색 시스템과 딥러닝 기반 임베딩 모델을 활용한 LLM을 결합하여 더 정교한 AI 기반 질의응답 시스템을 구축하는 것이 목표였습니다. 하지만, 이를 위해 여러 가지 중요한 과제들을 해결해야 했습니다.

 

 🚀목표 달성을 위한 주요 과제  

 

이번 경진대회에서 단순히 검색 시스템을 만드는 것이 아니라, 보다 정교한 QA 시스템을 구축하는 것이 목표였어요. 하지만, 이를 위해 몇 가지 중요한 기술적 과제를 해결해야 했어요.

 

🔍 1️⃣ 검색 정확도 향상

  • 기존 키워드 기반 검색(BM25)만으로는 한계가 존재
  • Sparse 검색(BM25)과 Dense 검색(임베딩 모델)을 결합한 Hybrid Retrieve 방식 도입
  • 검색된 문서의 순위를 조정하는 Reranking 알고리즘 적용하여 정확도 향상

💡 2️⃣ LLM 응답 최적화

  • 검색된 문서가 있어도 LLM이 적절한 답변을 생성하지 못하는 경우가 발생
  • 질문 유형을 과학 질문과 일반 대화로 분류하여 각각 다른 검색 및 응답 전략을 적용
  • 프롬프트 엔지니어링을 최적화하여 검색된 문서와 LLM의 답변 연결을 강화

🛠️ 3️⃣ 데이터 전처리 및 검색 엔진 성능 개선

  • 과학 지식 기반 문서 데이터셋(4,272개) 및 평가 데이터셋(220개)을 활용하여 성능 평가
  • Elasticsearch 검색 최적화를 위해 L2 Norm → Cosine Similarity 변경 및 HNSW 알고리즘 추가
  • 평가 데이터와 문서 데이터의 단어 불일치 문제 해결을 위한 텍스트 정제 작업 수행

 

이처럼 검색 시스템의 정확도를 높이고, LLM이 더 효과적으로 응답을 생성할 수 있도록 최적화하는 것
이번 프로젝트의 핵심 과제였습니다. 우리는 검색 성능을 개선하기 위해 Hybrid Retrieve 방식과 Reranking 기법을 적용했고, LLM이 검색된 문서를 잘 활용할 수 있도록 질문 유형을 분류하고, 프롬프트 엔지니어링을 최적화하는 데 집중했어요.

 

또한, 검색 엔진의 성능을 극대화하기 위해 Elasticsearch 최적화, 문서 데이터 정제 및 단어 불일치 문제 해결을 진행했어요. 이러한 작업을 통해, 단순한 검색 시스템이 아니라 보다 정교한 RAG 기반 QA 시스템을 구축하는 것을 목표로 했습니다. 하지만, 우리가 기대했던 목표를 달성하는 과정에서 예상치 못한 도전 과제들도 함께 마주하게 되었어요.

 

다음은 우리가 처음 목표했던 바와 실제 진행하면서 겪었던 문제들을 비교해본 내용입니다.

 

 📊 우리가 기대했던 목표 vs 실제 도전 과제 

기대했던 목표 실제 마주한 도전 과제
검색과 LLM을 결합한 효율적인 RAG 기반
QA 시스템 구축
⚠ LLM이 검색된 문서를 활용하더라도 항상 적절한 답변을 생성하는 것은 아님
     → 프롬프트 최적화가 필수적이었음
다양한 임베딩 모델 실험을 통해 최적의 검색
성능 확보
⚠ 실험할 모델이 많고 조합이 다양해, 짧은 경진대회 일정 내 모든 경우를 실험하기 어려웠음
하이브리드 검색과 Reranking 기법을 활용하여
검색 성능 극대화
하이브리드 검색(Sparse + Dense) 비율을 조정하는 과정에서 최적의 조합을 찾는 데
     어려움
이 있었음
과학 지식 기반 QA에 적합한 LLM 최적화 및
질문 유형별 대응 전략 적용
⚠ 질문 유형을 과학 질문과 일반 대화로 구분했지만, 일부 문장은 애매하게 분류되어 정확도가
     낮아지는 문제
가 발생
검색 엔진(Elasticsearch) 최적화로 빠르고
정확한 검색 구현
문서 내 표현 방식과 평가 데이터의 불일치로 인해 검색 성능이 예상보다 낮았음
     → 추가적인 데이터 정제 작업이 필요했음

 

이번 프로젝트를 통해 우리는 단순한 검색 시스템이 아니라, 검색 성능 최적화 + 데이터 정제 + LLM 최적화를 함께 고려해야 한다는 점을 실전 경험으로 배울 수 있었습니다.

 

다음 글에서는 "2. 경진대회 수행 과정 및 접근법"을 다루며, 우리가 어떤 실험을 진행했고, 검색과 LLM 최적화를 위해 어떤 방법을 적용했는지 더 자세히 공유해볼게요! 🚀

 

 

 


2. 경진대회 도전기: 검색 최적화부터 LLM 활용까지

 

 

이번 Upstage AI 부트캠프의 IR 경진대회에서는 효율적인 검색 시스템을 구축하고, LLM이 검색된 문서를 최적의 형태로 활용할 수 있도록 개선하는 과정을 수행했어요. 이를 위해 데이터 전처리 → 검색 엔진 구축 → 검색 결과 재순위화(Reranking) → LLM 최적화 및 프롬프트 엔지니어링까지 단계별로 접근했어요.

 

아래 표는 각 단계에서 진행한 주요 작업을 한눈에 정리한 내용입니다.

 

 📌 경진대회 수행 과정 요약표  

단계 주요 작업 세부 내용
📌 데이터 전처리 ✔️ 중복 문서 제거 TF-IDF 및 코사인 유사도를 활용하여 중복 문서 정리
✔️ 메타데이터 추가 문서 카테고리(과학 질문/일반 대화) 태깅
✔️ 단어 통일화 동일한 개념(예: ‘AI’ ↔ ‘인공지능’)을 같은 표현으로 통일
✔️ 멀티턴 대화 정리 멀티턴 질문을 싱글턴으로 변환하여 검색 최적화
🔍 검색 엔진 구축 ✔️ BM25 적용 키워드 기반 Sparse 검색 적용
✔️ Dense 검색 적용 BERT, RoBERTa, BGE-M3 임베딩 모델 실험
✔️ Hybrid Retrieve 적용 BM25 + Dense 검색 결합
✔️ Elasticsearch 최적화 Cosine Similarity 기반 검색 적용, HNSW 알고리즘 추가
🚀 Reranking 적용 ✔️ BGE-Reranker-v2-m3 활용 검색된 문서 순서를 최적화하여 상위 문서 정렬
✔️ 가중치 기반 정렬 문서 길이, 키워드 포함 빈도, 유사도 등을 고려하여 정렬
✔️ 최소 점수 임계값 설정 관련성 낮은 문서 필터링
🤖 LLM 최적화 ✔️ GPT-4o, Solar-pro 비교 실험 최적의 LLM 모델 선택
✔️ 질문 유형별 처리 과학 지식 질문은 RAG, 일반 대화는 LLM 직접 응답
✔️ 프롬프트 엔지니어링 최적화 역할(Role), 배경(Context), 지시사항(Instruction), 예시(Example) 포함

 

 

 📌 데이터 전처리: 검색 성능의 시작점  

 

데이터 분석 및 전처리 - 멀티턴 및 문서 중복 처리

 

검색 시스템의 성능을 극대화하기 위해서는 검색에 활용되는 문서의 품질을 높이는 것이 필수적이었습니다. 저희가 활용한 데이터셋은 과학 지식 기반의 문서 4,272개와 평가 데이터 220개로 구성되어 있었지만, 원본 데이터 그대로 사용할 경우 검색 성능이 떨어지는 문제가 발생할 수 있었어요.

 

이를 해결하기 위해 먼저 중복 문서를 제거하고, 검색 성능을 높일 수 있도록 데이터 정제 작업을 진행했어요. 먼저, TF-IDF 및 코사인 유사도를 활용하여 중복 문서를 제거했어요. 이 과정에서 유사도가 높은 문서들을 찾아 하나로 통합하거나 불필요한 데이터를 삭제했어요.

 

또한, 멀티턴 대화 데이터를 싱글턴 형태로 변환하여 검색 엔진이 보다 효과적으로 질문을 처리할 수 있도록 조정했어요.

 

데이터 분석 및 전처리 - 과학 상식 질문과 일반 대화 구분(메타 데이터)

 

마지막으로, 검색 시스템이 문서를 더욱 효과적으로 분류할 수 있도록 카테고리 태그(과학 질문/일반 대화)를 추가했어요. 이렇게 분류된 문서는 검색 엔진이 질의 유형을 파악하는 데 도움을 주었고, 검색 결과의 정확도를 높이는 데 기여했어요.

 

이러한 데이터 전처리 작업을 통해, 검색 시스템이 보다 정제된 데이터를 활용하여 더욱 정확한 결과를 제공할 수 있도록 최적화했어요.

 

 

 🔍 검색 엔진 구축 및 최적화  

 

검색 엔진 및 임베딩 모델 - Elasticsearch 옵션 및 다양한 임베딩 모델

 

데이터 전처리를 마친 후에는 Elasticsearch를 기반으로 검색 엔진을 구축했어요. 검색의 정확도를 높이기 위해 BM25 기반의 Sparse 검색과 Dense 검색을 결합한 하이브리드 검색 시스템을 개발했어요.

 

먼저, BM25 기반의 키워드 검색을 적용하여 빠르고 정확한 단어 매칭을 가능하게 했어요. 하지만, BM25는 문장의 의미를 이해하지 못하는 한계가 있어 딥러닝을 활용한 Dense 검색(임베딩 기반 검색)을 추가적으로 적용했어요. 이 과정에서 BERT, RoBERTa, BGE-M3 등의 다양한 임베딩 모델을 실험하여 최적의 모델을 찾았어요. Dense 검색은 문장의 의미적 유사성을 반영하는 장점이 있지만, 키워드 기반 검색의 장점도 유지해야 했기 때문에, 결과적으로 Sparse 검색(BM25)과 Dense 검색(BGE-M3)의 하이브리드 검색 방식을 적용했어요.

 

또한, 검색 속도와 정확도를 높이기 위해 Elasticsearch의 기본 L2 Norm 검색 방식을 Cosine Similarity 기반 검색으로 변경했고, 추가적으로 HNSW(Hierarchical Navigable Small World) 알고리즘을 적용하여 대량의 문서에서도 빠르게 검색이 가능하도록 개선했어요.

 

이러한 최적화 과정을 거친 검색 엔진을 통해, 단순한 키워드 검색을 넘어 문맥을 이해하는 검색 시스템을 구축할 수 있었어요.

 

 

 🚀 Reranking(재순위화) 적용으로 검색 정확도 향상  

 

검색 엔진 및 임베딩 모델 - hybrid retriever 및 reranking

 

검색 시스템이 문서를 찾아주더라도, 검색된 문서의 순서가 최적화되지 않으면 LLM이 적절한 답변을 생성하기 어려워요. 따라서, 우리는 검색된 문서의 순위를 조정하는 Reranking 기법을 적용하여 검색 정확도를 향상시켰어요. 이를 위해 BGE-Reranker-v2-m3 모델을 활용하여 검색된 문서들의 중요도를 평가하고, LLM이 적절한 문서를 상위에 배치하도록 최적화했어요.


Reranking 모델은 검색된 문서들의 의미적 유사성을 분석하여 질문과 가장 관련성이 높은 문서를 우선적으로 정렬하는 역할을 했어요. 또한, 가중치 기반 정렬 방식을 도입하여 문서 길이, 키워드 포함 빈도, 임베딩 유사도 등을 고려하여 검색된 문서를 재정렬했어요. 이를 통해 짧은 문장은 정보량이 부족해 하위로 배치하고, 너무 긴 문서는 요점을 놓칠 가능성이 있으므로 적절한 길이의 문서를 상위에 배치하는 방식으로 개선했어요.

 

마지막으로, 최소 점수 임계값을 설정하여 관련성이 낮은 문서가 검색되는 문제를 방지했어요. 즉, 검색된 문서가 일정 점수 이하일 경우 LLM이 직접 답변을 생성하도록 하는 방식을 적용하여 검색 품질을 높일 수 있었어요.

 

 

 🤖 LLM 최적화 및 프롬프트 엔지니어링  

 

RAG - LLM & Prompt

 

 

검색된 문서가 정확하더라도, LLM이 이를 효과적으로 활용하지 못하면 최적의 답변을 생성할 수 없어요. 따라서, 검색 결과를 활용하여 LLM이 보다 적절한 응답을 생성하도록 최적화하는 작업을 진행했어요.

 

먼저, GPT-4o, Solar-pro 등의 다양한 LLM을 비교 실험하여 최적의 모델을 찾는 과정을 거쳤어요. GPT-4o는 다양한 주제에서 강력한 성능을 보였지만, 일부 한국어 데이터 처리에서는 Solar-pro가 더 우수한 성능을 보이는 경우도 있었어요.

 

따라서, 특정 유형의 질문에서는 Solar-pro를 활용하고, 보다 일반적인 응답이 필요한 경우에는 GPT-4o를 적용하는 방식으로 최적화했어요. 또한, LLM이 검색된 문서를 활용하는 방식을 개선하기 위해, 질문 유형을 과학 질문과 일반 대화로 분류하고, 각각 다른 검색 및 응답 방식을 적용했어요. 과학 지식 기반 질문의 경우, 검색된 문서를 기반으로 RAG(Retrieval-Augmented Generation) 방식으로 답변을 생성하도록 했고, 일반적인 대화의 경우에는 검색을 생략하고 LLM이 직접 응답하도록 처리하여 불필요한 검색 과정을 줄였어요.

 

마지막으로, 프롬프트 엔지니어링을 최적화하여 LLM의 응답 품질을 개선했어요. 프롬프트를 설계할 때, 역할(Role), 배경(Context), 지시사항(Instruction), 예시(Example)를 포함하여 보다 구조화된 응답을 생성하도록 유도했어요. 이러한 프롬프트 최적화를 통해 LLM의 응답 정확도를 기존 대비 10~15% 향상시킬 수 있었어요.

 

이러한 일련의 과정을 통해, 검색 시스템과 LLM이 유기적으로 결합된 고도화된 QA 시스템을 구축할 수 있었습니다.

 

 


3. 4일간의 도전으로 얻은 것과 아쉬운 점

 

이번 Upstage AI 부트캠프에서 진행된 IR 경진대회는 단순한 검색 시스템이 아니라, LLM과 결합된 RAG 기반 질의응답 시스템을 구축하는 도전이었어요. 불과 4일이라는 짧은 시간 동안 데이터 전처리부터 검색 최적화, Reranking, LLM 활용까지 한 번에 실험해보면서, 이론으로만 알던 개념들을 직접 적용해볼 수 있는 좋은 기회였어요.

 

실제 검색 시스템을 만들면서 무엇을 배웠고, 어떤 점이 아쉬웠는지 정리해보려고 해요.

 

직접 실험하면서 얻은 것들 아쉬운 점과 개선할 점 앞으로 더 발전시키고 싶은 부분
✔️ 검색 최적화의 중요성

✔️ LLM이 검색된 문서를 어떻게
     활용하느냐에 따라 답변의 품질이 달라짐

✔️ 데이터 정제는 검색 성능과 직결됨

✔️ 직접 실험하는 것이 최고의 학습법
✔️ 시간 부족으로 충분한 실험을 하지 못함

✔️ LLM 프롬프트 최적화를 더 연구할 필요가
     있음

✔️ 과학 질문을 더 정교하게 분석하는 과정이
     부족했음

✔️ Hybrid Retrieve의 최적의 비율 찾기

✔️ 과학 질문의 핵심 키워드 추출 및 활용


✔️ LLM이 검색된 문서를 더 효과적으로
    활용하도록 개선

 

 

이번 경진대회를 통해 검색 시스템과 LLM을 최적화하는 과정에서 어떤 요소가 중요한지를 실전 경험으로 배울 수 있었어요. 특히, 딥러닝 기반 임베딩 모델을 활용한 검색된 문서를 LLM이 어떻게 활용하느냐가 검색 시스템 성능을 결정하는 핵심이라는 점을 실감했어요.

 

짧은 시간이었지만, 이론으로 배웠던 개념들을 직접 구현하고 실험하며 얻은 배움이 가장 값진 경험이었어요. 앞으로도 더 정교한 검색 시스템을 만들기 위해 연구를 계속해나갈 계획이에요.

 

🚀 경진대회는 끝났지만, 저의 실험과 도전은 앞으로도 계속될 예정입니다! 😊

반응형
LIST

댓글