이전 명칭은 Vertex AI의 LlamaIndex였으며 최근에는 Knowledge Engine으로 불렸던 RAG Engine은 컨텍스트가 증강된 대규모 언어 모델 (LLM) 애플리케이션을 개발하기 위한 데이터 프레임워크입니다. 컨텍스트 증강은 데이터에 LLM을 적용할 때 발생합니다. 이는 검색 증강 생성(RAG)을 구현합니다.
LLM의 일반적인 문제는 비공개 지식, 즉 조직의 데이터를 이해하지 못한다는 것입니다. RAG 엔진을 사용하면 추가 개인 정보로 LLM 컨텍스트를 강화할 수 있습니다. 모델이 할루시네이션을 줄이고 질문에 더 정확하게 답변할 수 있기 때문입니다.
추가 지식 소스를 LLM이 보유한 기존 지식과 결합하여 더 나은 컨텍스트가 제공됩니다. 쿼리와 함께 개선된 컨텍스트는 LLM의 응답 품질을 향상시킵니다.
다음 개념은 RAG 엔진을 이해하는 데 중요합니다. 이러한 개념은 검색 증강 생성(RAG) 프로세스 순서로 나열되어 있습니다.
데이터 수집: 다양한 데이터 소스에서 데이터를 수집합니다. 예를 들면 로컬 파일, Cloud Storage, Google Drive가 있습니다.
데이터 변환: 인덱싱을 준비하는 동안 데이터를 변환합니다. 예를 들어 데이터가 청크로 분할됩니다.
임베딩: 단어나 텍스트 조각을 숫자로 표현한 것입니다. 이 숫자는 텍스트의 의미론적 의미와 맥락을 캡처합니다. 유사하거나 관련된 단어 또는 텍스트는 임베딩이 비슷한 경향이 있습니다. 즉, 고차원 벡터 공간에서 더 가깝게 위치합니다.
데이터 색인 생성: RAG 엔진은 코퍼스라는 색인을 만듭니다. 색인은 기술 자료를 구조화하므로 검색에 최적화되어 있습니다. 예를 들어, 색인은 방대한 참조 서적의 상세한 목차와 같습니다.
검색: 사용자가 질문하거나 프롬프트를 제공하면 RAG 엔진의 검색 구성요소는 기술 자료를 통해 쿼리와 관련된 정보를 찾습니다.
생성: 검색된 정보는 생성 AI 모델이 사실에 근거하고 관련성 있는 응답을 생성하기 위한 가이드로 원래 사용자 쿼리에 추가된 컨텍스트가 됩니다.
RAG를 지원하는 생성형 AI 모델
이 섹션에는 RAG를 지원하는 모델이 나와 있습니다.
Gemini 모델
다음 표에는 RAG Engine을 지원하는 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 |
자체 배포 모델
RAG 엔진은 Model Garden의 모든 모델을 지원합니다.
자체 배포한 개방형 모델 엔드포인트에서 RAG 엔진을 사용합니다.
# 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]
)
Vertex AI에서 관리 API를 사용하는 모델
Vertex AI에서 RAG 엔진을 지원하는 관리형 API가 있는 모델은 다음과 같습니다.
다음 코드 샘플은 Gemini GenerateContent
API를 사용하여 생성형 모델 인스턴스를 만드는 방법을 보여줍니다. 모델 ID /publisher/meta/models/llama-3.1-405B-instruct-maas
는 모델 카드에서 확인할 수 있습니다.
# Create a model instance with Llama 3.1 MaaS endpoint
rag_model = GenerativeModel(
"projects/PROJECT_ID/locations/REGION/publisher/meta/models/llama-3.1-405B-instruct-maas",
tools=[rag_retrieval_tool]
)
다음 코드 샘플은 OpenAI 호환 ChatCompletions
API를 사용하여 모델 응답을 생성하는 방법을 보여줍니다.
# Generate a response with Llama 3.1 MaaS endpoint
response = client.chat.completions.create(
model="meta/llama-3.1-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
RAG에서 지원되는 문서 유형
텍스트 문서만 지원됩니다. 다음 표에는 파일 형식과 파일 크기 제한이 나와 있습니다.
파일 형식 | 파일 크기 한도 |
---|---|
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 Engine을 사용할 수 있지만 응답 품질이 더 낮을 수 있습니다.
RAG에 지원되는 데이터 소스
다음 데이터 소스가 지원됩니다.
- 로컬 파일 업로드: 동기 호출인
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 변환 미세 조정
문서가 수집된 후 RAG 엔진은 일련의 변환을 실행하여 색인을 생성할 데이터를 준비합니다. 다음 매개변수를 사용하여 사용 사례를 제어할 수 있습니다.
매개변수 | 설명 |
---|---|
chunk_size |
문서가 색인에 수집되면 청크로 분할됩니다. 토큰의 chunk_size 파라미터는 청크의 크기를 지정합니다. 기본 청크 크기는 토큰 1,024개입니다. |
chunk_overlap |
기본적으로, 문서는 관련성과 검색 품질을 개선하기 위해 일정한 수준의 중복이 있는 청크로 분할됩니다. 기본 청크 중복은 토큰 200개입니다. |
청크 크기가 작을수록 임베딩이 더 정확하다는 의미입니다. 청크 크기가 클수록 임베딩이 더 일반적이지만 특정 세부정보가 놓칠 수 있습니다.
예를 들어 1,000단어가 아닌 200단어를 동일한 차원의 임베딩 배열로 변환하면 세부정보가 손실될 수 있습니다. 또한 모델 컨텍스트 길이 제한을 고려할 때의 좋은 예시입니다. 큰 텍스트 청크는 작은 창 모델에 적합하지 않을 수 있습니다.
RAG 할당량
RAG 엔진을 사용하여 검색 증강 생성 (RAG)을 실행하는 각 서비스에는 다음 할당량이 적용되며, 할당량은 분당 요청 수 (RPM)로 측정됩니다.서비스 | 할당량 | 측정항목 |
---|---|---|
RAG 엔진 데이터 관리 API | 60 RPM | VertexRagDataService requests per minute per region |
RetrievalContexts API |
1,500 RPM | VertexRagService retrieve requests per minute per region |
base_model: textembedding-gecko |
1,500 RPM | Online prediction requests per base model per minute per region per base_model 지정할 수 있는 추가 필터는 base_model: textembedding-gecko 입니다. |
서비스 | 한도 | 측정항목 |
---|---|---|
동시 ImportRagFiles 요청 |
3 RPM | VertexRagService concurrent import requests per region |
ImportRagFiles 요청당 최대 파일 수 |
10,000 | VertexRagService import rag files requests per region |
비율 제한 및 할당량에 관한 자세한 내용은 Vertex AI의 생성형 AI 비율 제한을 참고하세요.
검색 파라미터
다음 표에는 검색 파라미터가 포함되어 있습니다.
매개변수 | 설명 |
---|---|
similarity_top_k |
검색되는 최대 컨텍스트 수를 제어합니다. |
vector_distance_threshold |
거리가 기준점보다 작은 컨텍스트만 고려됩니다. |
RAG 기술 자료 (코퍼스) 관리하기
이 섹션에서는 색인 관리 및 파일 관리를 실행하여 RAG 태스크의 코퍼스를 관리하는 방법을 설명합니다.
코퍼스 관리
코퍼스(색인이라고도 함)는 문서 모음 또는 정보 소스입니다. 답변 생성을 위한 관련 컨텍스트를 검색하기 위해 자료에 쿼리할 수 있습니다. 코퍼스를 처음 만들 때는 프로세스에 추가 시간이 1분 정도 걸릴 수 있습니다.
다음과 같은 자료 작업이 지원됩니다.
작업 | 설명 | 매개변수 | 예시 |
---|---|---|---|
RAG 코퍼스를 만듭니다. | 색인을 만들어 문서를 가져오거나 업로드합니다. | 매개변수 만들기 | 예시 만들기 |
RAG 코퍼스를 업데이트합니다. | 이전에 만든 색인을 업데이트하여 문서를 가져오거나 업로드합니다. | 매개변수 업데이트 | 업데이트 예 |
RAG 코퍼스를 나열합니다. | 모든 색인을 나열합니다. | 매개변수 목록 | 목록 예 |
RAG 코퍼스를 가져옵니다. | 색인을 설명하는 메타데이터를 가져옵니다. | 매개변수 가져오기 | 예시 가져오기 |
RAG 코퍼스를 삭제합니다. | 색인을 삭제합니다. | 매개변수 삭제 | 삭제 예 |
코퍼스에 대한 동시 작업은 지원되지 않습니다. 자세한 내용은 RAG API 참조를 확인하세요.
파일 관리
지원되는 파일 작업은 다음과 같습니다.
작업 | 설명 | 매개변수 | 예시 |
---|---|---|---|
RAG 파일을 업로드합니다. | 보다 정확한 응답을 생성하기 위해 LLM에 컨텍스트를 제공하는 추가 정보와 함께 로컬 저장소의 파일을 업로드합니다. | 업로드 매개변수 | 업로드 예시 |
RAG 파일을 가져옵니다. | 다른 저장소에서 스토리지 위치로 파일 집합을 가져옵니다. | 매개변수 가져오기 | 가져오기 예 |
RAG 파일을 가져옵니다. | LLM에서 사용할 RAG 파일에 관한 세부정보를 가져옵니다. | 매개변수 가져오기 | 예시 가져오기 |
RAG 파일을 삭제합니다. | 보다 정확한 응답을 생성하기 위해 LLM에 컨텍스트를 제공하는 추가 정보와 함께 로컬 저장소의 파일을 업로드합니다. | 매개변수 삭제 | 삭제 예 |
자세한 내용은 RAG API 참조를 확인하세요.
다음 단계
- 파일 크기 제한에 대한 자세한 내용은 지원되는 문서 유형을 참고하세요.
- RAG 엔진과 관련된 할당량에 대한 자세한 내용은 RAG 엔진 할당량을 참고하세요.
- 파라미터 맞춤설정에 대한 자세한 내용은 검색 파라미터를 참고하세요.
- RAG API에 대한 자세한 내용은 RAG 엔진 API를 참고하세요.
- 그라운딩에 대한 자세한 내용은 그라운딩 개요를 참조하세요.
- 그라운딩과 RAG의 차이에 대해 자세히 알아보려면 RAG를 사용하여 응답 그라운딩을 참고하세요.
- Vertex AI의 생성형 AI에 대해 자세히 알아보려면 Vertex AI의 생성형 AI 개요를 참고하세요.
- RAG 아키텍처에 대해 자세히 알아보려면 Vertex AI를 사용하는 RAG 지원 생성형 AI 애플리케이션을 위한 인프라를 참고하세요.