부본 LlamaIndex: 맞춤형 데이터로 LLM 애플리케이션을 쉽게 강화하세요 - Unite.AI
Rescale 미팅 예약

인공 지능

LlamaIndex: 맞춤형 데이터로 LLM 애플리케이션을 쉽게 강화하세요

mm
업데이트 on
라마 인덱스

OpenAI의 GPT 시리즈와 같은 대형 언어 모델(LLM)은 공개적으로 액세스할 수 있는 다양한 데이터에 대해 훈련되어 텍스트 생성, 요약, 질문 답변 및 계획 분야에서 놀라운 기능을 보여줍니다. 다양성에도 불구하고 자주 제기되는 질문은 이러한 모델과 맞춤형, 개인 또는 독점 데이터의 원활한 통합에 관한 것입니다.

기업과 개인은 종종 Notion, Slack, Salesforce와 같은 다양한 애플리케이션에 저장되거나 개인 파일에 저장되는 고유한 맞춤형 데이터로 넘쳐납니다. 이 특정 데이터에 대해 LLM을 활용하기 위해 몇 가지 방법론이 제안되고 실험되었습니다.

미세 조정 그러한 접근 방식 중 하나를 나타내며 특정 데이터 세트의 지식을 통합하기 위해 모델 가중치를 조정하는 것으로 구성됩니다. 그러나 이 프로세스에는 어려움이 없는 것은 아닙니다. 데이터 준비에 상당한 노력이 필요하고 어려운 최적화 절차도 필요하므로 일정 수준의 기계 학습 전문 지식이 필요합니다. 더욱이, 특히 대규모 데이터 세트를 처리할 때 재정적 영향이 상당할 수 있습니다.

상황 내 학습은 정확한 결과를 생성하는 데 필요한 컨텍스트를 LLM에 제공하기 위해 입력 및 프롬프트 작성을 우선시하는 대안으로 등장했습니다. 이 접근 방식은 광범위한 모델 재교육의 필요성을 완화하여 개인 데이터를 통합하는 보다 효율적이고 접근 가능한 수단을 제공합니다.

하지만 이 방식의 단점은 사용자의 기술과 전문 지식에 의존한다는 점입니다. 신속한 엔지니어링. 또한 상황 내 학습은 특히 고도로 전문화되거나 기술적인 데이터를 다룰 때 미세 조정만큼 정확하거나 신뢰할 수 없을 수도 있습니다. 광범위한 인터넷 텍스트에 대한 모델의 사전 학습은 특정 전문 용어나 맥락에 대한 이해를 보장하지 않으며, 이로 인해 부정확하거나 관련 없는 출력이 발생할 수 있습니다. 이는 개인 데이터가 틈새 도메인이나 산업에서 나온 것일 때 특히 문제가 됩니다.

또한 단일 프롬프트에서 제공할 수 있는 컨텍스트의 양은 제한되어 있으며 작업의 복잡성이 증가함에 따라 LLM의 성능이 저하될 수 있습니다. 프롬프트에 제공된 정보는 잠재적으로 민감하거나 기밀일 수 있으므로 개인 정보 보호 및 데이터 보안 문제도 있습니다.

커뮤니티가 이러한 기술을 탐색함에 따라 다음과 같은 도구가 제공됩니다. 라마 인덱스 지금 주목을 받고 있습니다.

라마 색인

라마 색인

에 의해 시작되었습니다 제리 리우, 전 Uber 연구원이었습니다. 지난 가을 GPT-3을 실험하면서 Liu는 개인 파일과 같은 개인 데이터 처리와 관련된 모델의 한계를 발견했습니다. 이러한 관찰로 인해 오픈 소스 프로젝트 LlamaIndex가 시작되었습니다.

이 이니셔티브는 투자자를 유치하여 $ 8.5 만 최근 종자 자금 조달 라운드에서.

LlamaIndex는 사전 훈련된 모델과 사용자 정의 데이터 사용 사례 간의 격차를 해소하여 맞춤형 데이터로 LLM을 강화합니다. LlamaIndex를 통해 사용자는 LLM을 통해 자신의 데이터를 활용하여 개인화된 통찰력으로 지식 생성 및 추론을 실현할 수 있습니다.

