이 페이지에서는 Vertex AI RAG 엔진을 Vertex AI 벡터 검색에 연결하는 방법을 보여줍니다.
이 노트북 Vertex AI 벡터 검색을 사용한 Vertex AI RAG 엔진을 사용하여 따라할 수도 있습니다.
Vertex AI RAG Engine은 Spanner를 기반으로 하는 기본 제공 벡터 데이터베이스를 사용하여 텍스트 문서의 벡터 표현을 저장하고 관리하는 강력한 도구입니다. 벡터 데이터베이스를 사용하면 문서가 특정 쿼리와 얼마나 의미상 유사한지를 기반으로 관련 문서를 효율적으로 검색할 수 있습니다. Vertex AI Vector Search를 Vertex AI RAG 엔진에 추가 벡터 데이터베이스로 통합하면 Vector Search의 기능을 사용하여 지연 시간이 짧으면서 대용량 데이터를 처리하여 RAG 애플리케이션의 성능과 확장성을 개선할 수 있습니다.
Vertex AI 벡터 검색 설정
Vertex AI 벡터 검색은 Google 연구팀에서 개발한 벡터 검색 기술을 기반으로 합니다. 벡터 검색을 사용하면 Google 검색, YouTube, Google Play와 같은 Google 제품의 기반을 제공하는 동일한 인프라를 사용할 수 있습니다.
Vertex AI RAG 엔진과 통합하려면 빈 벡터 검색 색인이 필요합니다.
Vertex AI SDK 설정
Vertex AI SDK를 설정하려면 설정을 참고하세요.
벡터 검색 색인 만들기
RAG 자료와 호환되는 벡터 검색 색인을 만들려면 색인이 다음 기준을 충족해야 합니다.
IndexUpdateMethod
는STREAM_UPDATE
여야 합니다. 스트림 색인 만들기를 참고하세요.거리 측정 유형은 다음 중 하나로 명시적으로 설정해야 합니다.
DOT_PRODUCT_DISTANCE
COSINE_DISTANCE
벡터의 차원은 RAG 코퍼스에 사용할 임베딩 모델과 일치해야 합니다. 추가 매개변수를 조정할 수 있는지 여부를 결정하는 선택사항에 따라 다른 매개변수를 조정할 수 있습니다.
Python용 Vertex AI SDK
Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Python용 Vertex AI SDK API 참조 문서를 확인하세요.
벡터 검색 색인 엔드포인트 만들기
공개 엔드포인트는 Vertex AI RAG 엔진에서 지원됩니다.
Python용 Vertex AI SDK
Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Python용 Vertex AI SDK API 참조 문서를 확인하세요.
색인 엔드포인트에 색인 배포
최근접 이웃 검색을 실행하기 전에 색인을 색인 엔드포인트에 배포해야 합니다.
Python용 Vertex AI SDK
Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Python용 Vertex AI SDK API 참조 문서를 확인하세요.
색인을 색인 엔드포인트에 처음 배포하는 경우 백엔드를 자동으로 빌드하고 시작하는 데 약 30분이 걸리므로 그 전에 색인을 저장할 수 없습니다. 첫 번째 배포 후 몇 초 이내에 색인이 준비됩니다. 색인 배포 상태를 보려면 벡터 검색 콘솔을 열고 색인 엔드포인트 탭을 선택한 다음 색인 엔드포인트를 선택합니다.
색인 및 색인 엔드포인트의 리소스 이름을 식별합니다. 리소스 이름의 형식은 다음과 같습니다.
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexEndpoints/${INDEX_ENDPOINT_ID}
.
Vertex AI RAG 엔진에서 Vertex AI 벡터 검색 사용
벡터 검색 인스턴스가 설정된 후 이 섹션의 단계에 따라 벡터 검색 인스턴스를 RAG 애플리케이션의 벡터 데이터베이스로 설정합니다.
벡터 데이터베이스를 설정하여 RAG 코퍼스 만들기
RAG 코퍼스를 만들 때는 전체 INDEX_ENDPOINT_NAME
및 INDEX_NAME
만 지정합니다. 색인 및 색인 엔드포인트 리소스 이름 모두에 숫자 ID를 사용해야 합니다. 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
Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Python용 Vertex AI SDK 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
Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Python용 Vertex AI SDK 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
Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Python용 Vertex AI SDK API 참조 문서를 확인하세요.