6 분 소요

LlamaIndex는 대규모 언어 모델(LLM)을 사용해 애플리케이션을 구축하기 위해 프라이빗 데이터와 퍼블릭 데이터의 통합을 간소화하는 오케스트레이션 프레임워크입니다. 데이터 수집, 인덱싱 및 쿼리를 위한 도구를 제공하여 생성형 AI 요구 사항을 위한 다목적 솔루션입니다.

애플리케이션 개발 프로세스에 생성형 AI가 빠르게 통합되면서 대규모 언어 모델(large language models, LLMs) 을 학습하는 데 사용되는 퍼블릭 데이터와 자체 프라이빗 데이터를 통합할 수 있어야 할 필요성이 점점 더 커지고 있습니다. 문제는 대부분의 비공개 데이터가 구조화되지 않고 사일로화되어 있으며 LLM에서 쉽게 액세스할 수 있는 형식이 아니라는 점입니다.

최근 엔터프라이즈용 대규모 언어 모델에 대한 웨비나에서는 ChatGPT 이외의 애플리케이션에 LLM을 사용하는 방법과 일반적으로 사용 가능한 LLM이 학습하는 공개 데이터를 보강하기 위해 비공개 데이터를 어떻게 사용해야 하는지에 대해 살펴봤습니다. 바로 이 지점에서 개인 데이터를 수집하고 쿼리하는 기본 제공 도구를 사용하여 LLM 앱을 구축하기 위한 오케스트레이션 프레임워크를 제공하는 LlamaIndex와 같은 솔루션이 유용하게 사용될 수 있습니다.

데이터 통합, 데이터 구성, 데이터 검색을 위한 프레임워크로서 개인 데이터 생성 AI에 필요한 모든 것을 충족하기 위해 LlamaIndex를 어떻게 사용할 수 있는지 알아보세요.


라마인덱스란? (What is LlamaIndex?)

앞서 설명한 바와 같이, 라마인덱스는 오케스트레이션 프레임워크 또는 “데이터 프레임워크” 로서 LLM 애플리케이션 구축을 간소화합니다. 이 프레임워크는 개인 데이터의 데이터 증강을 수행하여 지식 생성 및 추론을 위해 LLM에 통합할 수 있는 기능을 제공합니다.

모든 생성형 AI 기능의 핵심은 데이터입니다. 엔터프라이즈 애플리케이션은 LLM이 학습하는 공개 데이터뿐만 아니라 그 이상의 데이터에 액세스할 수 있어야 하며, 애플리케이션 구축을 위해 모든 내부 및 외부 데이터 소스의 정형, 비정형, 반정형 데이터를 통합할 수 있어야 합니다.

이러한 데이터 통합은 바로 LlamaIndex가 제공합니다. 여러 고유 소스에서 데이터 가져오기. 그 데이터를 벡터로 임베딩. 새로 벡터화된 데이터를 벡터 데이터베이스에 저장합니다. 궁극적으로 애플리케이션에서 해당 데이터를 사용해 벡터 검색과 같이 응답 시간이 짧은 복잡한 작업을 수행할 수 있도록 합니다.

이점 (Benefits)

  • LLM 애플리케이션에서 사용할 수 있도록 API, PDF, SQL, NoSQL, 문서 등의 기존 데이터 소스를 연결하는 데이터 수집을 간소화합니다.
  • 다운스트림 벡터 저장소/벡터 데이터베이스와의 기본 통합을 통해 다양한 애플리케이션 사용 사례에서 사용할 수 있도록 비공개 데이터를 기본적으로 저장하고 색인합니다.
  • 쿼리 인터페이스가 내장되어 있어 데이터에 대한 입력 프롬프트에서 지식 증강 응답을 반환하는 기능을 제공합니다.

사용 사례 (Use Cases)

  • 자연스러운 고객 참여를 위해 제품 문서와 실시간 상호작용을 제공하는 자연어 챗봇을 구축
  • 지속적으로 증가하는 지식 기반을 기반으로 변화하는 의사 결정 트리에 대응할 수 있는 인지 인지형 지식 에이전트 구축
  • 자연어 및 인간 상호 작용을 사용하여 대량의 정형 데이터와 상호 작용
  • 애플리케이션별 참여를 제공하는 비공개 지식 코퍼스로 공개 데이터를 보강


라마인덱스는 어떻게 작동하나요? (How does LlamaIndex work?)

이전에 GPT 인덱스라고 불렸던 라마 인덱스는 LLM 기반 애플리케이션을 구축하기 위한 엔드투엔드 수명 주기를 관리하는 데 필요한 도구를 제공하는 프레임워크입니다. LLM 기반 애플리케이션을 구축할 때의 문제는 일반적으로 다양한 소스의 데이터가 필요하며, 공통 데이터 표현을 강력하게 준수하지 않는 한 필요한 데이터의 형식이 매우 다양하고 일부는 정형, 일부는 비정형, 일부는 그 중간 형태라는 것입니다.

