생성 AI 가장 큰 난제 할루시네이션! 여러분도 LLM 서비스를 개발하면서 이런 할루시네이션으로 인해 원하는 답변이 생성되지 않았던 적이 있으신가요? 이를 해결하기 위해 등장한 것이 바로 RAG(검색 증강 생성) 기술입니다. 하지만 LLM 서비스 개발할때, RAG를 활용해도 문제가 생기는 경우가 있는데요! 그것은 바로 LLM 서비스에 기본적인 RAG만 사용했기 때문입니다.
고성능 RAG엔 어떤 것이 있는지, 또 어떻게 구현할 수 있는지, 그리고 RAG 파이프라인의 성능 개선법까지 낱낱이 알려드리겠습니다.
우선 먼저 LLM 서비스 개발할때, 고성능 RAG를 왜 사용해야하는지부터 자세히 설명드리겠습니다.
1.고성능 RAG를 사용하지 않을때 어떤 문제점이 발생할까요?
고성능 RAG를 사용하지 않고, LLM 서비스에 기본적인 RAG (Naive RAG)를 사용했을때 아래와 같은 문제가 생길 수 있습니다.
① 정확성 부족: 기본적인 RAG 기술만으로는 원하는 정확도를 달성하기 어려울 수 있습니다.
② 응답 일관성 문제: 고성능 RAG는 더 나은 응답 일관성을 제공하지만, 기본 RAG는 응답이 불규칙하거나 예측 불가능할 수 있습니다.
③ 효율성 저하: 고성능 RAG는 더 효율적이고 빠르게 작업을 처리할 수 있지만, 기본 RAG는 처리 속도가 느려질 수 있습니다.
④ 복잡한 문제 해결 어려움: 고성능 RAG는 복잡한 문제나 고급 시나리오를 더 잘 처리할 수 있지만, 기본 RAG는 이러한 문제를 해결하는 데 한계가 있을 수 있습니다.
⑤ 사용자 만족도 저하: 응답의 정확성과 일관성이 부족하면 사용자 경험이 떨어져 만족도가 낮아질 수 있습니다.
하지만 LLM 서비스 개발에 고성능 RAG를 사용하면 이러한 문제를 최소화하고 더 나은 RAG를 만들 수 있습니다.
2. 고성능 RAG란 무엇일까요?
RAG 도메인의 최근 발전과 함께 고급 RAG(Advanced RAG)는 기본 RAG(Naive RAG) 패러다임의 한계를 해결하기 위해 향상된 기능을 갖춰 진화한 것입니다. RAG에는 세 가지의 대표 패러다임이 있으며 이로부터 수백가지의 테크닉들이 생겨나고 있습니다.
1) 대표적인 RAG 패러다임 3가지
① Naive RAG : 전통적인 검색 및 생성 방식을 취하는 가장 간단한 RAG 연구의 초기 방법론입니다.
낮은 검색 정확도, 응답 생성의 낮은 품질, 증강 과정의 어려움과 같은 단점이 있습니다.
② Advanced RAG : 기본 RAG의 단점을 보완하기 위해 고안된 방법론으로, 크게 검색 전 절차(Pre-Retrieval Process), 검색 후 절차(Post-Retrieval Process), RAG 파이프라인 최적화(RAG Pipeline Optimization)의 3단계로 나누어볼 수 있으며 현업에서 LLM 서비스개발하며, RAG를 구축할 때 필수적으로 알아야 할 개념입니다.
③ Modular RAG : 현존하는 RAG 테크닉 중 최고 효율을 발휘하는 RAG입니다. 성능을 향상시키기 위해 유사성 식별을 위한 전용 검색 구성 요소와 같은 새로운 기능을 통합하고 목표에 따른 미세 조정을 통해 리트리버를 최적화했습니다. 특히 모든 시스템 구성 요소에서 직렬 정보 처리와 원활한 엔드투엔드를 촉진하기에, LLM 서비스 개발할때 모듈식 RAG 전략의 채택이 증가하고 있습니다.
이러한 대표 패러다임을 넘어 최근에 수많은 RAG 테크닉들도 생겨나고 있는데, 어떤 것들이 주목받고 있을까요?
2) 2024년 학계에서 화제가 된 RAG 테크닉 6가지
2024년 최신 논문에서 다루는 RAG 기술까지 조합까지 한다면 더욱 LLM 서비스에 고성능 RAG를 구축할 수 있습니다.
① SELF-RAG
“반영 토큰”이라는 특별한 토큰을 사용하여 자신이 생성한 텍스트의 질을 평가하는 프레임워크입니다.
② Corrective RAG
Robustness of Generation을 향상하기 위해 관련성이 없는 문서를 관련성이 있게 바꿔주는 프레임워크입니다.
③ T-RAG
컨텍스트 검색을 위해 벡터 데이터베이스에 추가로 엔티티 트리(entities tree)를 포함하는 프레임워크입니다.
④ Multi-Hop RAG
인풋 쿼리와 관련된 컨텍스트를 찾기 위해 여러 검색 단계(Multi-Hop)를 거치는 프레임워크입니다.
⑤ RAPTOR-RAG
텍스트 청크를 클러스터링하고 요약하여 계층적 트리 구조를 형성함으로써 상향식으로 접근하는 프레임워크입니다.
⑥ Adaptive RAG
입력하는 질문의 복잡성을 기반으로 RAG에 가장 적합한 전략을 동적으로 선택하는 프레임워크입니다.
3. 높은 성능의 RAG 파이프라인을 구성하기 위한 성능 평가와 단계별 최적화
RAG테크닉을 넘어 RAG 파이프라인까지 최적화한다면 더 좋겠죠? RAG 파이프라인을 최적화하기 위해서는, RAG 파이프라인의 각 단계에서 어떠한 모듈이 성능 저하를 일으키는지 성능 평가를 통해 파악하고 이에 걸맞는 최적화 전략을 수립하여야 합니다. 어떤 방식들이 있을까요?
① 텍스트 청킹
Fixed size Chunking, Content Aware Chunking 등 다양한 텍스트 청킹 전략이 있습니다. 다루는 데이터 타입에 따라 사용할 전략이 달라집니다.
② Search Space 최적화
문서를 Chunk 단위로 Represent하기 위해, 청킹된 데이터를 계층별로 저장하고 데이터 포인트를 설정합니다.
③ 데이터 포인트 설정
태그 설정, Document Transformation,Summarization을 통해 데이터 포인트를 설정하여 Retrieval하는 과정에서 정보를 누락하거나 무관한 청크를 검색하는 일을 줄입니다. 이로 인해 RAG 파이프라인 성능을 개선할 수 있습니다.
④ 인텐트 분석
LLM과 Pydantic을 활용하여 사전에 몇 가지 프롬프트를 정의하면 의도에 대한 답변을 내놓는데, 결과값이 정형화되어야 이를 활용할 수 있습니다. 이를 통해 에이전트의 행동 방식을 정의합니다.
⑤ Reranking
Domain-Specific한 영역에서는 데이터 포인트 설정을 잘 해도 검색 성능이 떨어질 수 있는데, 이 때 현재 쿼리랑 유사한 청크만 다시 선별하여 마지막 10%~20%의 RAG 파이프라인 성능을 올려줍니다.
⑥ 답변 생성
생성기를 사용하고 이를 튜닝하여 LLM 서비스가 정확도와 관련이 높은 답변을 생성하도록 합니다. 이 과정까지 하면 높은 성능의 RAG 파이프라인을 구성할 수 있습니다.
이렇게 할루시네이션 없는 LLM 서비스 개발할때, 정확한 RAG를 만들기 위한 테크닉과 RAG 파이프라인 성능 개선 방법을 알아보았는데요! 앞선 모든 것들을 한 번에 배울 수 있는 강의가 있습니다!
이 강의는 4가지 프로젝트로 직접 RAG를 만들어보며 실무까지 도입할 수 있게 도와드려요. 금융권, S사, MS에 종사하고 계시는 강사님이 RAG 파이프라인 성능 개선도 알려주시니 안 배워볼 수 없겠죠? 어려운 RAG, 66개 RAG 개념부터 탄탄하게 알려드리니, 꿈만 꿨던 고성능 RAG 만들 기회 놓치지 마세요!
*원문 출처 : Advanced Retrieval-Augmented Generation: From Theory to LlamaIndex Implementation
10 Ways to Improve the Performance of Retrieval Augmented Generation Systems