5️⃣Naive RAG

Naive RAG with LlamaIndex, Weaviate

LlamaIndex와 Weaviate를 사용한 RAG 파이프라인에 대해 안내합니다.

Prerequisites

#%pip install -U weaviate-client
#%pip install llama-index-vector-stores-weaviate
import llama_index
import weaviate
from importlib.metadata import version
import os
from dotenv import load_dotenv  

!echo "OPENAI_API_KEY=<Your OpenAI Key" >> .env # OpenAI Key 한번만 설정
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
True

Embedding Model & LLM

먼저 글로벌 설정 개체에서 임베딩 모델과 LLM을 정의할 수 있습니다. 이렇게 하면 코드에서 모델을 다시 명시적으로 지정할 필요가 없습니다.

  • Embedding model: 쿼리뿐만 아니라 문서 청크에 대한 벡터 임베딩을 생성하는 데 사용됩니다.

  • LLM: 사용자 쿼리와 관련 컨텍스트를 기반으로 답변을 생성하는 데 사용됩니다.

Weaviate에서도 임베딩 모델(벡터화 모듈)과 LLM(생성 모듈)을 지정할 수 있지만 이 경우에는 Llamaindex에 정의된 LLM과 임베딩 모델이 사용됩니다.

Load data

Chunk documents to Nodes

전체 문서가 너무 커서 LLM의 컨텍스트 창에 맞지 않으므로 이를 작은 텍스트 덩어리로 분할해야 하며, 이를 LlamaIndex에서 nodes라고 합니다.

SimpleNodeParser를 사용하면 청크 크기를 1024로 정의할 수 있습니다.

Building Index

  • 모든 외부 지식을 Weaviate 벡터 데이터베이스에 저장하는 인덱스를 구축합니다.

  • 먼저 Weaviate 인스턴스에 연결해야 합니다. 여기서는 Weaviate Embedded를 사용합니다.

  • 임베디드 인스턴스는 부모 애플리케이션이 실행되는 한 계속 유지된다는 점에 유의하세요. 보다 영구적인 솔루션을 원한다면 관리형 Weaviate 클라우드 서비스(WCS) 인스턴스를 사용하는 것이 좋습니다. 여기에서 14일 동안 무료로 사용해 볼 수 있습니다여기arrow-up-right.*

다음으로, 데이터를 저장하고 상호 작용할 Weaviate 클라이언트에서 VectorStoreIndex를 빌드합니다.

Setup Query Engine

마지막으로 인덱스를 쿼리 엔진으로 설정합니다.

Query & Response

Now, you can run naive RAG queries on your data.

Last updated