1. 事前準備
繼續進行本程式碼研究室之前,請先注意下列幾點。
必要條件
- 對大型語言模型有基本瞭解
- 對 RAG 系統有基本瞭解
課程內容
- 如何建構 Google 品質的搜尋引擎,根據您上傳的資料回答問題
- 如何建立 Vertex AI 資料儲存庫
- 如何建立 Vertex AI Agents
- 如何運用 Cloud Run 部署應用程式
軟硬體需求
- Google Cloud 帳戶
- 具備 Google Cloud 專案
- 具備終端機的 IDE
簡介
Google 搜尋是一項功能強大的工具,可運用龐大的網頁和其他內容索引,為使用者查詢提供相關結果。這項技術稱為檢索增強生成 (RAG),是現代 AI 的重要技術。
RAG 的運作方式是先從文件語料庫擷取相關段落。這項作業會使用各種方法,例如關鍵字比對、語意相似度和機器學習。系統擷取相關段落後,就會用來生成摘要或回答使用者的查詢。
RAG 的主要優點在於可避免語言模型產生幻覺。「幻覺」一詞是指生成的文件內容與文件語料庫中的證據不符。如果語言模型無法區分相關和不相關的資訊,就可能發生這種情況。
RAG 機制會確保生成的文字一律以文件語料庫中的證據為根據,避免出現幻覺回覆。因此是更可靠且值得信賴的資訊來源。
RAG 是一項強大的技術,已用於各種應用程式,包括搜尋引擎、聊天機器人和問答系統。在未來的 AI 發展中,這項技術可能會扮演越來越重要的角色。
以下列舉幾個 RAG 的實際應用範例:
- 許多搜尋系統會使用 RAG,產生與使用者查詢相關的搜尋結果。
- 聊天機器人會使用 RAG 生成資訊豐富且引人入勝的回覆,回答使用者問題。
- 問答系統會使用 RAG 生成準確且全面的使用者問題答案。
RAG 是一種多用途技術,可用於在各種領域和應用程式中生成文字。這項強大工具可讓 AI 變得更聰明、更瞭解資訊。
在本程式碼研究室中,我們將建構 RAG 系統,協助您根據上傳的語料庫回答問題。Vertex AI Search/Agent Builder 是立即可用的 RAG 平台,可協助您加速建構 RAG 系統,避免手動收集、剖析、分塊、產生嵌入項目、查詢擴充、候選項目擷取和排序文件。雖然開箱即用的 RAG 系統可協助您快速上手,但 Google Cloud 也為每個程序提供個別 API,方便您自行建構 RAG 系統,進而微調 RAG 系統,以符合業務需求。
建構項目
完成本程式碼研究室後,您將部署可運作的 RAG 系統,協助您根據事實資訊回答問題,並提供正確的參考資料出處。
您也會進一步瞭解如何使用 Vertex AI Search API,在 Google Cloud 上建構此 RAG 架構。此外,您也會瞭解如何在 Cloud Run 上部署這個 RAG 架構應用程式 (包含前端和後端)。Cloud Run 是無伺服器平台,可在 Google Cloud 上以容器形式部署應用程式。

申請流程
- 上傳資料:使用者可以上傳自己的資料集 (即 PDF 檔案) 做為輸入內容。
- 在搜尋列中提出查詢:使用者可以在搜尋列中,根據上傳的資料集提問。
- 擷取答案:使用者可以擷取搜尋結果/候選答案,並根據查詢的相關性,檢查擷取的答案是否符合事實/有根據。
2. 環境設定
- 在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
- 確保您的 Google Cloud 專案有啟用計費服務。瞭解如何檢查專案是否已啟用計費功能。
- 您將使用 Cloud Shell,這是 Google Cloud 中執行的指令列環境。如要存取,請按一下 Google Cloud 控制台頂端的「啟用 Cloud Shell」。

