多區域高可用性

高可用性部署

在 us 多區域使用代理檢索服務時,可享有更高的服務可用性服務水準協議,即使發生區域性中斷,也能持續正常運作。

us 多區域提供的 API 與 Agent Retrieval 的其他部分相同,但有一些限制。us 多區域位置中的資料會複製到美國本土各區域,且 us 多區域中的所有有效索引,在這些區域中都有佈建備援伺服器。在正常運作條件下,系統會從網路用戶端延遲時間最佳的區域提供查詢。如果服務中斷或服務能力中斷,Google 的負載平衡器會將查詢重新導向至最近的可用區域。負載平衡和複製作業的設定與維護,完全由 Agent Retrieval 管理。

注意:為支援高可用性的代理式檢索,必須投入硬體和工程資源,因此客戶專案必須經過特別審查並加入許可清單,才能加入高可用性多區域。如要申請使用高可用性多區域,請填寫連結的申請表單。

新手上路

您必須申請加入許可清單,才能存取高可用性多區域。

確認專案已加入許可清單,可存取高可用性多區域後,您就能在 us 多區域位置建立新的集合、資料物件和索引。請按照標準 Agent Retrieval API 說明文件操作,並將通常指定單一區域 (例如 us-central1 或 europe-central2) 的位置替換為 us。

在 us 多區域中上傳的所有資料和執行的作業,都能享有更強大的複製、備援和高可用性功能。

帳單

多區域位置的計費費率高於標準單一區域,反映出複製成本增加和作業優先順序較高。

詳情請參閱定價。

限制

未實作儲存空間最佳化。多區域位置只能部署效能最佳化級別索引。

SearchDataObjects 對未正規化嵌入向量的索引呼叫,可能會在多區域位置回報非預期的距離指標。從這些索引擷取及排序資料點時,結果會正確無誤 (在近似最近鄰索引的限制範圍內)。建議您一律提供正規化嵌入向量,或依賴自動嵌入生成。

多區域位置僅支援 DOT_PRODUCT_DISTANCE。

多區域位置不支援稀疏嵌入。如果向量搜尋要求必須在特定欄位中包含特定權杖,則可在要求的篩選運算式中使用 $search 運算子。

多區域位置不使用 CreateIndex 和 UpdateIndex 要求中的 Index.dedicated_infrastructure.autoscaling_spec 欄位。

多區域位置不使用 SearchDataObjectsRequests 中的 SearchHint.IndexHint.dense_scann_params 欄位。多區域 ANN 索引經過調整,可提供約 95% 的喚回度,但實際喚回度可能會因資料具體情況而異。

從區域性部署作業遷移

如果區域代理式檢索集合中有資料,可以使用下列高階工作流程,將資料複製到 us 位置:

  • 將集合資料匯出至託管集合的區域中的 bucket,並移除 etag。
  • 從 bucket 匯入至託管於 us 位置的集合。

事前準備

請確認您已備妥下列項目:

  • 來源區域中的 bucket,用於匯出暫存區。
  • 已安裝 gcloud CLI。
  • IAM 權限:來源集合的讀取權限、目的地的寫入權限,以及 bucket 的讀取和寫入權限。
  • 已在 us 建立目的地集合,且結構定義與來源相同。

PROJECT_ID:要遷移的集合所在的專案。下列指令假設來源和目的地專案相同。

SOURCE_LOCATION:來源集合的位置,例如 us-central1。

SOURCE_COLLECTION:要遷移的集合名稱。

STAGING_BUCKET:bucket 內要匯出集合資料的目錄路徑,例如 gs://your-bucket-id。

步驟

每個程式碼片段都可以複製及貼上。請將每個區塊頂端的預留位置,替換成專案、來源位置、集合和 bucket 的特定值。

1. 從來源區域匯出

cat > request.json <<EOF
{
  "gcsDestination": {
    "exportUri": "STAGING_BUCKET/export/",
    "format": "JSONL"
  },
  "field_filter": {
    "excluded_fields": {
      "fields": ["etag"]
    }
  }
}
EOF

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d @request.json \
  "https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_LOCATION/collections/SOURCE_COLLECTION:exportDataObjects"

回應會包含作業名稱,例如 projects/.../locations/us-central1/operations/operation-...。輪詢作業,直到 "done": true 為止。

EXPORT_OPERATION_NAME

gcloud vector-search operations describe "EXPORT_OPERATION_NAME" \
  --location="SOURCE_LOCATION"

2. 匯入至美國

DEST_COLLECTION:遷移後的集合名稱 (可與原始名稱相同)。

gcloud vector-search collections import-data-objects "DEST_COLLECTION" \
  --location="us" \
  --project="PROJECT_ID" \
  --gcs-import-contents-uri="STAGING_BUCKET/export/" \
  --gcs-import-error-uri="STAGING_BUCKET/import-errors/" \
  --gcs-import-output-uri="STAGING_BUCKET/import-output/" \
  --async

以匯出作業相同的方式,輪詢傳回的作業:

IMPORT_OPERATION_NAME

gcloud vector-search operations describe "IMPORT_OPERATION_NAME" \
  --location="us"

3. 驗證匯入作業

  • 檢查 gs://your-bucket-uscentral1/import-errors/ 是否有任何遭拒的記錄。
  • 比較來源和目的地的記錄數量。
  • 對兩者執行一些已知查詢,並比較結果。