AIㆍML / 개발자

라마인덱스 리뷰 | 컨텍스트 증강 LLM 앱을 만드는 가장 쉬운 방법

Martin Heller | InfoWorld 2024.06.20
"기업 데이터를 프로덕션에 즉시 사용 가능한 LLM 애플리케이션으로 변환하십시오." 라마인덱스(LlamaIndex) 홈페이지에 큼지막한 글씨로 나와 있는 문구다. 그 아래에는 "라마인덱스는 LLM 애플리케이션을 구축하기 위한 앞서가는 데이터 프레임워크입니다"라는 문구가 있다. 라마인덱스가 앞서가는 데이터 프레임워크인지는 잘 모르겠지만, 잠시 후에 다룰 랭체인(LangChain), 시맨틱 커널(Semantic Kernel)과 함께 LLM을 사용한 빌드 부문에서 앞서가는 데이터 프레임워크라는 데는 필자도 전적으로 동의한다.
 
ⓒ Getty Images Bank

라마인덱스는 현재 두 개의 오픈소스 프레임워크와 클라우드를 제공한다. 프레임워크 중 하나는 파이썬, 다른 하나는 타입스크립트로 되어 있다. 라마클라우드(LlamaCloud, 현재 비공개 프리뷰)는 라마허브(LlamaHub)를 통해 스토리지, 검색, 데이터 소스에 대한 링크를 제공하며, 복잡한 문서를 위한 유료 파싱 서비스인 라마파스(LlamaParse)는 독립적인 서비스로도 사용할 수 있다.

라마인덱스는 데이터 로드, 저장, 인덱싱, LLM 워크플로우 조정을 통한 쿼리, 그리고 LLM 애플리케이션의 성능 평가에 강점이 있다. 라마인덱스는 40개 이상의 벡터 저장소, 40개 이상의 LLM, 160개 이상의 데이터 소스와 통합된다. 라마인덱스 파이썬 리포지토리의 별표는 3만 개 이상이다.

일반적인 라마인덱스 애플리케이션은 Q&A, 구조적 추출, 채팅, 시맨틱 검색을 수행하며 에이전트 역할도 한다. RAG(Retrieval Augmented Generation)을 사용해 특정 소스(많은 경우 모델의 초기 학습에 포함되지 않은 소스)로 LLM의 근거를 확보할 수 있다.

라마인덱스의 경쟁 상대는 랭체인, 시맨틱 커널, 헤이스택(Haystack)이다. 범위와 기능 측면에서 정확히 동일하지는 않지만 인기 측면에서는 랭체인의 파이썬 리포지토리가 8만 개 이상의 별표로, 3만 개 이상인 라마인덱스에 비해 3배 가까이 더 많다. 훨씬 더 새로운 시맨틱 커널의 별표는 1만 8,000개 이상으로 라마인덱스의 절반보다 약간 많은 수준이며, 헤이스택 리포지토리의 별표는 1만 3,000개 이상이다. 

별표는 시간이 지나면서 누적되므로 리포지토리가 생긴 이후의 기간도 별표 수에 영향을 미친다. 위에서 별표 수마다 "이상"이라는 단어를 붙인 이유다. 깃허브 리포지토리의 별표는 역사적 인기도와 어느 정도 상관관계가 있다.

라마인덱스, 랭체인, 헤이스택은 모두 여러 주요 기업을 사용자로 두고 있는데, 둘 이상의 프레임워크를 사용하는 경우도 종종 있다. 시맨틱 커널은 사례 연구를 제외하고는 일반적으로 사용자 수를 공개하지 않는 마이크로소프트의 프레임워크다.
 
라마인덱스 프레임워크는 데이터, 임베딩, LLM, 벡터 데이터베이스, 평가를 애플리케이션에 연결하는 데 도움이 된다. 이러한 요소는 Q&A, 구조적 추출, 채팅, 시맨틱 검색, 에이전트에 사용된다. ⓒ Foundry


라마인덱스 기능

전체적인 수준에서 보면 라마인덱스는 컨텍스트 증강 LLM 애플리케이션을 구축하는 데 도움이 되도록 설계됐다. 기본적으로 컨텍스트 증강 LLM 애플리케이션은 자체 보유한 데이터와 대규모 언어 모델을 결합하는 것을 의미한다. 컨텍스트 증강 LLM 애플리케이션의 예를 들면 질의응답 챗봇, 문서 이해 및 추출, 자율 에이전트 등이 있다.

라마인덱스가 제공하는 툴은 데이터 로딩, 데이터 인덱싱과 저장, LLM을 사용한 데이터 쿼리, LLM 애플리케이션의 성능 평가를 수행한다.
 
  • 데이터 커넥터는 기존 데이터를 네이티브 소스와 형식으로 수집한다.
  • 데이터 인덱스는 임베딩이라고도 하며, 데이터를 중간 표현으로 구조화한다.
  • 엔진은 데이터에 대한 자연어 액세스를 제공한다. 질의응답을 위한 쿼리 엔진, 데이터에 대한 다중 메시지 대화를 위한 채팅 엔진이 포함된다.
  • 에이전트는 소프트웨어 툴로 증강되는 LLM 기반 지식 작업자다.
  • 관찰가능성/평가 통합은 앱의 실험과 평가, 모니터링을 가능하게 해준다.