사용자는 LLM에 자신의 데이터를 원활하게 제공하여 지식 생성 및 추론이 개인화되고 통찰력 있는 환경을 조성할 수 있습니다. LlamaIndex는 데이터 상호 작용을 위한 보다 사용자 친화적이고 안전한 플랫폼을 제공함으로써 상황 내 학습의 한계를 해결하고, 기계 학습 전문 지식이 제한적인 사용자라도 개인 데이터로 LLM의 잠재력을 최대한 활용할 수 있도록 보장합니다.

높은 수준의 개념 및 일부 통찰력

1. 검색 증강 생성(RAG):

라마인덱스 RAG

라마인덱스 RAG

RAG는 ​​LLM을 사용자 정의 데이터와 결합하여 보다 정확하고 정보에 입각한 응답을 제공할 수 있는 모델의 용량을 향상시키도록 설계된 XNUMX중 프로세스입니다. 프로세스는 다음으로 구성됩니다.

  • 인덱싱 단계: 지식베이스 창출을 위한 기반을 마련하는 준비단계이다.
라마지수 인덱스

LlamaIndex 인덱싱

  • 쿼리 단계: 여기에서는 LLM이 쿼리에 응답하는 데 도움이 되도록 관련 컨텍스트를 찾기 위해 지식 기반을 검색합니다.
LlamaIndex 쿼리 단계

LlamaIndex 쿼리 단계

LlamaIndex를 사용한 인덱싱 여정:

  • 데이터 커넥터: 데이터 커넥터를 LlamaIndex에 대한 데이터 여권으로 생각하십시오. 다양한 소스와 형식에서 데이터를 가져와서 이를 단순한 '문서' 표현으로 캡슐화하는 데 도움이 됩니다. 데이터 커넥터는 데이터 로더로 가득 찬 오픈 소스 저장소인 LlamaHub 내에서 찾을 수 있습니다. 이러한 로더는 쉽게 통합할 수 있도록 제작되어 모든 LlamaIndex 애플리케이션과의 플러그 앤 플레이 환경을 지원합니다.
라마 허브

