LlamaIndex는 컨텍스트가 증강된 대규모 언어 모델(LLM) 애플리케이션을 개발하기 위한 데이터 프레임워크입니다. 컨텍스트 증강은 데이터에 LLM을 적용할 때 발생합니다. 이는 검색 증강 생성(RAG)을 구현합니다.
LLM의 일반적인 문제는 비공개 지식, 즉 조직의 데이터를 이해하지 못한다는 것입니다. RAG용 Vertex AI 기반 LlamaIndex를 사용하면 추가 개인 정보로 LLM 컨텍스트를 강화할 수 있습니다. 모델이 할루시네이션을 줄이고 질문에 더 정확하게 답변할 수 있기 때문입니다.
추가 지식 소스를 LLM이 보유한 기존 지식과 결합하여 더 나은 컨텍스트가 제공됩니다. 쿼리와 함께 개선된 컨텍스트는 LLM의 응답 품질을 향상시킵니다.
Vertex AI에서 LlamaIndex를 이해하는 데 중요한 개념은 다음과 같습니다. 이러한 개념은 검색 증강 생성(RAG) 프로세스 순서로 나열되어 있습니다.
데이터 수집: 다양한 데이터 소스에서 데이터를 수집합니다. 예를 들면 로컬 파일, Cloud Storage, Google Drive가 있습니다.
데이터 변환: 인덱싱을 준비하는 동안 데이터를 변환합니다. 예를 들어 데이터가 청크로 분할됩니다.
임베딩: 단어나 텍스트 조각을 숫자로 표현한 것입니다. 이 숫자는 텍스트의 의미론적 의미와 맥락을 캡처합니다. 유사하거나 관련된 단어 또는 텍스트는 임베딩이 비슷한 경향이 있습니다. 즉, 고차원 벡터 공간에서 더 가깝게 위치합니다.
데이터 색인 생성: RAG용 Vertex AI의 LlamaIndex는 코퍼스라는 색인을 만듭니다. 색인은 기술 자료를 구조화하므로 검색에 최적화되어 있습니다. 예를 들어, 색인은 방대한 참조 서적의 상세한 목차와 같습니다.
검색: 사용자가 질문하거나 프롬프트를 제공하면 RAG용 Vertex AI 기반 LlamaIndex에서 검색 구성요소는 기술 자료를 통해 쿼리와 관련된 정보를 찾습니다.
생성: 검색된 정보는 생성 AI 모델이 사실에 근거하고 관련성 있는 응답을 생성하기 위한 가이드로 원래 사용자 쿼리에 추가된 컨텍스트가 됩니다.
이 페이지에서는 RAG용 Vertex AI 기반 LlamaIndex 사용을 시작하고 RAG API 사용 방법을 보여주는 Python 샘플을 제공합니다.
파일 크기 제한에 대한 자세한 내용은 지원되는 문서 유형을 참조하세요. RAG용 Vertex AI 기반 LlamaIndex 관련 할당량에 대한 자세한 내용은 RAG 할당량을 위한 Vertex AI 기반 LlamaIndex를 참조하세요. 파라미터 맞춤설정에 대한 자세한 내용은 검색 파라미터를 참조하세요.
Vertex AI SDK를 사용하여 RAG용 Vertex AI 기반 LlamaIndex 실행
RAG용 Vertex AI 기반 LlamaIndex를 사용하려면 다음을 수행합니다.
Google Cloud 콘솔에서 이 명령어를 실행하여 프로젝트를 설정합니다.
gcloud config set {project}
이 명령어를 실행하여 로그인을 승인합니다.
gcloud auth application-default login
Vertex AI 기반 LlamaIndex를 실행하려면 이 샘플 코드를 Google Cloud 콘솔에 복사하여 붙여넣으세요.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
지원되는 모델
특정 Gemini 모델과 Google 관리 Llama 3.1 모델은 Vertex AI에서 LlamaIndex를 지원합니다.
지원되는 Gemini 모델
다음 표에서는 Vertex AI에서 LlamaIndex를 지원하는 Gemini 모델과 해당 버전을 보여줍니다.
모델 | 버전 |
---|---|
Gemini 1.5 Flash | gemini-1.5-flash-001 |
Gemini 1.5 Pro | gemini-1.5-pro-001 |
Gemini 1.0 Pro | gemini-1.0-pro-001 gemini-1.0-pro-002 |
Gemini 1.0 Pro Vision | gemini-1.0-pro-vision-001 |
Gemini | gemini-experimental |
지원되는 Llama 3.1 모델
또한 Google 운영 Llama 3.1 서비스형 모델(MaaS) 엔드포인트는 Vertex AI에서 LlamaIndex를 지원합니다.
다음 코드 샘플은 Gemini API를 사용해서 개방형 모델 인스턴스를 만드는 방법을 보여줍니다.
# Create a model instance with Llama 3.1 MaaS endpoint
rag_model = GenerativeModel(
"projects/{PROJECT_ID}/locations/us-central1/publisher/meta/models/llama3-405B-instruct-maas",
tools=[rag_retrieval_tool]
)
지원되는 임베딩 모델
코퍼스 만들기와 검색에는 다음 임베딩 모델이 지원됩니다.
textembedding-gecko@003
textembedding-gecko-multilingual@001
text-embedding-004
text-multilingual-embedding-002
다음 모델 버전은 미세 조정된 Google 모델에서 지원됩니다.
textembedding-gecko@003
textembedding-gecko-multilingual@001
text-embedding-004
text-multilingual-embedding-002
textembedding-gecko@002
textembedding-gecko@001
구성이 지정되지 않은 경우 기본 동작은 RagCorpus
의 임베딩 선택에 text-embedding-004
를 사용하는 것입니다. 임베딩 모델 조정에 대한 자세한 내용은 텍스트 임베딩 조정을 참조하세요.
지원되는 문서 유형
파일 크기 한도가 있는 다음 파일 형식의 텍스트 전용 문서가 지원됩니다.
파일 형식 | 파일 크기 한도 |
---|---|
Google 문서 | Google Workspace에서 내보내는 경우 10MB |
Google 그림 | Google Workspace에서 내보내는 경우 10MB |
Google 슬라이드 | Google Workspace에서 내보내는 경우 10MB |
HTML 파일 | 10MB |
JSON 파일 | 1MB |
마크다운 파일 | 10MB |
Microsoft PowerPoint 슬라이드(PPTX 파일) | 10MB |
Microsoft Word 문서(DOCX 파일) | 10MB |
PDF 파일 | 50MB |
텍스트 파일 | 10MB |
다른 문서 유형과 함께 RAG용 Vertex AI 기반 LlamaIndex를 사용할 수 있지만 응답 품질이 더 낮을 수 있습니다.
지원되는 데이터 소스
지원되는 세 가지 데이터 소스는 다음과 같습니다.
동기 호출인
upload_file
(최대 25MB)을 사용한 단일 파일 업로드입니다.Cloud Storage에서 파일을 가져옵니다.
Google Drive에서 디렉터리를 가져옵니다.
서비스 계정에 파일을 가져올 수 있는 올바른 권한을 부여해야 합니다. 그렇지 않으면 파일을 가져오지 않고 오류 메시지가 표시되지 않습니다. 파일 크기 제한에 대한 자세한 내용은 지원되는 문서 유형을 참조하세요.
인증하고 권한을 부여하려면 다음을 수행합니다.
- Google Cloud 프로젝트의 IAM 페이지로 이동합니다.
- Google 제공 역할 부여 포함을 선택합니다.
- Vertex AI RAG 데이터 서비스 에이전트 서비스 계정을 검색합니다.
- 드라이브 폴더에서 공유를 클릭하고 서비스 계정과 공유합니다.
- Google Drive 폴더 또는 파일의 서비스 계정에
Viewer
권한을 부여합니다. Google Drive 리소스 ID는 웹 URL에서 확인할 수 있습니다.
자세한 내용은 RAG API 참조를 확인하세요.
지원되는 데이터 변환
문서가 수집된 후 RAG용 Vertex AI 기반 LlamaIndex는 최상의 품질을 위해 일련의 변환을 실행하며 개발자가 사용 사례에 맞게 제어할 수 있는 파라미터가 있습니다.
이러한 파라미터에는 다음이 포함됩니다.
매개변수 | 설명 |
---|---|
chunk_size |
문서가 색인에 수집되면 청크로 분할됩니다. 토큰의 chunk_size 파라미터는 청크의 크기를 지정합니다. 기본 청크 크기는 토큰 1,024개입니다. |
chunk_overlap |
기본적으로, 문서는 관련성과 검색 품질을 개선하기 위해 일정한 수준의 중복이 있는 청크로 분할됩니다. 기본 청크 중복은 토큰 200개입니다. |
청크 크기가 작을수록 임베딩이 더 정확하다는 의미입니다. 청크 크기가 클수록 임베딩이 더 일반적이지만 특정 세부정보가 놓칠 수 있습니다.
예를 들어 1,000단어가 아닌 200단어를 동일한 차원의 임베딩 배열로 변환하면 세부정보가 손실될 수 있습니다. 또한 모델 컨텍스트 길이 제한을 고려할 때의 좋은 예시입니다. 큰 청크는 작은 창 모델에 적합하지 않습니다.
검색 파라미터
다음 표에는 검색 파라미터가 포함되어 있습니다.
매개변수 | 설명 |
---|---|
similarity_top_k |
검색되는 최대 컨텍스트 수를 제어합니다. |
vector_distance_threshold |
거리가 기준점보다 작은 컨텍스트만 고려됩니다. |
색인 관리
코퍼스는 문서 컬렉션 또는 정보 소스입니다. 이 컬렉션을 색인이라고도 합니다. 그런 다음 색인을 쿼리하여 LLM 생성을 위한 관련 컨텍스트를 검색할 수 있습니다. 색인을 처음 만들 때는 프로세스에 추가 시간이 1분 정도 걸릴 수 있습니다. 동일한 Google Cloud 프로젝트 내에서 색인을 더 많이 만들려면 프로세스 시간이 단축됩니다.
지원되는 색인 작업은 다음과 같습니다.
- 코퍼스 만들기: 색인을 만들어 문서를 가져오거나 업로드합니다.
- 코퍼스 삭제: 색인을 삭제합니다.
- 코퍼스 세부정보 가져오기: 색인을 설명하는 메타데이터를 가져옵니다.
- 특정 프로젝트의 코퍼스 나열: 특정 프로젝트의 여러 색인을 나열합니다.
코퍼스에 대한 동시 작업은 지원되지 않습니다. 자세한 내용은 RAG API 참조를 확인하세요.
파일 관리
지원되는 파일 작업은 다음과 같습니다.
- 로컬 스토리지의 파일을 코퍼스로 업로드: 보다 정확한 응답을 생성하려면 LLM에 컨텍스트를 제공하는 추가 정보가 포함된 파일을 업로드합니다.
- 다른 스토리지의 파일을 코퍼스로 수집: 스토리지 위치에서 파일 집합을 가져옵니다.
- 파일의 세부정보 가져오기: 색인 또는 색인의 지정된 파일에서 특정 쿼리에 대한 관련 컨텍스트를 검색합니다.
- 코퍼스의 파일 나열: 색인의 파일 목록을 생성합니다.
- 코퍼스에서 파일 삭제: 색인에서 파일을 삭제합니다.
자세한 내용은 RAG API 참조를 확인하세요.
다음 단계
- Vertex AI의 생성형 AI에 대해 자세히 알아보세요.
- 그라운딩 및 RAG용 Vertex AI 기반 LlamaIndex와의 관계를 알아보세요.
- 검색 증강 생성 API에 관해 자세히 알아보세요.
- RAG 아키텍처에 관해 자세히 알아봅니다. Vertex AI를 사용하는 RAG 지원 생성형 AI 애플리케이션을 위한 인프라를 참조하세요.