오늘은 단순한 RAG를 넘어서 RAG에 에이전트를 추가하는 새로운 주제에 대한 설명자료를 요약정리 하였습니다.
Llama Index 개요
Llama Index는 데이터를 언어 모델에 연결하여 애플리케이션을 구축하기 위한 프레임워크입니다. 주요 기능은 다음과 같습니다:
- 데이터 로더
- 데이터 인덱싱
- 쿼리 오케스트레이션 (검색, 프롬프트 오케스트레이션, LLM 등)
이를 통해 개발자는 채팅 인터페이스, 워크플로우 자동화, 문서 인사이트 추출 등 다양한 애플리케이션을 구축할 수 있습니다.
RAG(Retrieval-Augmented Generation)란?
RAG는 문서 검색과 언어 모델 로직을 결합하여 애플리케이션을 구축하는 방법입니다. 주요 단계는 다음과 같습니다:
- 문서를 청크로 나누기
- 벡터 데이터베이스에 저장
- 검색 및 LLM 로직을 사용하여 데이터베이스에서 데이터를 가져와 애플리케이션 구축
RAG는 간단한 질문이나 작은 문서 집합에 대해서는 효과적이지만, 복잡한 쿼리에는 한계가 있습니다.
단순 RAG의 한계
단순 RAG는 다음과 같은 경우에 어려움을 겪습니다:
- 복잡한 질문
- 요약
- 비교 질문
- 구조화된 분석
- 다중 부분 질문
이러한 한계를 극복하기 위해 에이전트를 RAG에 통합하는 방법을 살펴보겠습니다.
에이전트 소개
에이전트는 RAG 프레임워크에 통합되어 질문 답변 능력을 향상시키고 데이터에 대한 추론을 개선합니다. 에이전트를 사용하면 더 복잡한 처리와 동적 응답이 가능해집니다.
RAG에 에이전트 레이어 추가하기
RAG 파이프라인의 다양한 단계에 에이전트를 추가할 수 있습니다:
- 시작 단계
- 중간 단계
- 끝 단계
이를 통해 RAG 프로세스의 각 부분을 더 지능적으로 만들 수 있습니다.
에이전트의 정의
에이전트는 LLM을 사용하여 추론과 도구 선택을 수행합니다. RAG는 에이전트가 사용할 수 있는 하나의 도구일 뿐입니다. 에이전트는 RAG 외에도 다른 도구들을 사용하여 데이터에 접근하고 응답을 생성할 수 있습니다.
에이전트의 스펙트럼
에이전트는 단순한 것부터 고급 수준까지 다양한 스펙트럼이 있습니다:
단순한 에이전트
- 라우팅
- 쿼리 계획
- 단일 파이프라인에서의 도구 사용
고급 에이전트
- 자동화된 추론 루프 (예: ReAct)
- 동적 쿼리 계획
단순한 에이전트는 비용과 지연 시간이 낮지만 표현력이 제한적입니다. 고급 에이전트는 더 강력하지만 비용과 지연 시간이 높습니다.
라우팅
라우팅은 가장 기본적인 형태의 에이전트 추론입니다. 주어진 입력 작업이나 질문에 대해 적절한 선택지를 고르는 것입니다.
예를 들어:
- RAG 파이프라인
- 요약 파이프라인
사용자의 질문에 따라 적절한 파이프라인을 선택할 수 있습니다.
쿼리 계획
쿼리 계획은 주어진 질문을 병렬로 처리할 수 있는 하위 쿼리로 분해하는 과정입니다.
예시: "2021년 우버와 리프트의 매출 성장을 비교해주세요."
이 질문은 두 개의 하위 질문으로 나눌 수 있습니다:
- 2021년 리프트의 매출은?
- 2021년 우버의 매출은?
각 하위 질문을 관련 데이터 소스에 대해 실행하고 결과를 결합하여 최종 답변을 생성합니다.
도구 사용
도구 사용은 LLM이 API를 호출하고 주어진 도구를 사용하기 위한 매개변수를 추론하는 것입니다. 이는 다음과 같은 경우에 유용합니다:
- 벡터 데이터베이스 쿼리
- SQL 데이터베이스 쿼리
- Google 검색, Google 캘린더 등의 외부 API 사용
에이전트는 사용자 쿼리를 도구의 매개변수로 변환하여 더 정확한 결과를 얻을 수 있습니다.
순차적 다중 부분 문제 해결
더 복잡한 문제를 해결하기 위해 에이전트는 다음과 같은 기능을 갖추어야 합니다:
- 반복적인 실행을 위한 루프 추가
- 상태를 유지하기 위한 메모리 모듈 추가
Llama Index에서는 이를 "데이터 에이전트"라고 부르며, 다음과 같은 구성 요소를 포함합니다:
- 실행 파이프라인 (쿼리 계획, 도구 사용, 라우팅 등)
- 에이전트 루프 (예: ReAct)
ReAct 패러다임
ReAct는 2022년에 발표된 논문에서 소개된 인기 있는 에이전트 루프입니다. 주요 특징은 다음과 같습니다:
- 질문을 받아 생각(Thought)을 생성
- 행동(Action)과 그에 대한 입력을 결정
- 중간 결과를 대화 기록에 추가
- 작업이 완료될 때까지 반복
ReAct는 다음과 같은 기능을 포함합니다:
- 도구 사용
- 질문 분해 및 쿼리 계획
- 라우팅
ReAct를 넘어서: 고급 에이전트 아키텍처
최근 연구에서는 ReAct를 넘어서는 고급 에이전트 아키텍처를 제안하고 있습니다:
- 장기 계획 수립
- 시뮬레이션 및 롤아웃
- 시스템 수준 구성 요소 최적화
예를 들어, "LM 컴파일러" 논문에서는 컴퓨터 아키텍처와 유사한 접근 방식을 제안합니다:
- 전체 계산 그래프를 미리 계획
- 의존성 그래프 매핑
- 가능한 경우 병렬로 작업 실행
- 필요에 따라 재계획
이러한 접근 방식은 더 복잡하고 추상적인 작업을 처리할 수 있게 해줍니다.
에이전트 개발을 위한 추가 요구사항
에이전트 시스템이 발전함에 따라 다음과 같은 요구사항이 중요해질 것입니다:
- 관찰 가능성: 에이전트 실행의 전체 추적을 볼 수 있어야 함
- 제어: 에이전트의 중간 단계를 단계별로 안내할 수 있어야 함
- 사용자 정의 가능성: 연구 논문을 넘어 실제 구현과 실험이 가능해야 함
Llama Index에서는 이러한 요구사항을 충족하기 위한 쿼리 구문을 제공하고 있습니다. 개발자는 이를 통해 모듈을 조합하고 for 루프에서 실행할 수 있으며, 중간 사용자 입력을 주입하고 전체 실행 과정을 관찰할 수 있습니다.
결론
RAG에 에이전트 레이어를 추가함으로써 더 강력하고 유연한 언어 모델 애플리케이션을 구축할 수 있습니다. 단순한 라우팅부터 복잡한 다단계 추론까지, 에이전트는 RAG의 한계를 극복하고 더 지능적인 시스템을 만들 수 있게 해줍니다.
앞으로 모델이 개선되고 비용이 낮아짐에 따라 더 많은 사람들이 에이전트를 구축하게 될 것입니다. 이에 따라 관찰 가능성, 제어, 사용자 정의 가능성이 중요한 요구사항이 될 것입니다. Llama Index와 같은 프레임워크는 이러한 요구사항을 충족시키는 도구를 제공하여 개발자들이 더 쉽게 고급 에이전트 시스템을 구축할 수 있도록 지원할 것입니다.
'IT' 카테고리의 다른 글
AI 반도체 (3) | 2024.10.04 |
---|---|
부동산 투자분석 사례 (2) (0) | 2024.10.04 |
Modular RAG (5) | 2024.10.04 |
AI Bitcoin Trading System (2) | 2024.10.03 |
OpenAI GPT-4.5를 이용한 비트코인 자동 투자 실험 (6) | 2024.10.03 |