LLM 애플리케이션 만들기

LLM 애플리케이션 만들기

Understanding LlamaIndex에 오신 걸 환영해요. 이 시리즈는 에이전틱 LLM 애플리케이션을 만드는 각 단계를 짧고 작게 나눈 튜토리얼 모음이에요. 더 고급이고 미묘한 전략으로 들어가기 전에 LlamaIndex 사용법에 익숙해지도록 도와줘요. 이미 경험 많은 프로그래머인데 LlamaIndex는 처음이라면, 바로 이곳에서 시작하면 돼요.

출처: 공식문서 Building an LLM application

에이전틱 LLM 애플리케이션을 만드는 핵심 단계

이 튜토리얼은 RAG 파이프라리 구축, 에이전트 구축, 워크플로 구축 세 가지 주요 부분으로 나뉘고, 앞뒤로 몇 개의 작은 섹션이 붙어 있어요. 어떤 내용이 나오는지 살펴볼게요:

  • LLM 사용하기: LLM으로 바로 시작해 실전에 들어가요. 지원하는 수십 가지 LLM 중 어떤 것이든 원격 API 호출로든 로컬 실행으로든 사용하는 방법을 보여줄게요.

  • 에이전트 구축: 에이전트는 도구 집합을 통해 세상과 상호작용할 수 있는 LLM 기반 지식 워커예요. 그 도구들은 정보를 검색하거나(RAG, 아래 참고) 행동을 취할 수 있어요. 이 튜토리얼은 다음을 포함해요:

    • 단일 에이전트 구축: 도구 집합을 통해 세상과 상호작용할 수 있는 간단한 에이전트를 만드는 방법을 보여줘요.

    • 기존 도구 사용: LlamaIndex는 LlamaHub에 사전 구축된 에이전트 도구 레지스트리를 제공하며, 이를 에이전트에 통합할 수 있어요.

    • 상태 유지: 에이전트는 상태를 유지할 수 있는데, 이는 더 복잡한 애플리케이션을 만드는 데 중요해요.

    • 스트리밍 출력과 이벤트: 사용자에게 가시성과 피드백을 제공하는 것은 중요하며, 스트리밍이 그것을 가능하게 해줘요.

    • 휴먼 인 더 루프: 에이전트에 인간의 피드백을 넣는 것이 중요할 수 있어요.

    • AgentWorkflow로 멀티에이전트 시스템: 여러 에이전트를 결합해 협업하게 하는 것은 더 복잡한 시스템을 만드는 강력한 기법이며, 이 섹션에서 그 방법을 보여줘요.

  • 워크플로: 워크플로는 에이전틱 애플리케이션을 만들기 위한 저수준의 이벤트 기반 추상화예요. 이것은 고급 에이전틱 애플리케이션을 만들 때 사용해야 할 기반 계층이에요. 앞서 배운 사전 구축 추상화를 쓰거나, 에이전트를 완전히 처음부터 만들 수 있어요. 이 튜토리얼은 다음을 다뤄요:

    • 간단한 워크플로 구축: Workflow 클래스를 사용해 기본 에이전틱 애플리케이션을 만드는 간단한 워크플로예요.

    • 루프와 분기: 이 핵심 제어 흐름 패턴은 더 복잡한 워크플로의 구성 요소예요.

    • 동시 실행: 단계를 병렬로 실행해 작업을 효율적으로 나눌 수 있어요.

    • 스트리밍 이벤트: 여러분의 에이전트도 위에서 만든 에이전트처럼 사용자 대상 이벤트를 내보낼 수 있어요.

    • 상태 저장 워크플로: 워크플로는 상태를 유지할 수 있으며, 이는 더 복잡한 애플리케이션을 만드는 데 중요해요.

    • 관측성: 워크플로는 Arize Phoenix, OpenTelemetry 등 다양한 통합을 사용해 추적하고 디버깅할 수 있어요.

  • 에이전트에 RAG 추가: 검색 증강 생성(RAG)은 데이터를 LLM에 전달하는 핵심 기법이자, 더 정교한 에이전틱 시스템의 구성 요소예요. 여러분의 에이전트를 데이터에 대해 질문에 답할 수 있는 완전한 기능의 RAG 파이프라인으로 강화하는 방법을 보여줄게요. 여기에는 다음이 포함돼요:

    • 로딩과 인제스천: 데이터가 있는 어디든지, 비구조적 텍스트든 PDF든 데이터베이스든 다른 애플리케이션의 API든 그 데이터를 가져와요. LlamaIndex는 LlamaHub에 모든 데이터 소스에 대한 수백 개의 커넥터를 갖고 있어요.

    • 인덱싱과 임베딩: 데이터를 확보했다면, 애플리케이션이 항상 가장 관련성 높은 데이터를 다루도록 데이터 접근을 구조화하는 방법은 무한해요. LlamaIndex는 이런 전략을 아주 많이 내장하고 있어 최적의 방법을 고르는 데 도움을 줘요.

    • 저장: 데이터를 인덱스된 형태로, 또는 LLM이 제공한 전처리된 요약 형태로 저장하는 것이 더 효율적일 거예요. 보통은 Vector Store라는 특수 데이터베이스에 저장하죠(아래 참고). 인덱스와 메타데이터 등도 저장할 수 있어요.

    • 쿼리: 모든 인덱싱 전략에는 대응하는 쿼리 전략이 있고, 검색 결과와 LLM이 사용자에게 돌려주기 전에 그것을 처리하는 방식의 관련성·속도·정확도를 개선하는 방법은 아주 많아요. API 같은 구조화 응답으로 바꾸는 것도 포함되죠.

  • 모든 것 종합하기: 질문·답변, 챗봇, API, 자율 에이전트 중 무엇을 만들든 애플리케이션을 프로덕션으로 가져가는 방법을 보여줘요.

  • 추적과 디버깅: 관측성이라고도 불러요. LLM 애플리케이션에서는 내부 동작을 들여다볼 수 있다는 것이 특히 중요해요. 버그를 찾고 개선할 지점을 발견하는 데 도움이 되죠.

  • 평가: 모든 전략에는 장단점이 있고, 애플리케이션을 만들고 출시하고 진화시키는 핵심 부분은 변경이 정확도·성능·명확성·비용 등의 측면에서 애플리케이션을 개선했는지 평가하는 것이에요. 변경을 안정적으로 평가하는 것은 LLM 애플리케이션 개발의 중요한 부분이에요.

시작해 볼까요?

바로 들어가 볼 준비가 됐나요? LLM 사용하기로 가세요.

더 알아보기