- 連至 Cloud Shell 後,請使用下列指令確認驗證已完成,專案也已設為獲派的專案 ID:
gcloud auth list
- 在 Cloud Shell 中執行下列指令,確認 gcloud 指令已瞭解您的專案。
gcloud config list project
- 如果未設定專案,請使用下列指令來設定:
gcloud config set project <YOUR_PROJECT_ID>
- 確認已啟用下列 API:
- Cloud Run
- Vertex AI
- Cloud Storage
3. 步驟 1:建立 GCP Bucket
- 前往控制台,並在搜尋列輸入「Cloud Storage」。
- 從建議結果中選取 Cloud Storage。

- 按一下「建立 Bucket」

- 為 bucket 提供全域不重複的名稱
- 按一下「繼續」
- 在「位置類型」中選取「多區域」
- 在下拉式選單中,請務必選取
us (multiple regions in United States)選項。

- 按一下「建立 Bucket」

- 建立值區後,請從存放區上傳
alphabet-metadata.json
4. 步驟 2:建立 Vertex AI 資料儲存庫
- 在控制台頁面的搜尋列中,輸入「Vertex AI Agent Builder」
- 選取第一個產品「Agent Builder」

- 在 Agent Builder 頁面,點選左側導覽列中的「資料儲存庫」,如下圖所示

- 點按「建立資料儲存庫」

- 選取 Cloud Storage 做為資料儲存空間
- 按一下 Cloud Storage 圖示下方的「選取」

- 在「資料夾」選項下方的分頁中,按一下「瀏覽」按鈕
- 選取您在步驟 1 建立的值區
- 在下方選項中,請務必選取「連結的非結構化文件 (內含中繼資料的 JSONL)」
- 按一下「Continue」(繼續)

- 在「設定」頁面,選取「全球」做為資料儲存庫的位置
- 為資料儲存庫提供可辨識的名稱
- 按一下「建立」

布朗尼:
- 「建立」按鈕的正上方會顯示文件處理選項。
- 您可以試用不同的剖析器,例如數位、OCR 或版面配置剖析器
- 您也可以啟用進階分塊功能,並提供自訂分塊大小限制

5. 步驟 3:建立 Agent
- 建立資料儲存庫後,按一下左側導覽列中的應用程式,然後選擇「應用程式」
- 按一下「建立應用程式」按鈕
- 將應用程式類型選為「搜尋」(您也可以建立代理、對話式機器人、建議等)

- 確認已選取「內容」下方的「一般」。您也可以根據要建構的資料儲存庫、資料類型和系統,選取「媒體」或「建議」。
- 請務必同時開啟企業版和進階 LLM 功能
- 提供應用程式名稱
- 提供貴公司名稱

- 請務必選取「全球」區域
- 按一下「繼續」

- 在下一個畫面中,選取您在步驟 2 建立的資料儲存庫
- 按一下「建立」

6. 步驟 4:將應用程式 Docker 化
- 在 Google Cloud 控制台中開啟終端機
- 使用下列指令複製存放區 <sample_repository_link>
git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo
- 使用下列指令變更目錄,並前往複製的存放區
cd vertex-ai-search-agent-builder-demo
- 資料夾結構
- 後端 - 這裡會保存以 Python 為基礎的 API 實作,協助您為前端建立 RESTful 端點,以便互動。
- 前端 - 這會保留以 React 為基礎的應用程式,並提供 UI。這也會包含透過 REST 端點對後端進行必要的應用程式層級呼叫
- Dockerfile - 這個檔案包含建立 Docker 容器的所有相關指令
- 在存放區目錄的根目錄中,執行下列指令來建構 Docker 映像檔 (注意:在 MacBook 中建構 Docker 容器時,請務必使用
- - platform標記,這類裝置採用 Apple Silicon 晶片,例如 M1、M2 等。如果您使用 Windows 電腦建構,或 CPU 架構是以 Intel 為基礎,則不需要這個標記)
docker build --platform linux/amd64 -t your-image-name .
- Docker 容器建構完成後,請執行下列指令,為容器加上正確標記,確保您提供映像檔版本。請注意,應用程式可能有多個版本,因此 Docker 容器中也可能有多個版本做為標記。從開發運維的角度來看,確保一律使用最新穩定版是建議採取的做法。
docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
- Docker 容器映像檔標記成功後,現在要將映像檔推送至 Google Artifact Registry (GAR)。GAR 是 Google 提供的全代管平台,可協助您管理及控管 Docker 容器的版本。執行下列指令,將上述標記的容器推送至 GAR。詳情請參閱以下連結:[ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]
docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
7. 步驟 5:在 Cloud Run 上部署應用程式
- 將終端機視窗縮到最小。在 Google Cloud 控制台搜尋列中,搜尋 Cloud Run
- 按一下建議的 Cloud Run 產品

