LlamaIndex 고수준 개념
LlamaIndex 고수준 개념
LLM 애플리케이션을 만들다 보면 같은 개념들을 아주 자주 마주치게 돼요. 이 글은 그 핵심 개념들을 빠르게 훑어보는 참고서예요. 처음 보는 용어가 나와도 부담 갖지 말고, 여기서 큰 그림만 잡아두면 뒤의 가이드를 훨씬 수월하게 따라갈 수 있어요.
대규모 언어 모델 (LLM)
LLM은 LlamaIndex가 만들어진 계기가 된 근본적인 혁신이에요. LLM은 자연어를 이해하고 생성하고 조작할 수 있는 인공지능 컴퓨터 시스템인데, 학습 데이터나 쿼리 시점에 제공된 데이터를 바탕으로 질문에 답할 수 있어요. LLM 사용법에 대해 더 알고 싶다면 LLM 사용하기 문서를 참고하세요.
에이전틱 애플리케이션 (Agentic Applications)
LLM이 애플리케이션 안에서 쓰일 때는 결정을 내리고, 행동을 취하고, 세상과 상호작용하는 데 활용되는 경우가 많아요. 이것이 바로 에이전틱 애플리케이션의 핵심 정의예요.
에이전틱 애플리케이션의 정의는 넓지만, 이를 규정짓는 몇 가지 핵심 특징이 있어요:
- LLM 증강 (LLM Augmentation): LLM이 도구(코드 안의 임의 호출 가능 함수), 메모리, 그리고/또는 동적 프롬프트로 보강돼요.
- 프롬프트 체이닝 (Prompt Chaining): LLM 호출이 서로 이어져 쌓여요. 한 LLM 호출의 출력이 다음 호출의 입력으로 사용되죠.
- 라우팅 (Routing): LLM이 애플리케이션을 다음 적절한 단계나 상태로 안내하는 데 사용돼요.
- 병렬 처리 (Parallelism): 애플리케이션이 여러 단계나 행동을 병렬로 수행할 수 있어요.
- 오케스트레이션 (Orchestration): LLM의 계층 구조가 하위 수준의 행동과 LLM을 조율해요.
- 반성 (Reflection): LLM이 이전 단계나 LLM 호출의 출력을 되돌아보고 검증하는 데 사용되며, 이를 바탕으로 애플리케이션을 다음 적절한 단계나 상태로 안내해요.
LlamaIndex에서는 Workflow 클래스를 사용해 단계와 LLM의 시퀀스를 조율함으로써 에이전틱 애플리케이션을 만들 수 있어요. 워크플로에 대해 더 알아보려면 워크플로 문서를 참고하세요.
에이전트 (Agents)
우리는 에이전트를 '에이전틱 애플리케이션'의 구체적인 사례라고 정의해요. 에이전트는 LLM을 다른 도구와 메모리와 결합해 준자율적으로 작업을 수행하는 소프트웨어 조각이며, 다음에 (있다면) 어떤 도구를 쓸지 결정하는 추론 루프 안에서 조율돼요.
실제로는 다음과 같은 흐름으로 동작해요:
- 에이전트가 사용자 메시지를 받아요
- 에이전트가 LLM을 사용해 이전 채팅 기록, 도구, 최신 사용자 메시지를 바탕으로 다음에 취할 적절한 행동을 정해요
- 에이전트가 사용자의 요청을 돕기 위해 하나 이상의 도구를 호출할 수 있어요
- 도구를 사용했다면 에이전트는 도구 출력을 해석해 다음 행동을 결정하는 데 활용해요
- 에이전트가 행동을 멈추면 최종 출력을 사용자에게 돌려줘요
에이전트에 대해 더 알아보려면 에이전트 문서를 참고하세요.
검색 증강 생성 (RAG)
검색 증강 생성(Retrieval-Augmented Generation, RAG)은 LlamaIndex로 데이터 기반 LLM 애플리케이션을 만드는 핵심 기법이에요. RAG를 쓰면 데이터를 LLM에 학습시키는 대신, 쿼리 시점에 LLM에 데이터를 제공해 사용자의 비공개 데이터에 대해 답할 수 있게 해줘요. 매번 모든 데이터를 LLM에 보내지 않기 위해, RAG는 데이터를 인덱싱하고 쿼리와 함께 관련 부분만 선택적으로 보내요. RAG에 대해 더 알아보려면 RAG 문서를 참고하세요.
주요 유스케이스
데이터 기반 LLM 애플리케이션의 유스케이스는 끝없이 많지만, 크게 다섯 가지 범주로 나눌 수 있어요:
에이전트 (Agents): 에이전트는 LLM으로 구동되는 자동 의사결정자로, 도구 집합을 통해 세상과 상호작용해요. 에이전트는 주어진 작업을 완료하기 위해 임의의 단계 수를 거칠 수 있고, 미리 정해진 단계를 따르는 대신 최선의 행동 방침을 동적으로 결정해요. 이 덕분에 더 복잡한 작업을 다루는 유연성을 얻을 수 있어요.
워크플로 (Workflows): LlamaIndex의 Workflow는 단계와 LLM 호출의 시퀀스를 조율할 수 있게 해주는 이벤트 기반 추상화예요. 워크플로는 어떤 에이전틱 애플리케이션이든 구현하는 데 쓸 수 있고, LlamaIndex의 핵심 구성 요소예요.
구조화 데이터 추출 (Structured Data Extraction): Pydantic 추출기를 사용하면 데이터에서 추출할 정확한 데이터 구조를 지정하고, LLM으로 빠진 부분을 타입 세이프하게 채울 수 있어요. PDF나 웹사이트 같은 비구조적 소스에서 구조화 데이터를 추출할 때 유용하며 워크플로 자동화의 핵심이에요.
쿼리 엔진 (Query Engines): 쿼리 엔진은 데이터에 대해 질문할 수 있게 해주는 엔드투엔드 흐름이에요. 자연어 쿼리를 받아, 검색·전달된 참조 컨텍스트와 함께 응답을 돌려줘요.
챗 엔진 (Chat Engines): 챗 엔진은 데이터와 대화하는 엔드투엔드 흐름이에요(단발 질문·답이 아니라 왕복이 여러 번 오가는 방식이죠).
더 알아보기
- 커스터마이징 방법
- Understanding LlamaIndex 가이드 계속 배우기
- 더 깊게 파고들 준비가 됐다면 컴포넌트 가이드 확인하기