RAG(검색 증강 생성)란 무엇입니까?
검색 증강 생성(RAG) 생성된 응답의 품질과 관련성을 향상시키기 위해 LLM(대형 언어 모델)의 장점과 외부 데이터 검색을 결합하는 기술입니다.. 기존 LLM은 사전 훈련된 지식 기반을 사용하는 반면, RAG 파이프라인은 런타임에 외부 데이터베이스나 문서를 쿼리하고 관련 정보를 검색하여 보다 정확하고 상황에 맞게 풍부한 응답을 생성하는 데 사용합니다. 이는 모델의 응답에 최신 도메인별 정보가 제공되고 풍부해지기 때문에 질문이 복잡하거나 구체적이거나 특정 기간을 기반으로 하는 경우에 특히 유용합니다.
현재 RAG 환경
대규모 언어 모델은 우리가 정보에 액세스하고 처리하는 방식에 완전히 혁명을 일으켰습니다. 그러나 내부 사전 입력 지식에만 의존하면 답변의 유연성이 제한될 수 있습니다. 특히 복잡한 질문의 경우 더욱 그렇습니다. 검색 증강 생성(Retrieval-Augmented Generation)은 LLM이 사용 가능한 다른 외부 소스로부터 데이터를 수집하고 분석하여 보다 정확하고 통찰력 있는 답변을 생성함으로써 이 문제를 해결합니다.
정보 검색 및 자연어 처리, 특히 LLM 및 RAG의 최근 개발은 효율성과 정교함의 새로운 지평을 열었습니다. 이러한 발전은 다음과 같은 광범위한 윤곽에서 평가될 수 있습니다.
- 향상된 정보 검색: RAG 시스템의 정보 검색 개선은 효율적인 작업을 위해 매우 중요합니다. 최근 연구에서는 정밀 검색의 향상을 위해 다양한 벡터, 순위 재지정 알고리즘, 하이브리드 검색 방법이 개발되었습니다.
- 의미론적 캐싱: 이는 일관된 응답을 포기하지 않고도 계산 비용을 줄이는 주요 방법 중 하나로 밝혀졌습니다. 이는 현재 쿼리에 대한 응답이 첨부된 의미론적 및 실용적인 컨텍스트와 함께 캐시되어 응답 시간이 더 빨라지고 일관된 정보를 제공한다는 것을 의미합니다.
- 다중 모드 통합: 이 접근 방식은 텍스트 기반 LLM 및 RAG 시스템 외에도 프레임워크의 시각적 및 기타 양식도 다룹니다. 이를 통해 더욱 다양한 소스 자료에 접근할 수 있으며 점점 더 정교해지고 점점 더 정확한 응답을 얻을 수 있습니다.
기존 RAG 아키텍처의 과제
RAG는 다양한 요구 사항을 충족하기 위해 발전하고 있습니다. 기존 RAG 아키텍처 앞에는 여전히 과제가 있습니다.
- 요약: 대용량 문서를 요약하는 것은 어려울 수 있습니다. 문서가 길면 기존 RAG 구조는 상위 K개만 가져오기 때문에 중요한 정보를 간과할 수 있습니다.
- 문서 비교: 효과적인 문서 비교는 여전히 어려운 문제입니다. RAG 프레임워크는 각 문서에서 상위 K개의 무작위 청크를 무작위로 선택하기 때문에 종종 불완전한 비교를 초래합니다.
- 구조화된 데이터 분석s: 직원이 거주지에 따라 다음 휴가를 언제 갈지 알아내는 등 구조화된 숫자 데이터 쿼리를 처리하기가 어렵습니다. 이러한 모델에서는 정확한 데이터 포인트 검색 및 분석이 정확하지 않습니다.
- 여러 부분으로 쿼리 처리: 여러 부분으로 구성된 질문에 대한 답변은 여전히 제한됩니다. 예를 들어, 대규모 조직의 모든 영역에서 공통적인 휴가 패턴을 발견하는 것은 K개로 제한되면 어려운 일이므로 완전한 조사가 제한됩니다.
Agentic RAG로 이동
에이전트릭 RAG 지능형 에이전트를 사용하여 신중한 계획, 다단계 추론 및 외부 도구 통합이 필요한 복잡한 질문에 답합니다. 이러한 에이전트는 숙련된 연구원의 임무를 수행하여 수많은 문서를 능숙하게 탐색하고, 데이터를 비교하고, 결과를 요약하고, 포괄적이고 정확한 응답을 생성합니다.
에이전트의 개념은 시스템의 기능과 능력을 향상시키기 위해 클래식 RAG 프레임워크에 포함되어 에이전트 RAG가 생성됩니다. 이러한 에이전트는 기본 정보 검색 및 생성 이상의 추가 임무와 추론을 수행할 뿐만 아니라 RAG 파이프라인의 다양한 구성 요소를 조정 및 제어합니다.
세 가지 주요 에이전트 전략
라우터는 유형에 따라 적절한 모듈이나 데이터베이스에 쿼리를 보냅니다. 라우터는 파이프라인의 정확성과 효율성 향상을 위해 요청이 전송되어야 하는 엔진을 호출하기 위해 요청 컨텍스트가 속하는 대규모 언어 모델을 사용하여 동적으로 결정을 내립니다.
쿼리 변환은 요구되는 정보와 가장 잘 일치하도록 또는 그 반대로 데이터베이스가 제공하는 정보와 가장 잘 일치하도록 사용자 쿼리를 바꾸는 것과 관련된 프로세스입니다. 다음 중 하나일 수 있습니다. 복잡한 질문을 보다 쉽게 처리할 수 있는 간단한 하위 질문으로 바꿔 표현하거나 확장하거나 분해하는 것입니다.
또한 여러 데이터 소스를 사용하여 복잡한 쿼리에 응답해야 하는 문제를 해결하려면 하위 질문 쿼리 엔진이 필요합니다.
첫째, 복잡한 질문은 각 데이터 소스에 대한 더 간단한 질문으로 분해됩니다. 그런 다음 중간 답변을 모두 수집하고 최종 결과를 종합합니다.
RAG 파이프라인을 위한 에이전트 계층
- 라우팅: 질문은 관련성을 기반으로 관련 지식 기반 처리로 라우팅됩니다. 예: 사용자가 특정 도서 카테고리에 대한 추천을 얻으려는 경우 해당 도서 카테고리에 대한 지식이 포함된 지식 기반으로 쿼리가 라우팅될 수 있습니다.
- 쿼리 계획: 여기에는 쿼리를 하위 쿼리로 분해한 다음 해당 개별 파이프라인으로 보내는 작업이 포함됩니다. 에이전트는 이 경우 연도와 같은 모든 항목에 대한 하위 쿼리를 생성하여 해당 지식 베이스로 보냅니다.
- 도구 사용: 언어 모델은 API 또는 외부 도구와 대화하여 무엇이 수반되는지, 어떤 플랫폼에서 통신이 이루어져야 하는지, 언제 그렇게 해야 하는지를 알 수 있습니다. 예: 특정 날짜의 일기 예보에 대한 사용자 요청이 있으면 LLM은 날씨 API와 통신하여 위치와 날짜를 식별한 다음 API에서 나오는 결과를 구문 분석하여 올바른 정보를 제공합니다.
- 반응하다 계획, 도구 사용, 관찰과 함께 생각하고 행동하는 반복적인 프로세스입니다.
예를 들어, 엔드 투 엔드 휴가 계획을 설계하기 위해 시스템은 사용자 요구를 고려하고 API를 호출하여 경로, 관광지, 레스토랑, 숙박에 대한 세부 정보를 가져옵니다. 그런 다음 시스템은 정확성과 관련성에 대한 결과를 확인하여 사용자의 프롬프트와 일정에 맞는 세부 여행 계획을 생성합니다. - 동적 쿼리 계획: 에이전트는 순차적으로 수행하는 대신 수많은 작업이나 하위 쿼리를 동시에 실행한 다음 이러한 결과를 집계합니다.
예를 들어 두 회사의 재무 결과를 비교하고 일부 측정항목의 차이를 확인하려는 경우 에이전트는 결과를 집계하기 전에 두 회사의 데이터를 병렬로 처리합니다. LLMCompiler는 함수 병렬 호출을 효율적으로 조정하는 프레임워크 중 하나입니다.
Agentic RAG 및 LLMaIndex
LLMaIndex는 RAG 파이프라인의 매우 효율적인 구현을 나타냅니다. 라이브러리는 데이터 처리 및 검색 도구에 대한 편의성과 다양한 데이터 소스에 대한 인터페이스를 제공하여 구조화된 조직 데이터를 생성적 AI 모델에 통합할 때 누락된 부분을 간단히 채웁니다. LlamaIndex의 주요 구성 요소는 다음과 같습니다.
LlamaParse는 문서를 구문 분석합니다.
최소한의 수작업으로 배포되는 RAG 파이프라인을 갖춘 기업용 Llama Cloud 서비스입니다.
여러 LLM 및 벡터 저장소를 사용하여 LlamaIndex는 RAG를 사용하여 Python 및 TypeScript로 애플리케이션을 구축하는 통합 방법을 제공합니다. 그 특성으로 인해 향상된 데이터 기반 의사 결정을 위해 AI를 활용하려는 기업이 많이 요구하는 백본입니다.
LLMaIndex를 사용한 Agentic Rag 구현의 주요 구성 요소
에이전트 RAG의 일부 구성 요소와 이러한 구성 요소가 LlamaIndex에서 어떻게 구현되는지 자세히 살펴보겠습니다.
1. 도구 사용 및 라우팅
라우팅 에이전트는 프롬프트 유형에 따라 특정 질문에 가장 적합한 LLM 또는 도구를 선택합니다. 이는 사용자가 개요를 원하는지 아니면 자세한 요약을 원하는지와 같이 상황에 따라 민감한 결정으로 이어집니다. 이러한 접근 방식의 예로는 쿼리에 대한 응답을 최대화하는 도구를 동적으로 선택하는 LlamaIndex의 라우터 쿼리 엔진이 있습니다.
2. 장기적인 컨텍스트 유지
기억의 가장 중요한 역할은 여러 상호 작용에 걸쳐 맥락을 유지하는 것이지만, 이와 대조적으로 RAG의 에이전트 변종에 있는 기억 기능을 갖춘 에이전트는 일관되고 맥락에 따른 반응을 초래하는 상호 작용을 지속적으로 인식하고 있습니다.
LlamaIndex에는 상황별 대화와 단일 쿼리를 위한 메모리가 있는 채팅 엔진도 포함되어 있습니다. LLM 컨텍스트 창의 오버플로를 방지하려면 이러한 메모리는 긴 토론 중에 엄격하게 제어되어야 하며 요약된 형식으로 축소되어야 합니다.
3. 계획을 위한 하위 질문 엔진
복잡한 쿼리를 더 작고 관리 가능한 작업으로 나누어야 하는 경우가 많습니다. 하위 질문 쿼리 엔진은 LlamaIndex를 에이전트로 사용하는 핵심 기능 중 하나로, 큰 쿼리를 작은 쿼리로 나누어 순차적으로 실행한 후 결합하여 일관된 답변을 형성합니다. 쿼리의 여러 측면을 단계별로 조사하는 에이전트의 능력은 선형 계획에 비해 다단계 계획의 개념을 나타냅니다.
4. 반영 및 오류 수정
반사 에이전트는 출력을 생성하지만 필요한 경우 해당 출력의 품질을 확인하여 수정합니다. 이 기술은 정확성을 보장하고 나오는 내용이 사람이 의도한 대로인지 확인하는 데 가장 중요합니다. LlamaIndex의 자기 성찰 워크플로 덕분에 상담원은 특정 품질 수준을 충족하지 못하는 활동을 재시도하거나 조정하여 성과를 검토합니다. 그러나 Agentic RAG는 자체 수정 기능을 갖추고 있기 때문에 신뢰성이 가장 중요한 엔터프라이즈 응용 프로그램에 대해서는 어느 정도 신뢰할 수 있습니다.
5. 복잡한 행위적 추론:
트리 기반 탐색은 에이전트가 무언가를 달성하기 위해 가능한 경로 수를 조사해야 할 때 적용됩니다. 순차적 의사결정과 달리 트리 기반 추론을 통해 에이전트는 다양한 전략을 한꺼번에 고려하고 실시간으로 업데이트되는 평가 기준을 기반으로 가장 유망한 전략을 선택할 수 있습니다.
FlameCloud 및 FlameParse
LLM 및 RAG 애플리케이션 내에서 엔터프라이즈급 컨텍스트 확대를 위해 설계된 광범위한 관리 서비스를 갖춘 LlamaCloud는 LlamaIndex 환경에서 큰 도약을 이루었습니다. 이 솔루션을 통해 AI 엔지니어는 복잡한 데이터 랭글링 프로세스를 줄여 핵심 비즈니스 로직 개발에 집중할 수 있습니다.
사용 가능한 또 다른 구문 분석 엔진은 LlamaIndex의 수집 및 검색 파이프라인과 편리하게 통합되는 LlamaParse입니다. 이는 표, 그림과 같은 개체가 포함된 복잡하고 반구조화된 문서를 처리하는 가장 중요한 요소 중 하나입니다. 또 다른 중요한 빌딩 블록은 LlamaHub의 중앙 데이터 저장소 또는 LlamaParse 출력과 같은 대규모 소스 세트에서 데이터를 쉽게 로드, 처리 및 저장할 수 있는 다양한 방법을 제공하는 관리형 수집 및 검색 API입니다. 또한 다양한 데이터 스토리지 통합을 지원합니다.
결론
Agentic RAG는 에이전트 자체에 더 많은 인텔리전스를 도입하여 정보 처리의 변화를 나타냅니다. 많은 상황에서 보다 정확하고 세련된 결과를 제공하기 위해 에이전트 RAG를 프로세스 또는 다른 API와 결합할 수 있습니다. 예를 들어 문서 요약의 경우 에이전트 RAG는 요약을 작성하거나 세부 사항을 비교하기 전에 사용자의 목적을 평가합니다. 고객 지원을 제공할 때 에이전트 RAG는 교육 모델뿐만 아니라 사용 가능한 메모리 및 외부 소스를 기반으로 점점 복잡해지는 고객 문의에 정확하고 개별적으로 응답할 수 있습니다. Agentic RAG는 생성 모델에서 다른 유형의 소스를 활용하여 강력하고 정확한 결과를 달성하는 보다 미세 조정된 시스템으로의 전환을 강조합니다. 그러나 생성적이고 지능적이어야 함 현재로서는 파이프라인에 점점 더 많은 데이터가 추가됨에 따라 이러한 모델과 Agenitc RAG는 더 높은 효율성을 추구하고 있습니다.
게시물 RAG 진화 – Agentic RAG의 입문서 처음 등장한 Unite.AI.