이 페이지에서는 RAG 엔진을 Vertex AI 벡터 검색에 연결하는 방법을 보여줍니다.
이 노트북 Vertex AI 벡터 검색을 사용한 RAG 엔진을 사용하여 따라할 수도 있습니다.
RAG 엔진은 Spanner를 기반으로 하는 내장 벡터 데이터베이스를 사용하여 텍스트 문서의 벡터 표현을 저장하고 관리하는 강력한 도구입니다. 벡터 데이터베이스를 사용하면 문서의 특정 쿼리와의 시맨틱 유사성을 기반으로 관련 문서를 효율적으로 검색할 수 있습니다. Vertex AI 벡터 검색을 RAG 엔진에 추가 벡터 데이터베이스로 통합하면 벡터 검색 기능을 사용하여 지연 시간이 짧은 데이터 양을 처리하여 RAG 애플리케이션의 성능과 확장성을 개선할 수 있습니다.
Vertex AI 벡터 검색 설정
Vertex AI 벡터 검색은 Google 연구팀에서 개발한 벡터 검색 기술을 기반으로 합니다. 벡터 검색을 사용하면 Google 검색, YouTube, Google Play와 같은 Google 제품의 기반을 제공하는 동일한 인프라를 사용할 수 있습니다.
RAG 엔진과 통합하려면 빈 벡터 검색 색인이 필요합니다.
Vertex AI SDK 설정
Vertex AI SDK를 설정하려면 설정을 참고하세요.
벡터 검색 색인 만들기
RAG 자료와 호환되는 벡터 검색 색인을 만들려면 색인이 다음 기준을 충족해야 합니다.
IndexUpdateMethod
는STREAM_UPDATE
여야 합니다. 스트림 색인 만들기를 참고하세요.거리 측정 유형은 다음 중 하나로 명시적으로 설정해야 합니다.
DOT_PRODUCT_DISTANCE
COSINE_DISTANCE
벡터의 차원은 RAG 자료에서 사용할 임베딩 모델과 일치해야 합니다. 추가 매개변수를 조정할 수 있는지 여부를 결정하는 선택사항에 따라 다른 매개변수를 조정할 수 있습니다.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
벡터 검색 색인 엔드포인트 만들기
공개 엔드포인트는 RAG 엔진에서 지원됩니다.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
색인 엔드포인트에 색인 배포
최근접 이웃 검색을 실행하기 전에 색인을 색인 엔드포인트에 배포해야 합니다.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
색인을 색인 엔드포인트에 처음 배포하는 경우 백엔드를 자동으로 빌드하고 시작하는 데 약 30분이 걸리므로 그 전에 색인을 저장할 수 없습니다. 첫 번째 배포 후 몇 초 내에 색인이 준비됩니다. 색인 배포 상태를 확인하려면 벡터 검색 콘솔을 열고 색인 엔드포인트 탭을 선택한 다음 색인 엔드포인트를 선택합니다.
색인 및 색인 엔드포인트의 리소스 이름을 식별합니다. 리소스 이름의 형식은 다음과 같습니다.
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexEndpoints/${INDEX_ENDPOINT_ID}
.
RAG 엔진에서 Vertex AI 벡터 검색 사용
벡터 검색 인스턴스가 설정된 후 이 섹션의 단계에 따라 벡터 검색 인스턴스를 RAG 애플리케이션의 벡터 데이터베이스로 설정합니다.
RAG 코퍼스를 만들도록 벡터 데이터베이스 설정
RAG 코퍼스를 만들 때 전체 INDEX_ENDPOINT_NAME
및 INDEX_NAME
만 지정합니다. RAG 코퍼스가 생성되고 벡터 검색 색인과 자동으로 연결됩니다. 기준에 대해 유효성 검사가 실행됩니다. 요구사항 중 하나라도 충족되지 않으면 요청이 거부됩니다.
Python
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Vertex AI Python API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
# TODO(developer): Update and un-comment the following lines:
# CORPUS_DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
# Full index/indexEndpoint resource name
# Index: projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
# IndexEndpoint: projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexEndpoints/${INDEX_ENDPOINT_ID}
# INDEX_RESOURCE_NAME = "YOUR_INDEX_ENDPOINT_RESOURCE_NAME"
# INDEX_NAME = "YOUR_INDEX_RESOURCE_NAME"
# Call CreateRagCorpus API to create a new RagCorpus
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://${LOCATION_ID}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION_ID}/ragCorpora -d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_vector_db_config" : {
"vertex_vector_search": {
"index":'\""${INDEX_NAME}"\"'
"index_endpoint":'\""${INDEX_ENDPOINT_NAME}"\"'
}
}
}'
# Call ListRagCorpora API to verify the RagCorpus is created successfully
curl -sS -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://${LOCATION_ID}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION_ID}/ragCorpora"
RAG API를 사용하여 파일 가져오기
ImportRagFiles
API를 사용하여 Cloud Storage 또는 Google Drive에서 벡터 검색 색인으로 파일을 가져옵니다. 파일은 벡터 검색 색인에 삽입되어 저장됩니다.
REST
# TODO(developer): Update and uncomment the following lines:
# RAG_CORPUS_ID = "your-rag-corpus-id"
#
# Google Cloud Storage bucket/file location.
# For example, "gs://rag-fos-test/"
# GCS_URIS= "your-gcs-uris"
# Call ImportRagFiles API to embed files and store in the BigQuery table
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
"import_rag_files_config": {
"gcs_source": {
"uris": '\""${GCS_URIS}"\"'
},
"rag_file_chunking_config": {
"chunk_size": 512
}
}
}'
# Call ListRagFiles API to verify the files are imported successfully
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}/ragFiles
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
RAG API를 사용하여 관련 문맥 가져오기
파일 가져오기가 완료되면 RetrieveContexts
API를 사용하여 벡터 검색 색인에서 관련 컨텍스트를 검색할 수 있습니다.
REST
# TODO(developer): Update and uncomment the following lines:
# RETRIEVAL_QUERY="your-retrieval-query"
#
# Full RAG corpus resource name
# Format:
# "projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}"
# RAG_CORPUS_RESOURCE="your-rag-corpus-resource"
# Call RetrieveContexts API to retrieve relevant contexts
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1:retrieveContexts \
-d '{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
},
"query": {
"text": '\""${RETRIEVAL_QUERY}"\"',
"similarity_top_k": 10
}
}'
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
Vertex AI Gemini API를 사용하여 콘텐츠 생성
Gemini 모델을 사용하여 콘텐츠를 생성하려면 Vertex AI GenerateContent
API를 호출합니다. 요청에 RAG_CORPUS_RESOURCE
를 지정하면 API가 벡터 검색 색인에서 데이터를 자동으로 검색합니다.
REST
# TODO(developer): Update and uncomment the following lines:
# MODEL_ID=gemini-1.5-flash-001
# GENERATE_CONTENT_PROMPT="your-generate-content-prompt"
# GenerateContent with contexts retrieved from the FeatureStoreOnline index
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": {
"role": "user",
"parts": {
"text": '\""${GENERATE_CONTENT_PROMPT}"\"'
}
},
"tools": {
"retrieval": {
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
"similarity_top_k": 8,
"vector_distance_threshold": 0.32
}
}
}
}'
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
다음 단계
- 임베딩 모델 선택에 관한 자세한 내용은 RAG 엔진에서 임베딩 모델 사용을 참고하세요.
- 파일 가져오기에 대한 자세한 내용은 RAG 파일 가져오기를 참고하세요.