컨텍스트 증강

LLM은 많은 텍스트로 학습되었지만 그 중에는 원하는 도메인에 대한 텍스트가 아닌 경우도 있을 것이다. 컨텍스트 증강을 수행하고 도메인에 대한 정보를 추가하는 주요 방법으로는 문서 제공, RAG, 모델 미세 조정이 있다.

가장 단순한 컨텍스트 증강은 모델에 쿼리와 함께 문서를 제공하는 방법으로, 이 경우 라마인덱스도 불필요하다. 문서 제공은 문서의 크기가 사용 중인 모델의 컨텍스트 창을 초과하지 않는 한 괜찮지만 최근까지도 이 크기가 문제가 됐다. 지금은 컨텍스트 창의 크기가 백만 토큰에 이르는 LLM이 있으므로 많은 작업에서 다음 단계까지 갈 필요가 없다. 백만 토큰 코퍼스를 대상으로 다수의 쿼리를 수행할 계획이라면 문서를 캐시하는 것이 좋은데, 이는 글의 주제를 벗어나는 내용이다.

검색 증강 생성은 추론 시점에, 일반적으로 벡터 데이터베이스를 사용하여 LLM과 컨텍스트를 결합한다. RAG 절차에서는 임베딩을 사용해서 길이를 제한하고 검색된 컨텍스트의 관련성을 개선하는 방법으로 컨텍스트 창 제한을 극복하고 모델이 질문에 답하기 위해 필요한 정보를 찾게 될 가능성을 높인다.

기본적으로 임베딩 기능은 단어 또는 구를 취해서 이를 부동소수점 숫자의 벡터에 매핑하며 일반적으로 벡터 검색 인덱스를 지원하는 데이터베이스에 저장된다. 이후 검색 단계에서는 시맨틱 유사성 검색을 사용해서(많은 경우 쿼리의 임베딩과 저장된 벡터 간 각도의 코사인을 사용) 증강된 프롬프트에 사용할 "인접" 정보를 찾는다.

LLM 미세 조정은 지도 학습 프로세스로, 모델의 매개변수를 특정 작업에 맞게 조정한다. 대상 작업과 관련된 예제로 레이블이 지정된 소규모의 작업별 또는 도메인별 데이터 집합으로 모델을 학습시킨다. 대체로 미세 조정은 많은 수의 서버 수준 GPU를 사용해 몇 시간 또는 며칠 동안 수행되며 수백, 수천 개의 태그가 지정된 견본이 필요하다.


라마인덱스 설치

라마인덱스 파이썬 버전은 깃허브 리포지토리의 소스 코드 또는 llama-index 스타터 설치를 사용하거나 llama-index-core와 함께 통합 요소를 선택하는 세 가지 방법으로 설치할 수 있다.
 
pip install llama-index

이렇게 하면 라마인덱스 코어와 함께 오픈AI LLM과 임베딩을 가져온다. 오픈AI API 키(여기 참조)를 제공해야 이를 사용하는 예제를 실행할 수 있다. 라마인덱스 스타터 예제는 간단해서, 몇 가지 설정 단계 이후 5줄짜리 코드로 구성된다. 리포지토리에는 그 외에도 많은 예제와 문서가 있다.

맞춤형 설치는 다음과 같은 식으로 가능하다.
 
pip install llama-index-core llama-index-readers-file llama-index-llms-ollama llama-index-embeddings-huggingface

이 코드는 올라마(Ollama)와 허깅 페이스(Hugging Face) 임베딩에 대한 인터페이스를 설치한다. 이 설치와 함께 사용하는 로컬 스타터 예제도 있다. 어느 방법으로 시작하든 pip를 사용해서 인터페이스 모듈을 더 추가할 수 있다.

자바스크립트나 타입스크립트로 코드를 작성하는 편을 선호한다면 LlamaIndex.TS(리포)를 사용하면 된다. 타입스크립트 버전의 한 가지 이점은 로컬 설정 없이 스택블리츠(StackBlitz)의 예제를 실행할 수 있다는 것이다. 이 경우에도 오픈AI API 키는 제공해야 한다.


라마클라우드와 라마파스

라마클라우드(LlamaCloud)는 문서를 업로드, 파싱, 인덱싱하고 라마인덱스를 사용해 검색할 수 있게 해주는 클라우드 서비스다. 비공개 알파 단계라서 필자는 사용해 볼 수가 없었다. 라마파스는 라마클라우드의 한 구성요소로, PDF를 구조적 데이터로 파싱할 수 있게 해준다. REST API, 파이썬 패키지, 웹 UI를 통해 사용할 수 있으며 현재 공개 베타 단계다. 라마파스에 가입하면 주당 7,000페이지 이후부터 소량의 사용량 기반 요금을 내고 사용할 수 있다. 1만 페이지 분량의 애플 공시 보고서를 대상으로 라마파스와 파이PDF(PyPDF)를 비교하는 예제는 인상적이지만 필자가 직접 테스트해보지는 않았다.


