LlamaIndex
LlamaIndex는 LLM용 비공개 데이터를 불러오고 색인화하며 검색하는 오픈 소스 프레임워크로, RAG 파이프라인과 문서 에이전트를 지원합니다.
LlamaIndex는 대형 언어 모델(LLM)을 비공개 데이터에 연결하는 오픈 소스 프레임워크입니다. 문서, 데이터베이스, API를 불러오고, 콘텐츠를 색인하며, 모델이 질문에 답하는 데 필요한 구절을 검색합니다. LlamaIndex로 구축하는 대부분의 애플리케이션은 회사 매뉴얼, 계약서, 티켓을 바탕으로 답변하는 어시스턴트나 문서를 읽고 조치를 취하는 AI 에이전트 등 검색 증강 생성(RAG)을 사용합니다. Jerry Liu는 2022년 11월에 GPT Index라는 이름으로 프로젝트를 공개했고, 2023년 2월에 LlamaIndex로 이름을 바꿨습니다. LlamaIndex 프레임워크는 Python 및 TypeScript에서 사용할 수 있으며, 이 회사는 복잡한 PDF, 표, 슬라이드를 색인에 적합한 텍스트로 변환하는 호스팅 서비스 LlamaParse도 운영합니다.
LlamaIndex 작동 방식#
LlamaIndex 애플리케이션은 두 단계로 구성됩니다. 수집 단계는 데이터가 업데이트될 때 한 번 실행됩니다. LlamaHub의 커넥터가 파일과 서비스를 Document 객체로 불러오고, 노드 파서는 각 객체를 노드라고 하는 청크로 나누며, 임베딩 모델은 각 노드를 벡터로 변환합니다. 이 벡터가 임베딩이며 인덱스에 저장됩니다. 질의 단계는 질문마다 실행됩니다. 검색기는 질문과 가장 가까운 노드를 찾고, 재순위화기와 같은 후처리기는 노드 순서를 바꾸거나 필터링하며, 응답 합성기는 남은 노드를 답변 지시와 함께 LLM의 컨텍스트 윈도에 배치합니다.
VectorStoreIndex은 기본 인덱스로, 임베딩을 메모리나 외부 벡터 데이터베이스에 저장합니다. 다른 인덱스는 모든 청크를 모델에 보내 요약을 생성하거나, GraphRAG 방식의 질의를 위해 개체와 관계로 지식 그래프를 구축하거나, 키워드를 일치시킵니다. 질의 엔진은 단일 질문에 답하고, 채팅 엔진은 대화를 이어 갑니다. LlamaIndex의 이벤트 기반 오케스트레이션 계층인 Workflows는 검색, 도구, 여러 에이전트를 연결해 무엇을 언제 검색할지 결정하는 에이전트형 RAG 시스템을 구성합니다.
포함된 내용으로 이미지 색인하기#
텍스트로 표현할 수 있는 모든 콘텐츠에 검색을 적용할 수 있습니다. Ultralytics YOLO26을 사진 컬렉션에 실행하면 각 이미지가 검색 가능한 설명으로 바뀝니다. Results.verbose()은 예측 모드 결과에서 클래스별 개수를 짧은 문자열로 반환하며, 이 문자열은 이미지 URL을 메타데이터에 보관하는 Document이 됩니다. 로컬 Hugging Face 임베딩 모델을 사용하면 API 키 없이 인덱스를 실행할 수 있습니다.
from llama_index.core import Document, Settings, VectorStoreIndex
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from ultralytics import YOLO
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
model = YOLO("yolo26n.pt")
# Describe each image by its detections; the URL stays in metadata and out of the embedding
docs = []
for url in ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]:
results = model(url)
text = f"A photo containing {results[0].verbose()}"
docs.append(Document(text=text, metadata={"image": url}, excluded_embed_metadata_keys=["image"]))
# Index the descriptions, then retrieve the image that best matches a question
index = VectorStoreIndex.from_documents(docs)
retriever = index.as_retriever(similarity_top_k=1)
nodes = retriever.retrieve("Which photo shows a bus?")
print(nodes[0].node.metadata["image"], round(nodes[0].score, 3))검색기는 파일 이름이 아니라 감지기의 설명을 통해 찾은 버스 이미지를 코사인 유사도 점수와 함께 반환합니다. 그 위에 응답 합성기를 추가하면 컬렉션에 관한 질문에 자연어로 답할 수 있습니다. 이는 컴퓨터 비전과 문서 검색을 결합하는 멀티모달 RAG 시스템의 기본 패턴입니다.
LlamaIndex와 관련 도구 비교#
- LangChain: 다양한 통합 기능을 갖춘 LLM 애플리케이션 및 에이전트용 범용 프레임워크입니다. 현재 두 프로젝트 모두 검색과 에이전트를 지원합니다. LlamaIndex는 수집, 파싱, 인덱스 유형에 더 중점을 두며, 팀은 LangChain 또는 LangGraph 에이전트 안에서 LlamaIndex 검색기를 자주 사용합니다.
- 벡터 데이터베이스: 벡터를 저장하고 벡터 검색을 실행합니다. LlamaIndex는 이들 데이터베이스 상위 계층에서 문서를 파싱하고 청킹하고 임베딩하고 검색해 모델에 전달하는 방식을 결정하며, 백엔드로 수십 가지 벡터 저장소를 지원합니다.
- 시맨틱 검색: 검색 단계 자체를 의미합니다. LlamaIndex는 생성 기능을 더해 출처 인용을 위해 원본 노드가 첨부된 답변을 제공합니다.