LlamaIndex 허브(https://llamahub.ai/)

  • 문서/노드: 문서는 PDF, API 출력, 데이터베이스 항목 등 다양한 데이터 유형을 담을 수 있는 일반적인 가방과 같습니다. 반면에 노드는 문서의 조각 또는 "청크"로서 메타데이터 및 다른 노드와의 관계가 풍부하여 나중에 정확한 데이터 검색을 위한 강력한 기반을 보장합니다.
  • 데이터 인덱스: 데이터 수집 후 LlamaIndex는 이 데이터를 검색 가능한 형식으로 인덱싱하는 데 도움을 줍니다. 뒤에서는 원시 문서를 중간 표현으로 분석하고, 벡터 임베딩을 계산하고, 메타데이터를 추론합니다. 인덱스 중에는 'VectorStoreIndex'가 선택되는 경우가 많습니다.

LlamaIndex의 인덱스 유형: 데이터 정리의 핵심

LlamaIndex는 각기 다른 요구 사항과 사용 사례에 맞는 다양한 유형의 인덱스를 제공합니다. 이러한 지수의 핵심에는 위에서 설명한 "노드"가 있습니다. LlamaIndex 지수의 메커니즘과 응용 프로그램을 이해해 보겠습니다.

1. 리스트 인덱스:

  • 기구: 목록 인덱스는 목록처럼 노드를 순차적으로 정렬합니다. 입력 데이터를 노드로 청크한 후 선형 방식으로 정렬되어 순차적으로 또는 키워드나 임베딩을 통해 쿼리할 준비가 됩니다.
  • 이점: 이 인덱스 유형은 순차적 쿼리가 필요할 때 유용합니다. LlamaIndex는 LLM의 토큰 제한을 초과하더라도 각 노드에서 텍스트를 스마트하게 쿼리하고 목록을 탐색하면서 답변을 구체화하여 전체 입력 데이터의 활용을 보장합니다.

2. 벡터 저장소 인덱스:

  • 기구: 여기서 노드는 로컬 또는 다음과 같은 특수 벡터 데이터베이스에 저장된 벡터 임베딩으로 변환됩니다. 밀버스. 쿼리를 받으면 가장 유사한 top_k 노드를 가져와 응답 합성기로 전달합니다.
  • 이점: 작업 흐름이 벡터 검색을 통한 의미 유사성에 대한 텍스트 비교에 의존하는 경우 이 인덱스를 사용할 수 있습니다.

3. 트리 인덱스:

  • 기구: 트리 인덱스에서 입력 데이터는 리프 노드(원본 데이터 청크)에서 상향식으로 구축된 트리 구조로 발전합니다. 상위 노드는 GPT를 사용하여 제작된 리프 노드의 요약으로 나타납니다. 쿼리 중에 트리 인덱스는 루트 노드에서 리프 노드로 이동하거나 선택한 리프 노드에서 직접 응답을 구성할 수 있습니다.
  • 이점: 트리 인덱스를 사용하면 긴 텍스트 청크를 쿼리하는 것이 더 효율적이고 다양한 텍스트 세그먼트에서 정보를 추출하는 것이 단순화됩니다.

4. 키워드 색인:

  • 기구: 키워드와 노드의 매핑이 키워드 인덱스의 핵심을 형성합니다. 쿼리를 수행하면 쿼리에서 키워드가 추출되고 매핑된 노드만 스포트라이트를 받게 됩니다.
  • 이점: 명확한 사용자 쿼리가 있는 경우 키워드 색인을 사용할 수 있습니다. 예를 들어, 코로나19와 관련된 문서에만 초점을 맞추면 의료 문서를 선별하는 것이 더 효율적이 됩니다.

LlamaIndex 설치

LlamaIndex 설치는 간단한 과정입니다. Pip에서 직접 설치하거나 소스에서 설치하도록 선택할 수 있습니다. (시스템에 Python이 설치되어 있는지 확인하거나 Google Colab을 사용할 수 있습니다)

1. Pip에서 설치:

  • 다음 명령을 실행하십시오.
    pip install llama-index
  • 주의 사항: 설치 중에 LlamaIndex는 NLTK 및 HuggingFace와 같은 특정 패키지에 대한 로컬 파일을 다운로드하고 저장할 수 있습니다. 이러한 파일의 디렉터리를 지정하려면 "LLAMA_INDEX_CACHE_DIR" 환경 변수를 사용하세요.

2. 소스에서 설치:

  • 먼저 GitHub에서 LlamaIndex 저장소를 복제합니다.
    git clone https://github.com/jerryjliu/llama_index.git
  • 복제되면 프로젝트 디렉터리로 이동합니다.
  • 패키지 종속성을 관리하려면 Poetry가 필요합니다.
  • 이제 Poetry를 사용하여 가상 환경을 만듭니다.
    poetry shell
  • 마지막으로 다음을 사용하여 핵심 패키지 요구 사항을 설치합니다.
    poetry install

LlamaIndex에 대한 환경 설정

1. OpenAI 설정:

  • 기본적으로 LlamaIndex는 OpenAI를 활용합니다. gpt-3.5-turbo 텍스트 생성 및 text-embedding-ada-002 검색 및 임베딩을 위해.
  • 이 설정을 사용하려면 OPENAI_API_KEY. OpenAI 웹사이트에 등록하고 새로운 API 토큰을 생성하여 토큰을 받으세요.
  • 프로젝트 요구 사항에 따라 기본 LLM(대형 언어 모델)을 유연하게 사용자 지정할 수 있습니다. LLM 제공업체에 따라 추가 환경 키와 토큰이 필요할 수 있습니다.

2. 로컬 환경 설정:

  • OpenAI를 사용하지 않으려면 LlamaIndex가 자동으로 로컬 모델로 전환됩니다. LlamaCPPllama2-chat-13B 텍스트 생성을 위한 BAAI/bge-small-en 검색 및 임베딩을 위해.
  • 사용 LlamaCPP, 제공된 설치 가이드를 따르십시오. 반드시 설치하세요. llama-cpp-python GPU를 지원하도록 이상적으로 컴파일된 패키지입니다. 이 설정은 CPU와 GPU 전체에서 약 11.5GB의 메모리를 활용합니다.
  • 로컬 임베딩의 경우 다음을 실행합니다. pip install sentence-transformers. 이 로컬 설정은 약 500MB의 메모리를 사용합니다.

이러한 설정을 사용하면 OpenAI의 기능을 활용하거나 로컬에서 모델을 실행하여 프로젝트 요구 사항 및 리소스에 맞게 환경을 맞춤화할 수 있습니다.

간단한 사용 사례: LlamaIndex 및 OpenAI를 사용하여 웹페이지 쿼리

다음은 특정 통찰력을 얻기 위해 웹페이지를 쿼리하는 방법을 보여주는 간단한 Python 스크립트입니다.

!pip install llama-index html2text
import os
from llama_index import VectorStoreIndex, SimpleWebPageReader
# Enter your OpenAI key below:
os.environ["OPENAI_API_KEY"] = ""
# URL you want to load into your vector store here:
url = "http://www.paulgraham.com/fr.html"
# Load the URL into documents (multiple documents possible)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])
# Create vector store from documents
index = VectorStoreIndex.from_documents(documents)
# Create query engine so we can ask it questions:
query_engine = index.as_query_engine()
# Ask as many questions as you want against the loaded data:
response = query_engine.query("What are the 3 best advise by Paul to raise money?")
print(response)
The three best pieces of advice by Paul to raise money are:
1. Start with a low number when initially raising money. This allows for flexibility and increases the chances of raising more funds in the long run.
2. Aim to be profitable if possible. Having a plan to reach profitability without relying on additional funding makes the startup more attractive to investors.
3. Don't optimize for valuation. While valuation is important, it is not the most crucial factor in fundraising. Focus on getting the necessary funds and finding good investors instead.
Google Colab 라마 색인 노트

Google Colab 라마 색인 노트

이 스크립트를 사용하면 간단히 질문하여 웹페이지에서 특정 정보를 추출할 수 있는 강력한 도구를 만들 수 있습니다. 이는 웹 데이터를 쿼리할 때 LlamaIndex 및 OpenAI를 사용하여 달성할 수 있는 작업을 간략하게 보여줍니다.

LlamaIndex 대 Langchain: 목표에 따른 선택

LlamaIndex와 랭체인 프로젝트의 목표에 따라 달라집니다. 지능형 검색 도구를 개발하려는 경우 데이터 검색을 위한 스마트 저장 메커니즘으로 뛰어난 LlamaIndex가 확실한 선택입니다. 반면에 플러그인 기능을 갖춘 ChatGPT와 같은 시스템을 만들고 싶다면 Langchain이 적합합니다. ChatGPT 및 LlamaIndex의 여러 인스턴스를 용이하게 할 뿐만 아니라 다중 작업 에이전트 구성을 허용하여 기능을 확장합니다. 예를 들어 Langchain을 사용하면 Google 검색을 동시에 수행하면서 Python 코드를 실행할 수 있는 에이전트를 만들 수 있습니다. 간단히 말해서 LlamaIndex는 데이터 처리에 탁월한 반면 Langchain은 여러 도구를 조정하여 전체적인 솔루션을 제공합니다.

Midjourney를 사용하여 만든 LlamaIndex 로고 아트워크

다음을 사용하여 만든 LlamaIndex 로고 아트워크 중도

저는 지난 50년 동안 기계 학습과 딥 러닝의 매혹적인 세계에 몰두했습니다. 저의 열정과 전문 ​​지식은 특히 AI/ML에 중점을 둔 XNUMX개 이상의 다양한 소프트웨어 엔지니어링 프로젝트에 기여하도록 이끌었습니다. 나의 계속되는 호기심은 또한 내가 더 탐구하고 싶은 분야인 자연어 처리로 나를 이끌었습니다.