LlamaIndex 핵심 개념

LlamaIndex 핵심 개념

LLM 애플리케이션을 만들다 보면 매번 마주치게 되는 개념들이 있어요. 이번에는 그 큰 그림을 먼저 잡아볼게요. 각 용어의 세부적인 쓰임새는 뒤에서 하나씩 다루니까, 지금은 "어느 개념이 어떤 역할을 하는지"만 정리하고 넘어가면 돼요.

출처: 공식문서

LLM (대규모 언어 모델)

LLM은 LlamaIndex가 시작된 근원이 되는 기술이에요. 자연어를 이해하고, 생성하고, 조작할 수 있는 인공지능 시스템인데요. 훈련 데이터에 기반해 질문에 답하기도 하고, 조회 시점에 넘겨받은 데이터를 활용해 답하기도 합니다.

에이전틱 애플리케이션 (Agentic Application)

애플리케이션 안에서 LLM이 단순히 답만 하는 게 아니라 결정을 내리고, 행동을 하고, 세상과 상호작용하는 데 쓰일 때가 많아요. 이게 바로 에이전틱 애플리케이션의 핵심 정의입니다. 정의는 넓지만, 에이전틱 애플리케이션을 구분 짓는 몇 가지 특징이 있어요.

  • LLM 보강(Augmentation): LLM에 도구(코드의 임의 호출 가능 함수), 메모리, 동적 프롬프트를 더해요.
  • 프롬프트 체이닝(Prompt Chaining): 여러 LLM 호출이 서로를 이어 받아요. 한 호출의 출력이 다음 호출의 입력이 되는 식이죠.
  • 라우팅(Routing): LLM이 애플리케이션을 다음 단계나 상태로 안내하는 역할을 해요.
  • 병렬성(Parallelism): 여러 단계나 행동을 동시에 처리할 수 있어요.
  • 오케스트레이션(Orchestration): 여러 LLM을 계층 구조로 배치해 하위 단계와 LLM들을 조율해요.
  • 반성(Reflection): LLM이 이전 단계나 호출의 출력을 되돌아보고 검증해서, 애플리케이션을 다음 단계로 이끌어요.

LlamaIndex에서는 **워크플로(Workflow)**를 써서 일련의 단계와 LLM 호출을 오케스트레이션해 이런 에이전틱 애플리케이션을 만들 수 있어요. 워크플로에 대해 자세히 알고 싶다면 워크플로 튜토리얼을 보면 돼요.

에이전트 (Agent)

에이전트는 "에이전틱 애플리케이션"의 구체적인 한 인스턴스예요. 소프트웨어가 LLM에 도구와 메모리를 결합해 반자율적으로 작업을 수행하는데, "다음에 어떤 도구를 쓸까"를 결정하는 **추론 루프(reasoning loop)**로 오케스트레이션되는 형태죠.

실제로는 이런 흐름으로 동작해요.

  • 에이전트가 사용자 메시지를 받아요.
  • 에이전트가 이전 대화 기록, 도구, 최신 사용자 메시지를 바탕으로 LLM을 이용해 다음에 취할 적절한 행동을 결정해요.
  • 사용자 요청을 돕기 위해 도구를 하나 이상 호출할 수 있어요.
  • 도구를 썼다면 에이전트는 도구의 출력을 해석해서 다음 행동을 정하는 데 활용해요.
  • 행동을 멈추면 최종 결과물을 사용자에게 돌려줘요.

에이전트를 좀 더 자세히 보려면 기본 에이전트 튜토리얼을 참고하면 돼요.

RAG (Retrieval Augmented Generation, 검색 증강 생성)

RAG는 LlamaIndex로 데이터 기반 LLM 애플리케이션을 만들 때 핵심이 되는 기법이에요. LLM을 여러분의 데이터로 학습시키는 대신, 조회 시점에 데이터를 넘겨줘서 내부 데이터에 대한 질문에 답하게 해요. 매번 모든 데이터를 보내지 않도록, RAG는 데이터를 인덱싱하고 질문과 함께 관련된 부분만 골라서 보내줍니다. RAG에 대해 자세히 알아보려면 RAG 튜토리얼을 보세요.

활용 사례

데이터 기반 LLM 애플리케이션의 활용 사례는 끝없이 많지만, 크게 네 갈래로 나눠볼 수 있어요.

  • 에이전트: LLM이 구동하는 자동 의사결정자로, 도구의 집합을 통해 세상과 상호작용해요. 에이전트는 정해진 단계를 따르는 대신 주어진 작업을 끝내기 위해 필요한 만큼 단계를 밟으며 최선의 행동을 동적으로 결정하므로, 복잡한 작업을 다루는 데 유연성이 더해져요.
  • 워크플로: LlamaIndex의 워크플로는 이벤트 기반의 추상화로, 일련의 단계와 LLM 호출을 오케스트레이션할 수 있게 해줘요. 어떤 에이전틱 애플리케이션이든 구현하는 데 쓸 수 있고, LlamaIndex의 핵심 구성 요소예요.
  • 구조화 데이터 추출: Pydantic 추출기를 쓰면 데이터에서 추출할 정확한 구조를 지정하고, LLM으로 빈 부분을 타입 안전하게 채울 수 있어요. PDF나 웹사이트 같은 비정형 소스에서 구조화 데이터를 뽑아내는 데 유용하고, 워크플로 자동화의 핵심이에요.
  • 쿼리 엔진: 자연어 질문을 받아 참고 문맥을 검색해 LLM에 넘긴 뒤 응답을 돌려주는 종단 간 흐름이에요. 데이터에 대해 물어볼 수 있게 해주는 통로예요.
  • 채팅 엔진: 데이터와 대화를 나누기 위한 종단 간 흐름이에요. 한 번의 질문·답변이 아니라 여러 번의 주고받음이 일어나죠.

더 알아보기