Skip to main content

genai-factory-cloud-run-rag-search

Use when deploying or configuring the genai-factory cloud-run-rag-search blueprint (Cloud Run RAG frontend and scheduled GCS ingestion job backed by Vertex AI Vector Search 2.0 Collections with auto-embeddings and Hybrid Search / RRF), customizing vector_search_config or ScaNN ANN indexes, or troubleshooting europe-west1 tenant creation and COLLECTION_HAS_DATA_OBJECTS errors on destroy.

소스 정보

저장소
GoogleCloudPlatform/genai-factory
최근 소스 활동
2026년 10월 29일 08:43
감지된 SKILL.md 언어
영어
스타
178
포크
36

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
54 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
genai-factory-cloud-run-rag-search
description
Use when deploying or configuring the genai-factory cloud-run-rag-search blueprint (Cloud Run RAG frontend and scheduled GCS ingestion job backed by Vertex AI Vector Search 2.0 Collections with auto-embeddings and Hybrid Search / RRF), customizing vector_search_config or ScaNN ANN indexes, or troubleshooting europe-west1 tenant creation and COLLECTION_HAS_DATA_OBJECTS errors on destroy.
# GenAI Factory — Cloud Run RAG with Vector Search 2.0 (`cloud-run-rag-search`) ## Overview Deploys a **Cloud Run RAG frontend** and **scheduled GCS ingestion Cloud Run job** ([`cloud-run-rag-search`](./README.md)) backed by **Vertex AI Vector Search 2.0 Collections** (`google_vector_search_collection`) with server-side auto-embeddings (`gemini-embedding-001`, `3072` dims) and **Hybrid Search** (`SemanticSearch` + `TextSearch` via Reciprocal Rank Fusion `RRF`). ## When to Use - Deploying or customizing [`0-prereqs/`](./0-prereqs/README.md) or [`1-apps/`](./1-apps/README.md) in `cloud-run-rag-search`. - Configuring `vector_search_config` (collection schema or optional ScaNN ANN `google_vector_search_index`), uploading JSONL data to GCS, or running the ingestion/frontend workloads. - **REQUIRED SUB-SKILL:** Load [`genai-factory-prerequisites-and-fast`](../.agents/skills/genai-factory-prerequisites-and-fast/SKILL.md) for Stage 0 (`0-prereqs`), BYO Shared VPC, Fabric FAST, and `aiplatform.<eu|us>.rep.googleapis.com` PSC/DNS setup. - **REQUIRED SUB-SKILL:** Load [`genai-factory-cloud-run-and-load-balancers`](../.agents/skills/genai-factory-cloud-run-and-load-balancers/SKILL.md) for `lbs_configs`, `cloud_run_configs`, `ingestion_schedule_configs`, and container builds. - **REQUIRED SUB-SKILL:** Load [`genai-factory-operations-and-teardown`](../.agents/skills/genai-factory-operations-and-teardown/SKILL.md) for `CLOUDSDK_BILLING_QUOTA_PROJECT` and clean teardown. - For contributor test inventory workflows (`plan_summary.py` / `pytest`), see [`AGENTS.md`](./AGENTS.md). ## Quick Reference | Attribute | Value / Definition | | :--- | :--- | | **Projects (`0-prereqs`)** | Service: `gf-rrag-src-0` ([`service-01.yaml`](./0-prereqs/data/projects/service-01.yaml)); Host: `gf-rrag-src-hp-0` ([`host.yaml`](./0-prereqs/data/projects/host.yaml)) | | **Default Name (`var.name`)** | `gf-rrag-search-0` (requires `var.prefix` in `1-apps` for GCS bucket `module.index-bucket`) | | **Required SA Keys (`1-apps`)** | `service-01/iac-rw`, `service-01/gf-rrag-fe-0` (`vectorsearch.viewer`, `aiplatform.user`), `service-01/gf-rrag-ing-0` (`vectorsearch.dataObjectWriter`, `storage.objectViewer`, `aiplatform.user`), `*-build-0`, `service-01/gf-rrag-ing-sched-0` | | **Collection Location** | Automatically maps `europe-west1` -> `europe-west4` in [`1-apps/database.tf`](./1-apps/database.tf) (`VECTOR_SEARCH_LOCATION`) | ## Core Patterns ### Enable Optional Dedicated ScaNN ANN Index (`1-apps/terraform.tfvars`) By default (`index_config.create = false`), the collection uses zero-indexing exact kNN search. To provision a dedicated ScaNN ANN index: ```hcl vector_search_config = { location = "europe-west4" index_config = { create = true distance_metric = "DOT_PRODUCT" feature_norm_type = "UNIT_L2_NORM" filter_fields = ["genre", "year", "rating", "rank"] store_fields = ["title"] mode = "STORAGE_OPTIMIZED" min_replica_count = 2 max_replica_count = 2 } } ``` ### 4-Step Deployment & Ingestion Sequence After `terraform apply` in `1-apps/`, run `terraform output -raw commands` ([`1-apps/outputs.tf`](./1-apps/outputs.tf)) to: 1. **Upload JSONL to GCS:** Copy [`1-apps/data/data.jsonl`](./1-apps/data/data.jsonl) to `gs://<prefix>-gf-rrag-search-0/data.jsonl`. 2. **Create Artifact Registry:** Docker repo `${var.name}` in `${var.region}`. 3. **Build, Deploy & Run Ingestion Job ([`1-apps/apps/rag/ingestion/`](./1-apps/apps/rag/ingestion)):** Batch-upserts `DataObject` items (`<= 100` per batch, max `250`, falling back from `batch_create_data_objects` to `batch_update_data_objects` on `409 AlreadyExists`). 4. **Build, Deploy & Query Frontend ([`1-apps/apps/rag/frontend/`](./1-apps/apps/rag/frontend/README.md)):** Queries `POST /predict` using Hybrid Search (`SemanticSearch` + `TextSearch` RRF). ## Common Mistakes | Symptom / Error | Cause | Fix | | :--- | :--- | :--- | | `Error code 10: Failed to perform tenant project creation` on Collection create | Vector Search 2.0 Collections are not available in `europe-west1` | Keep the [`1-apps/database.tf`](./1-apps/database.tf) fallback (`europe-west4`) and keep `REGION`, `VECTOR_SEARCH_LOCATION`, and `GOOGLE_CLOUD_LOCATION` (`eu`/`us`) distinct. | | `403 Permission denied` during server-side auto-embedding upsert or `SemanticSearch` | Caller SA lacks Vertex AI permission to invoke `gemini-embedding-001` | Ensure both `gf-rrag-ing-0` and `gf-rrag-fe-0` have `roles/aiplatform.user`. | | `400: Collection deletion is not allowed because it still has data objects` on `terraform destroy` | `DeleteCollection` rejects non-empty collections | Delete all `DataObject` records via `dataObjects:batchDelete` before running `terraform destroy` on `1-apps`. | | Invalid `data_object_id` or batch size error during ingestion | `DataObject` IDs must be RFC1035 (`[a-z]([a-z0-9-]{0,61}[a-z0-9])?`) and batches `<= 250` | Sanitize IDs to RFC1035 and keep `VECTOR_SEARCH_UPSERT_BATCH_SIZE <= 250`. |
GitHub에서 보기