바로 이 점에 착안해 LlamaIndex는 데이터 수집 및 데이터 인덱싱을 위한 도구를 통해 이러한 데이터를 활용할 수 있는 도구 상자를 제공합니다. 수집 및 인덱싱이 완료되면 검색 증강 생성(retrieval augmented generation, RAG) 애플리케이션은 LlamaIndex 쿼리 인터페이스를 사용해 해당 데이터에 액세스하고 LLM을 구동할 수 있습니다.

수집 (Ingestion)

LlamaIndex에는 사용자 정의 데이터 소스를 LLM에 연결할 수 있는 기능을 제공하는 수백 개의 데이터 로더가 있습니다. 이 로더는 파일, JSON 문서, 간단한 CSV, 비정형 데이터에서 데이터를 로드하기 위한 일반 플러그인에 Airtable, Jira, Salesforce 등과 같은 사전 구축된 솔루션을 연결합니다.

데이터 로더의 전체 목록은 라마 허브에서 확인할 수 있습니다.

인덱싱 (Indexing)

데이터가 수집되면, 해당 데이터를 수학적으로 표현하여 LLM에서 쉽게 쿼리할 수 있도록 해야 합니다. 라마 인덱스는 데이터를 여러 차원으로 수학적으로 표현할 수 있는 기능을 제공합니다. 데이터 인덱싱은 새로운 개념은 아니지만 머신 러닝을 사용하면 인덱싱의 세분성을 1~2개 차원(예: 키/값 표현)에서 수백 또는 수천 개 차원으로 확장할 수 있습니다.

머신 러닝과 LLM을 위해 데이터를 색인하는 가장 일반적인 접근 방식을 벡터 인덱스(vector index) 라고 하며, 데이터가 색인된 후 데이터의 수학적 표현을 벡터 임베딩(vector embedding) 이라고 합니다. 인덱싱 및 임베딩 모델에는 여러 가지 유형이 있지만, 일단 데이터가 임베딩되면 비슷한 의미를 가진 텍스트와 같은 것들은 비슷한 수학적 표현을 가지므로 데이터의 수학적 표현을 사용해 의미론적 검색을 제공할 수 있습니다. 예를 들어, 왕과 여왕은 쿼리가 왕족인 경우 연관성이 높을 수 있지만, 성별인 경우 연관성이 높지 않을 수 있습니다.

쿼리 (Querying)

바로 이 지점에서 라마 인덱스와 LLM의 진정한 힘이 발휘되는데, 라마 인덱스를 사용하여 데이터를 쿼리하는 것은 데이터를 병합/조인하고 찾는 복잡한 일련의 명령이 아니라 프롬프트 엔지니어링(prompt engineering) 이라는 개념을 통해 자연어로 표현되기 때문입니다. 데이터를 수집하고 색인한 후 데이터와의 상호 작용을 가장 간단하게 볼 수 있는 방법은 쿼리가 질문을 하고 응답을 받는 프로세스가 되는 것입니다.


