LlamaCloudIndex + LlamaCloudRetriever
LlamaCloudIndex + LlamaCloudRetriever
관리형 파싱·수집·검색 서비스를 LlamaIndex 프레임워크 안에서 쓰고 싶다면, **LlamaCloudIndex**와 **LlamaCloudRetriever**가 그 다리가 돼요. LlamaCloud는 프로덕션급 컨텍스트 증강을 LLM·RAG 애플리케이션에 가져다주기 위해 설계된 차세대 관리형 파싱·수집·검색 서비스예요.
출처: 공식문서
현재 LlamaCloud가 지원하는 것:
- 관리형 수집 API — 파싱과 문서 관리를 처리
- 관리형 검색 API — RAG 시스템에 최적의 검색 구성
접근
관리형 수집·검색 API의 비공개 베타를 제한된 엔터프라이즈 파트너에게 열어두고 있어요. 데이터 파이프라인을 중앙화하고 실제 RAG 유스케이스에 더 시간을 쓰고 싶다면 문의하세요. LlamaCloud 접근 권한이 있으면 LlamaCloud에 로그인해 API 키를 받을 수 있어요.
설치
최신 LlamaIndex 버전을 설치해요.
pip uninstall llama-index # run this if upgrading from v0.9.x or older
pip install -U llama-index --upgrade --no-cache-dir --force-reinstall
llama-cloud-services 패키지는 위 설치에 포함되지만, 직접 설치할 수도 있어요.
pip install -U llama-cloud-services
사용법
LlamaCloud에 인덱스를 만드는 코드예요.
import os
os.environ[
"LLAMA_CLOUD_API_KEY"
] = "llx-..." # can provide API-key in env or in the constructor later on
from llama_index.core import SimpleDirectoryReader
from llama_cloud_services import LlamaCloudIndex
# create a new index
index = LlamaCloudIndex.from_documents(
documents,
"my_first_index",
project_name="default",
api_key="llx-...",
verbose=True,
)
# connect to an existing index
index = LlamaCloudIndex("my_first_index", project_name="default")
관리형 검색용 리트리버도 구성할 수 있어요.
# from the existing index
index.as_retriever()
# from scratch
from llama_cloud_services import LlamaCloudRetriever
retriever = LlamaCloudRetriever("my_first_index", project_name="default")
관리형 인덱스의 다른 지름길도 쓸 수 있어요.
query_engine = index.as_query_engine(llm=llm)
chat_engine = index.as_chat_engine(llm=llm)
리트리버 설정
리트리버 설정/kwargs 전체 목록이에요.
dense_similarity_top_k:Optional[int]— 0보다 크면 dense 검색으로k개 노드를 검색sparse_similarity_top_k:Optional[int]— 0보다 크면 sparse 검색으로k개 노드를 검색enable_reranking:Optional[bool]— 리랭킹 활성화 여부. 속도를 일부 희생하고 정확도를 얻음rerank_top_n:Optional[int]— 리랭킹 후 반환할 노드 수alpha:Optional[float]— dense와 sparse 검색 사이 가중치. 1 = 완전 dense, 0 = 완전 sparse
복합 검색 (Composite Retrieval)
여러 인덱스가 다양한 데이터를 수집하고 있으면, 모든 인덱스에 걸쳐 질의하는 애플리케이션을 만들고 싶을 거예요. 이때 **LlamaCloudCompositeRetriever**를 써요.
import os
from llama_cloud import CompositeRetrievalMode, RetrieverPipeline
from llama_cloud_services import (
LlamaCloudIndex,
LlamaCloudCompositeRetriever,
)
llama_cloud_api_key = os.environ["LLAMA_CLOUD_API_KEY"]
project_name = "Essays"
# Setup your indices
pg_documents = SimpleDirectoryReader("./examples/data/paul_graham").load_data()
pg_index = LlamaCloudIndex.from_documents(
documents=pg_documents,
name="PG Index",
project_name=project_name,
api_key=llama_cloud_api_key,
)
sama_documents = SimpleDirectoryReader(
"./examples/data/sam_altman"
).load_data()
sama_index = LlamaCloudIndex.from_documents(
documents=sama_documents,
name="Sam Index",
project_name=project_name,
api_key=llama_cloud_api_key,
)
retriever = LlamaCloudCompositeRetriever(
name="Essays Retriever",
project_name=project_name,
api_key=llama_cloud_api_key,
# If a Retriever named "Essays Retriever" doesn't already exist, one will be created
create_if_not_exists=True,
# CompositeRetrievalMode.FULL will query each index individually and globally rerank results at the end
mode=CompositeRetrievalMode.FULL,
rerank_top_n=5,
)
# Add the above indices to the composite retriever
# Carefully craft the description as this is used internally to route a query to an attached sub-index when CompositeRetrievalMode.ROUTING is used
retriever.add_index(pg_index, description="A collection of Paul Graham essays")
retriever.add_index(
sama_index, description="A collection of Sam Altman essays"
)
# Start retrieving context for your queries
# async .aretrieve() is also available
nodes = retriever.retrieve("What does YC do?")
복합 검색 관련 파라미터
mode:Optional[CompositeRetrievalMode]—CompositeRetrievalMode.FULL또는CompositeRetrievalMode.ROUTINGfull: 모든 첨부 하위 인덱스를 질의하고, 이 하위 인덱스들에서 받은 모든 노드에 걸쳐 리랭킹을 실행routing: 에이전트가 주어진 쿼리에 가장 관련 있는 하위 인덱스(제공한 하위 인덱스name·description기반)를 판단해, 관련 있다고 여겨지는 인덱스만 질의. 선택된 인덱스의 노드만 리랭킹 후 반환
rerank_top_n:Optional[int]— 모든 인덱스에서 검색된 노드에 걸쳐 리랭킹 후 반환할 노드 수
더 알아보기
- Index 시작 가이드 — LlamaCloud Index API 기초
- Click-to-Deploy — LlamaCloud UI에서 클릭 한 번으로 배포