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