- 按一下「建立服務」
- 在下一頁中,確認已選取「透過現有的容器映像檔部署單一修訂版本」
- 按一下下方的「選取」
- 系統會在右側提示導覽列。
- 確認已選取「Artifact Registry」分頁
- 確認專案是否選取正確
- 按一下箭頭,展開已部署容器映像檔連結的摺疊式選單
- 選取容器代碼並展開 (一律選取部署的最新版本,即正確的最新代碼,例如 v1、v2 等)。
- 按一下容器代碼名稱下方顯示的容器映像檔

- 在「設定」區域中
- 為 Cloud Run 應用程式提供服務名稱 (在 Cloud Run 上部署應用程式時,這個名稱會成為網址的一部分)
- 選取適當的區域 (本例中為 us-central1 或您選擇的任何區域)
- 在「驗證」下方
- 確認已選取「允許未經驗證的叫用」
- 在「CPU 分配與定價」下方
- 選取「只在要求處理期間分配 CPU」
- 將服務自動資源調度設為 1 (為因應實際工作環境需求,建議您設定執行個體數量下限,以處理每日流量,甚至可以設為 0)
- 將「輸入控制」設為「全部」,允許網際網路流量存取應用程式
- 按一下「建立」
- 這會部署 Cloud Run 執行個體,佈建作業可能需要幾分鐘

- 部署完成後,您就能看到公開網址,並從該網址存取網路應用程式

8. 運作方式為何?
- 進入應用程式首頁後,按一下「Upload Document」(上傳文件) 按鈕
- 上傳 PDF 檔案
- 上傳完成後
- 按一下網頁頂端的搜尋列
- 開始搜尋與上傳文件相關的查詢
- 輸入查詢並點選「搜尋」後,系統應會顯示剛上傳文件中所有相關的答案
- 您可以查看後端程式碼並新增更多設定,例如:
- 新增程式碼片段
- 新增擷取片段
- 新增答案
- 調整前 k 個結果,協助 LLM 摘要說明答案 (類似於 Google 搜尋的 AI 摘要)
- 您也可以在上傳文件時新增中繼資料標記。這有助於產生層面和可篩選的類別
9. 清理
如要避免系統向您的 Google Cloud 帳戶收取本程式碼研究室所用資源的費用,請按照下列步驟操作:
10. 恭喜
恭喜!您已成功使用 Google 提供的最先進模型,快速建構現成 RAG 系統,並為搜尋查詢提供 Google 品質的結果。本程式碼研究室僅供示範之用,如要用於實際用途,請務必設定更多安全措施和防護措施。完整存放區的連結在此。只要運用 Google Cloud 並執行 5 個步驟,就能在幾分鐘內生成端對端 RAG 系統,提供 Google 品質的結果。隨著生成式 AI 和大型語言模型不斷演進,建構這類 RAG 系統也有助於我們避免出現幻覺,以及顯示未引用來源的資訊。
這只是起點,但透過完全可自訂的 DIY RAG API,我們可以創造奇蹟,有效處理管道流程的每個環節,提供更透明、強大且有效率的解決方案。