AI/Llamaindex
LlamaIndex 완전 정복! 자주 쓰이는 함수와 예시 코드까지 한방에 정리
불타는고굼이
2025. 4. 9. 18:58
반응형
LlamaIndex 완전 정복! 자주 쓰이는 함수와 예시 코드까지 한방에 정리
요즘 LLM 애플리케이션을 개발하다 보면 RAG (Retrieval-Augmented Generation) 방식이 빠질 수 없죠. 그 중심에 있는 도구 중 하나가 바로 LlamaIndex입니다. 이 포스트에서는 LlamaIndex가 어떤 역할을 하는지부터, 자주 쓰이는 핵심 함수들과 그 사용법을 예제 코드와 함께 정리해봤어요.
LlamaIndex란 무엇인가?
LlamaIndex는 구조화된 문서 데이터를 기반으로 LLM 기반 응답을 생성할 수 있도록 돕는 문서-기반 질의 응답 시스템입니다. 기존의 LangChain이 다양한 LLM 도구를 연결하는 파이프라인 중심이라면, LlamaIndex는 특히 문서 검색과 임베딩 처리, Chunk 기반 검색에 최적화돼 있어요.
- Document Chunking: 문서를 작은 단위로 나누어 처리
- Vector Embedding: 문서를 벡터로 변환
- Retrieval: 관련 문서를 찾고
- LLM 호출로 답변 생성
즉, LlamaIndex는 RAG 파이프라인의 핵심 구성요소라고 볼 수 있죠.
기본 구성 요소 살펴보기
1. 문서 나누기 - Document Chunking
from llama_index import SimpleDirectoryReader
documents = SimpleDirectoryReader("data").load_data()
로컬 폴더에 있는 텍스트 문서들을 로드해서 LlamaIndex가 사용할 수 있게 해주는 기본 함수입니다.
2. 문서 임베딩 처리
from llama_index.embeddings import HuggingFaceEmbedding
embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en")
임베딩 모델을 HuggingFace에서 불러와서 사용할 수 있어요. 위 예시는 bge-small-en
모델을 사용한 경우입니다.
3. 인덱스 생성
from llama_index import VectorStoreIndex
index = VectorStoreIndex.from_documents(documents, embed_model=embed_model)
문서와 임베딩 모델을 이용해 벡터 인덱스를 만듭니다. 이 인덱스를 통해 검색이 가능해져요.
4. 질의 응답
query_engine = index.as_query_engine()
response = query_engine.query("2024년 한국 최저시급은 얼마야?")
print(response)
이제 사용자가 질문을 하면, 관련 문서를 찾아 답을 생성하는 단계입니다. 바로 이 부분이 RAG의 Retrieval + Generation에 해당돼요.
자주 쓰이는 파라미터 정리
- chunk_size: 문서를 나눌 단위 크기 (예: 128)
- embed_model: 사용할 임베딩 모델 지정
- llm_model: 답변 생성을 위한 LLM 이름 (예: mistral)
- prompt: 사용자 질문과 관련된 Prompt 설정
- mode: 검색 최적화 모드 (예: compact)
- top_k: 검색된 관련 문서 개수
query_engine = index.as_query_engine(
similarity_top_k=10,
streaming=True,
mode="compact"
)
예시: 완성된 RAG 파이프라인 코드
from llama_index import (
VectorStoreIndex,
SimpleDirectoryReader
)
from llama_index.embeddings import HuggingFaceEmbedding
# 문서 불러오기
documents = SimpleDirectoryReader("data").load_data()
# 임베딩 모델 설정
embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en")
# 인덱스 생성
index = VectorStoreIndex.from_documents(documents, embed_model=embed_model)
# 질의 처리
query_engine = index.as_query_engine(similarity_top_k=5)
response = query_engine.query("한국의 2024년 최저시급은?")
print(response)
이처럼 단 몇 줄의 코드만으로도 사용자 맞춤형 질의응답 시스템을 만들 수 있는 게 LlamaIndex의 큰 장점입니다.
728x90
반응형