如要從 Firestore 擷取資料,請按照下列步驟,使用 Google Cloud 控制台或 API 建立資料儲存庫並擷取資料。
如果 Firestore 資料與 Gemini Enterprise 位於同一個專案,請參閱「從 Firestore 匯入資料」。
如果 Firestore 資料與 Gemini Enterprise 專案位於不同專案,請參閱「設定 Firestore 存取權」。
從其他專案設定 Firestore 存取權
如要授予 Gemini Enterprise 存取其他專案中 Firestore 資料的權限,請按照下列步驟操作:
將下列
PROJECT_NUMBER
變數替換為您的 Gemini Enterprise 專案編號,然後複製這個程式碼區塊的內容。這是您的 Gemini Enterprise 服務帳戶 ID:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
前往「IAM & Admin」(IAM 與管理) 頁面。
在「IAM 與管理」頁面中切換至 Firestore 專案,然後按一下「授予存取權」。
在「新增主體」中,輸入執行個體的服務帳戶 ID,然後選取「Datastore」>「Cloud Datastore Import Export Admin」角色。
按一下 [儲存]。
切換回 Gemini Enterprise 專案。
接著,請參閱「從 Firestore 匯入資料」。
從 Firestore 匯入資料
控制台
如要透過控制台擷取 Firestore 的資料,請按照下列步驟操作:
前往 Google Cloud 控制台的「Gemini Enterprise」頁面。
前往「Data Stores」(資料儲存庫) 頁面。
點選「Create Data Store」(建立資料儲存庫)。
在「Select a data source」(選取資料來源) 頁面中,選取「Firestore」。
指定要匯入資料的專案 ID、資料庫 ID 和集合 ID。
按一下「繼續」。
選擇資料儲存庫的區域。
輸入資料儲存庫的名稱。
點選「建立」。
接著需要檢查擷取狀態,請前往「Data stores」(資料儲存庫) 頁面,點按資料儲存庫名稱,即可在相應的「Data」(資料) 頁面查看該儲存庫的詳細資料。「Activity」(活動) 分頁的狀態欄從「In progress」(進行中) 變為「Import completed」(匯入完成) 時,表示擷取作業已完成。
視資料大小而定,擷取作業可能需要數分鐘至數小時才能完成。
REST
如要使用指令列建立資料儲存庫,並從 Firestore 擷取資料,請按照下列步驟操作:
建立資料儲存庫。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \ -d '{ "displayName": "DISPLAY_NAME", "industryVertical": "GENERIC", "solutionTypes": ["SOLUTION_TYPE_SEARCH"], }'
更改下列內容:
PROJECT_ID
:專案 ID。DATA_STORE_ID
:資料儲存庫的 ID。ID 只能包含小寫英文字母、數字、底線和連字號。DISPLAY_NAME
:資料儲存庫的顯示名稱。這可能會顯示在 Google Cloud 控制台。
從 Firestore 匯入資料。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \ -d '{ "firestoreSource": { "projectId": "FIRESTORE_PROJECT_ID", "databaseId": "DATABASE_ID", "collectionId": "COLLECTION_ID", }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", }'
更改下列內容:
PROJECT_ID
:Gemini Enterprise 專案的 ID。DATA_STORE_ID
:資料儲存庫的 ID。ID 只能包含小寫英文字母、數字、底線和連字號。FIRESTORE_PROJECT_ID
:Firestore 專案的 ID。DATABASE_ID
:Firestore 資料庫的 ID。COLLECTION_ID
:Firestore 集合的 ID。RECONCILIATION_MODE
:選用。值為FULL
和INCREMENTAL
。預設值為INCREMENTAL
。指定INCREMENTAL
會導致系統從 Firestore 增量重新整理資料至資料儲存庫。這會執行 upsert 作業,新增文件並以 ID 相同的更新文件取代現有文件。指定FULL
會導致資料儲存庫中的文件完全重新設定基準。換句話說,系統會將新的和更新的文件新增至資料儲存庫,並從資料儲存庫中移除不在 Firestore 中的文件。如果您想自動刪除不再需要的文件,FULL
模式會很有幫助。AUTO_GENERATE_IDS
:選用。指定是否要自動產生文件 ID。如果設為true
,系統會根據酬載的雜湊值產生文件 ID。請注意,多次匯入時,產生的文件 ID 可能不一致。如果您在多次匯入時自動產生 ID,Google 強烈建議將reconciliationMode
設為FULL
,以維持文件 ID 的一致性。ID_FIELD
:選用。指定哪些欄位是文件 ID。