라마허브

라마허브(LlamaHub)에서는 라마인덱스를 위한 방대한 통합 모음에 액세스할 수 있다. 에이전트, 콜백, 데이터 로더, 임베딩, 그 외에 17가지 범주가 포함된다. 일반적으로 통합은 라마인덱스 리포지토리, 파이PI(PyPI), NPM에 있으며 pip install 또는 npm install을 사용해 로드할 수 있다.


create-llama CLI

create-llama는 라마인덱스 애플리케이션을 생성하는 명령줄 툴이며 라마인덱스를 빠르게 시작하는 방법이다. 생성된 애플리케이션에는 Next.js 기반 프론트엔드가 있고 백엔드는 세 가지 중에서 선택할 수 있다.


RAG CLI

RAG CLI는 컴퓨터에 로컬로 저장한 파일에 대해 LLM과 채팅하기 위한 명령줄 툴이다. 라마인덱스의 많은 사용 사례 중 하나지만 상당히 많이 사용된다.


라마인덱스 구성요소

라마인덱스 구성요소 가이드에서는 라마인덱스의 다양한 부분에 대해 구체적인 도움말을 볼 수 있다. 아래 첫 번째 스크린샷에는 구성요소 가이드 메뉴가 나와 있다. 두 번째 스크린샷은 프롬프트를 위한 구성요소 가이드로, 프롬프트 맞춤설정에 대한 섹션으로 스크롤한 화면이다.
 
라마인덱스 구성요소 가이드는 프레임워크를 구성하는 다양한 요소에 대해 설명한다. 상당히 많은 구성요소가 있다. ⓒ Foundry
프롬프트의 사용 패턴이다. 이 예제는 셰익스피어 희극 스타일로 답변하도록 Q&A 프롬프트를 맞춤 설정하는 방법을 보여준다. 견본을 제공하지 않으므로 제로샷 프롬프트다. ⓒ Foundry


라마인덱스 배우기

원하는 프로그래밍 언어(파이썬 또는 타입스크립트)로 된 스타터 예제를 읽고 이해하고 실행했다면 관심을 끄는 다른 예제도 최대한 많이 읽고 이해하고 사용해 볼 것을 권한다. 아래 스크린샷은 essay.ts를 실행한 다음 chatEngine.ts를 사용해 이에 관해 질문하는 방식으로 essay라는 파일을 생성한 결과를 보여준다. Q&A를 위한 RAG 사용의 예다.

chatEngine.ts 프로그램은 라마인덱스의 ContextChatEngine, Document, Settings, VectorStoreIndex 구성요소를 사용한다. 소스 코드를 살펴보니 오픈AI gpt-3.5 터보-16k 모델 기반인데, 앞으로 바뀔 수 있다. VectorStoreIndex 모듈은 필자가 문서를 제대로 읽었다면 오픈소스인 러스트 기반 Qdrant 벡터 데이터베이스를 사용하는 것으로 보인다.
 
오픈AI 키로 터미널 환경을 설정한 후 essay.ts를 실행해 에세이 파일을 생성하고 chatEngine.ts를 사용해서 이 에세이에 대한 필드 쿼리를 생성했다. ⓒ Foundry


LLM에 컨텍스트 더하기

지금까지 살펴본 바와 같이 라마인덱스를 사용해서 LLM 애플리케이션을 만드는 방법은 아주 쉽다. 필자는 여러 오픈AI LLM과 RAG Q&A 애플리케이션을 위한 파일 데이터 소스에 대해 아무 문제 없이 테스트할 수 있었다. 앞서 언급했듯이 라마인덱스는 40개 이상의 벡터 저장소, 40개 이상의 LLM, 160개 이상의 데이터 소스와 통합된다. Q&A, 구조적 추출, 채팅, 시맨틱 검색, 에이전트를 포함한 여러 사용 사례에서 작동한다.

라마인덱스를 랭체인, 시맨틱 커널, 헤이스택과 함께 평가해 볼 것을 권한다. 대부분의 경우 이 중에서 하나 이상의 프레임워크가 요구사항을 충족할 것이다. 애플리케이션마다 요구사항이 다르므로 어느 하나가 전반적으로 더 낫다고 권장할 수는 없다.


요약

라마인덱스를 사용해서 LLM 애플리케이션을 만드는 방법은 아주 쉽다. 필자는 여러 오픈AI LLM과 RAG Q&A 애플리케이션을 위한 파일 데이터 소스에 대해 아무 문제 없이 테스트할 수 있었다. 앞서 언급했듯이 라마인덱스는 40개 이상의 벡터 저장소, 40개 이상의 LLM, 160개 이상의 데이터 소스와 통합된다. Q&A, 구조적 추출, 채팅, 시맨틱 검색, 에이전트를 포함한 여러 사용례에서 작동한다.
editor@itworld.co.kr
Sponsored
IDG 설문조사

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.