라마인덱스의 다양한 인덱스는 무엇인가요? (What are the different indexes in LlamaIndex?

라마인덱스는 데이터를 탐색하고 분류하는 방법에 대한 최적화를 제공하도록 설계된 여러 가지 인덱싱 모델을 제공합니다. 애플리케이션이 데이터에 대해 수행해야 하는 작업의 유형을 알고 있다면 특정 유형의 인덱스를 활용하여 LLM을 사용하고 쿼리를 인스턴스화하는 것이 애플리케이션에 상당한 이점을 제공할 수 있습니다.

리스트 인덱스 (List index)

리스트 인덱스는 데이터를 세분화하여 순차적인 리스트의 형태로 데이터를 나타내는 접근 방식입니다. 이 인덱스의 장점은 데이터를 다차원적으로 탐색할 수 있지만 데이터를 쿼리하는 데 있어 순차적 패턴을 통해 최적화된다는 것입니다. 이러한 유형의 인덱스는 시간이 지남에 따라 발생하는 구조화된 객체에 적합하므로, 변경 로그와 같이 시간이 지남에 따라 상황이 어떻게 변했는지 쿼리하려는 경우에 적합합니다.

트리 인덱스 (Tree index)

트리 인덱스를 사용할 때 LlamaIndex는 입력 데이터를 가져와서 데이터가 부모 노드와 잎 노드로 구성된 이진 트리 구조로 구성합니다. 트리 인덱스는 검색이 트리를 통과하는 방식에 따라 텍스트의 특정 부분을 추출해야 하는 경우 대량의 데이터를 통과하고 응답을 구성할 수 있는 기능을 제공합니다. 트리 인덱싱은 지원/FAQ 엔진 위에 자연어 처리 챗봇을 구축하는 것과 같이 추적하거나 검증하려는 정보 패턴이 있는 경우에 가장 효과적입니다.

벡터 저장소 인덱스 (Vector store index)

벡터 저장소 인덱스 유형을 사용할 때, LlamaIndex는 데이터 노트를 벡터 임베딩으로 저장합니다. 이는 벡터 또는 유사도 검색(vector or similarity search) 등 다양한 방식으로 데이터 표현을 사용할 수 있는 기능을 제공하기 때문에 가장 일반적인 인덱싱 유형일 것입니다. 벡터 저장 인덱스로 데이터를 색인하면, 작은 데이터 세트와 단일 애플리케이션에서 로컬로 활용할 수 있고, 더 큰 데이터 세트나 여러 다른 LLM/애플리케이션에서 사용하려면 고성능 벡터 데이터베이스(high-performance vector) 에 저장할 수 있습니다.

키워드 인덱스 (Keyword index)

키워드 인덱싱은 메타데이터 태그, 즉 키워드를 해당 키워드가 포함된 특정 노드에 매핑하는 전통적인 접근 방식에 가깝습니다. 키워드가 여러 개의 다른 노드에 매핑될 수 있고 노드가 여러 개의 다른 키워드에 매핑될 수 있기 때문에 이 매핑은 키워드를 기반으로 관계의 웹을 구축합니다. 이 인덱싱 모델은 대량의 데이터에 태그를 지정하고 여러 다른 데이터 세트에서 쿼리할 수 있는 특정 키워드를 기반으로 쿼리하려는 경우에 효과적입니다. 예를 들어 법률 브리핑, 의료 기록 또는 특정 유형의 메타데이터를 기반으로 정렬해야 하는 기타 데이터가 이에 해당합니다.


라마인덱스(LlamaIndex)와 랭체인(LangChain) 비교

가장 많이 제기되는 질문 중 하나는 라마인덱스와 랭체인을 어떻게 비교하는가, 비슷한 기능을 제공하는가, 아니면 서로를 보완하는가 하는 것입니다. 사실, 라마인덱스와 랭체인은 동전의 양면과 같은 기능을 제공합니다. 둘 다 애플리케이션에서 LLM과 머신 러닝에 대한 인터페이스를 제공하도록 설계되었지만, 라마인덱스는 데이터의 지능적인 검색을 위한 인덱싱 및 쿼리 기능을 제공하도록 특별히 설계 및 구축되었습니다. 동전의 다른 면에는 자연어 처리를 통해 데이터와 상호 작용할 수 있는 기능, 즉 챗봇을 구축하여 데이터와 상호 작용하거나 해당 데이터를 사용하여 코드 호출과 같은 다른 기능을 구동할 수 있는 기능도 있습니다.

라마인덱스는 다양한 형식으로 데이터를 저장하고 다양한 소스에서 데이터를 가져올 수 있는 기능을 제공하여 궁극적으로 생성형 AI 애플리케이션을 위한 방법을 제공합니다.

랭체인은 저장된 데이터로 무언가를 하고, 코드를 생성하고, 생성형 질문에 대한 답변을 제공하고, 의사 결정을 내릴 수 있는 기능을 제공하여 궁극적으로 생성형 AI 애플리케이션에 무엇을 할 수 있는지를 제공합니다.


라마인덱스로 어떤 다양한 프로젝트를 만들 수 있나요?

라마인덱스를 사용하면 사용하기 쉬운 데이터/오케스트레이션 프레임워크를 통해 데이터를 수집, 인덱싱 및 쿼리하여 생성형 AI 애플리케이션을 구축할 수 있습니다. 위의 간단한 예시를 통해 시작하기는 했지만, LlamaIndex의 진정한 힘은 데이터 기반 AI 애플리케이션을 구축할 수 있는 능력에서 비롯됩니다. 모델을 재교육할 필요 없이, 확장성이 뛰어난 벡터 데이터베이스와 LlamaIndex를 사용하여 들어오는 데이터를 동적으로 해석하고 상황에 맞는 결정을 실시간으로 내림으로써 복잡한 문제 해결과 상호 작용할 수 있는 맞춤형 쿼리 엔진, 대화형 챗봇 또는 강력한 에이전트를 만들 수 있습니다.


따라서 개인 데이터를 활용하고 이를 애플리케이션의 데이터 상호 작용 및 응답 기능에 통합하는 기능이 필요한 생성형 AI 애플리케이션을 구축할 때, 수집, 인덱싱 및 쿼리 작업을 시작하기에 LlamaIndex가 좋은 선택입니다. 하지만 과거의 실수를 반복하여 AI 애플리케이션에 사용, 임베딩, 액세스하는 데이터를 사일로화하지 마세요. 이러한 임베딩과 인덱스를 확장성이 뛰어난 벡터 스토어에 저장하는 것을 포함하는 완벽한 엔드투엔드 솔루션을 구축하세요.

태그:

카테고리:

업데이트:

댓글남기기