RAG용 Vertex AI 기반 LlamaIndex 개요

RAG용 Vertex AI 기반 LlamaIndex는 컨텍스트가 증강된 대규모 언어 모델(LLM) 애플리케이션을 개발하기 위한 데이터 프레임워크입니다. 컨텍스트 증강은 데이터에 LLM을 적용할 때 발생합니다. 이는 검색 증강 생성(RAG)을 구현합니다.

LLM의 일반적인 문제는 비공개 지식, 즉 조직의 데이터를 이해하지 못한다는 것입니다. RAG용 Vertex AI 기반 LlamaIndex를 사용하면 추가 개인 정보로 LLM 컨텍스트를 강화할 수 있습니다. 모델이 할루시네이션을 줄이고 질문에 더 정확하게 답변할 수 있기 때문입니다.

추가 지식 소스를 LLM이 보유한 기존 지식과 결합하여 더 나은 컨텍스트가 제공됩니다. 쿼리와 함께 개선된 컨텍스트는 LLM의 응답 품질을 향상시킵니다.

RAG용 Vertex AI에서 LlamaIndex를 이해하는 데 중요한 개념은 다음과 같습니다. 이러한 개념은 검색 증강 생성(RAG) 프로세스 순서로 나열되어 있습니다.

  1. 데이터 수집: 다양한 데이터 소스에서 데이터를 수집합니다. 예를 들면 로컬 파일, Cloud Storage, Google Drive가 있습니다.

  2. 데이터 변환: 인덱싱을 준비하는 동안 데이터를 변환합니다. 예를 들어 데이터가 청크로 분할됩니다.

  3. 임베딩: 단어나 텍스트 조각을 숫자로 표현한 것입니다. 이 숫자는 텍스트의 의미론적 의미와 맥락을 캡처합니다. 유사하거나 관련된 단어 또는 텍스트는 임베딩이 비슷한 경향이 있습니다. 즉, 고차원 벡터 공간에서 더 가깝게 위치합니다.

  4. 데이터 색인 생성: RAG용 Vertex AI 기반 LlamaIndex는 코퍼스라는 색인을 만듭니다. 색인은 기술 자료를 구조화하므로 검색에 최적화되어 있습니다. 예를 들어, 색인은 방대한 참조 서적의 상세한 목차와 같습니다.

  5. 검색: 사용자가 질문하거나 프롬프트를 제공하면 RAG용 Vertex AI 기반 LlamaIndex에서 검색 구성요소는 기술 자료를 통해 쿼리와 관련된 정보를 찾습니다.

  6. 생성: 검색된 정보는 생성 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에서 디렉터리를 가져옵니다.

    서비스 계정에 파일을 가져올 수 있는 올바른 권한을 부여해야 합니다. 그렇지 않으면 파일을 가져오지 않고 오류 메시지가 표시되지 않습니다. 파일 크기 제한에 대한 자세한 내용은 지원되는 문서 유형을 참조하세요.

    인증하고 권한을 부여하려면 다음을 수행합니다.

    1. Google Cloud 프로젝트의 IAM 페이지로 이동합니다.
    2. Google 제공 역할 부여 포함을 선택합니다.
    3. Vertex AI RAG 데이터 서비스 에이전트 서비스 계정을 검색합니다.
    4. 드라이브 폴더에서 공유를 클릭하고 서비스 계정과 공유합니다.
    5. 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 참조를 확인하세요.

파일 관리

지원되는 파일 작업은 다음과 같습니다.

자세한 내용은 RAG API 참조를 확인하세요.

다음 단계