使用 Elasticsearch 建立基準

本頁說明如何使用 Elasticsearch 執行個體,根據您的資料進行基礎訓練。

使用 Elasticsearch 建立 Gemini 基準

建立基準:使用公開和私人資料集提供背景資訊和事實,以建立大型語言模型 (LLM) 回覆的基準。透過 Elasticsearch 建立基準,您可以運用現有的 Elasticsearch 索引,提升 Gemini 輸出內容的品質和可靠性、減少幻覺,並確保回覆內容與您的資料相關。這可讓您建構強大的 RAG 應用程式,例如:

  • 生成式搜尋摘要
  • 使用企業資料的問答聊天機器人
  • 以資料為依據的服務專員

一次最多可根據 10 個資料來源提供答案。您可以結合「以 Elasticsearch 建立基準」和「以 Google 搜尋建立基準」,將模型連結至網際網路中的世界知識、各種主題或最新資訊。

支援的模型

下列模型支援運用 Elasticsearch 建立基準,但僅限輸入文字:

在 Elasticsearch 中設定搜尋範本

本節說明如何使用 Elasticsearch 執行個體,根據儲存在該執行個體中的資料進行基礎訓練。

最佳做法

如要獲得最佳的基礎回應,請在建立搜尋範本時遵循下列原則:

  • 只納入相關且實用的資料。舉例來說,在產品目錄中,除非提示詞明確要求提供網址,否則指定圖片網址可能無法協助 LLM 回答有關產品屬性的提示詞。同樣地,請避免輸出嵌入向量。

  • 建立基準會移除與提示關聯性低的 Elasticsearch 結果。 建議您提供較多的 Elasticsearch 結果,以擷取所有相關內容。

  • 結果資料可能位於一個或多個欄位。

範例範本

你可以使用搜尋範本。不過,建議您使用一般 kNN 搜尋範本,並以 Elasticsearch 做為基礎。如需其他搜尋範本,請參閱 GitHub 存放區

這項 Vertex AI 語意搜尋功能是一般 kNN 搜尋。

    PUT _scripts/google-template-knn-multioutput
    {
      "script": {
        "lang": "mustache",
        "source": {
          "_source": {
            "excludes": [ "title_embedding", "description_embedding", "images"]
          },
            "size": "num_hits",
              "knn" : [
              {
                "field": "description_embedding",
                "k": 5,
                "num_candidates": 10,
                "query_vector_builder": {
                  "text_embedding": {
                    "model_id": "googlevertexai_embeddings_004",
                    "model_text": "query"
                  }
                },
                "boost": 0.4
              },
              {
                "field": "title_embedding",
                "k": 5,
                "num_candidates": 10,
                "query_vector_builder": {
                  "text_embedding": {
                    "model_id": "googlevertexai_embeddings_004",
                    "model_text": "query"
                }
              },
              "boost": 0.6
              }
              ]
        }
      }
    }

使用 Elasticsearch 生成有憑有據的回覆

控制台

如要在 Google Cloud 控制台使用 Elasticsearch 做為基礎模型,請按照下列步驟操作:

  1. 前往 Vertex AI Studio 的「建立提示」頁面。

    前往「建立提示」

  2. 在「設定」面板中,按一下「資料基礎:您的資料」切換鈕,即可為資料奠定基礎。

  3. 在「Customize Grounding」(自訂基礎) 窗格中,選取「Elasticsearch」

  4. 在「Elasticsearch endpoint」(Elasticsearch 端點) 欄位中輸入端點。

  5. 在「Elasticsearch API Key」(Elasticsearch API 金鑰) 欄位中輸入 API 金鑰。

  6. 在「Elasticsearch index」(Elasticsearch 索引) 欄位中輸入索引。

  7. 在「Elasticsearch 搜尋範本」欄位中輸入搜尋範本。

  8. 滑動「命中次數」滑桿,調整命中次數。

  9. 按一下「儲存」

  10. 輸入提示。

  11. 按一下「提交」

瞭解回覆內容

如果模型提示成功使用 Vertex AI Studio 或 API,以 Elasticsearch 資料儲存庫為基礎,模型的回應就會包含附有引文和來源內容的中繼資料。如果模型回覆的來源關聯性偏低或資訊不完整,系統可能不會提供中繼資料,且提示回覆不會以來源為依據。

REST

本節說明如何使用 Vertex AI API,為 LLM 回應建立基準。

必要條件

如要使用 Elasticsearch 建立 LLM 回覆的基礎,請先完成下列步驟:

  1. 啟用 Vertex AI API:請確認已為 Google Cloud 專案啟用 Vertex AI API。

  2. 安裝並登入 Google Cloud CLI:安裝並初始化 gcloud CLI 指令列工具

  3. Elasticsearch 設定:使用現有的 Elasticsearch 叢集和索引,做為建立基準的依據。從 Elasticsearch 設定取得下列資訊:

    • 端點:Elasticsearch 叢集的網址。
    • 索引名稱:要搜尋的索引名稱,例如「my-data-index」
    • API 金鑰:可存取 Elasticsearch 叢集的 API 金鑰。 API 金鑰開頭必須為「ApiKey」ApiKey前置字串。
  4. 建立 Elasticsearch 搜尋範本:使用 Elasticsearch 資料來源,該資料來源會使用參照範本,傳回用於建立基準的結果資料。

透過 API 存取

按照下列操作說明,使用 Vertex AI API,以 Elasticsearch 資料來源為 Gemini 奠定基礎。

準備基礎生成要求

如要傳送文字提示詞並以 Elasticsearch 做為基礎,請將 POST 要求傳送至 Vertex AI API。您至少必須提供要求主體。請務必將以下項目改為對應的值:

  • QUERY:做為基礎的文字提示。
  • ELASTIC_SEARCH_ENDPOINT:要使用的 Elasticsearch 資源的絕對端點路徑。
  • ELASTIC_SEARCH_API_KEY:Elasticsearch 資料端點的 API 金鑰。
  • INDEX_NAME:用於基礎的 Elasticsearch 索引名稱。
  • SEARCH_TEMPLATE_NAME:用於基礎的 Elasticsearch 搜尋範本。
  • NUM_HITS:從 Elasticsearch 資料來源傳回並用於基礎的結果數量。

JSON 要求內文:

    {
      "contents": [
        {
          "role": "user",
          "parts": [
            {
              "text": "QUERY"
            }
          ]
        }
      ],
      "tools": [{
        "retrieval": {
          "externalApi": {
            "api_spec": "ELASTIC_SEARCH",
            "endpoint": "ELASTIC_SEARCH_ENDPOINT",
            "apiAuth": {
              "apiKeyConfig": {
                "apiKeyString": "ApiKey ELASTIC_SEARCH_API_KEY"
              }
            },
            "elasticSearchParams": {
              "index": "INDEX_NAME",
              "searchTemplate": "SEARCH_TEMPLATE_NAME",
              "numHits": "NUM_HITS",
            }
          }
        }
      }]
    }

如要進一步瞭解其他 API 欄位,例如系統指令和多輪對話,請參閱生成式 AI 初學者指南

傳送 API 要求

您可以將要求主體儲存在名為 request.json 的檔案中。 接著執行 POST API 要求,並進行下列替換:

  • LOCATION:處理要求的區域。如要進一步瞭解可用的位置,請參閱「Vertex AI 的生成式 AI 位置」。
  • PROJECT_ID:您的 Google Cloud 專案 ID。如要進一步瞭解專案 ID,請參閱「建立及管理專案」。
  • MODEL_ID:多模態模型的模型 ID。
  curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
  "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent"

您應該會收到如下的 JSON 回應:

  {
    "candidates": [
      {
        "content": {
          "role": "model",
          "parts": [
            {
              "text": "Based on the information ..."
            }
          ]
        },
        "finishReason": "STOP",
        "safetyRatings": [ "..." ],
        "groundingMetadata": {
          "groundingChunks": [
            {
              "retrievedContext": {
                "text": "ipsum lorem ..."
              }
            },
            {...},
            {...},
          ],
          "groundingSupports": [
            {
              "segment": {
                "startIndex": 25,
                "endIndex": 147,
                "text": "ipsum lorem ..."
              },
              "groundingChunkIndices": [1,2],
              "confidenceScores": [0.6626542, 0.82018316],
            },
          ],
        },
      }
    ],
  }

瞭解回覆內容

這兩個 API 的回覆都會包含 LLM 生成的文字,稱為「候選項目」。如果模型提示成功以 Elasticsearch 資料來源為依據,回覆內容就會包含依據中繼資料,指出回覆中衍生自 Elasticsearch 資料的部分。不過,這類中繼資料可能因多種原因而未提供,導致提示回應未根據中繼資料生成。這些原因包括來源關聯性偏低,或是模型回覆中資訊不完整。

輸出資料的細目如下:

  • 角色:指出已建立基準答案的傳送者。由於回覆一律包含有根據的文字,因此角色一律為 model
  • 文字:LLM 生成的依據答案。
  • 建立基準中繼資料:建立基準來源的相關資訊,包含下列元素:
    • 建立基準的區塊:Elasticsearch 索引中的結果清單,可做為答案的依據。
    • 建立基準支援:答案中特定聲明的相關資訊,可用於顯示引文:
    • 片段:模型答案中由基礎事實塊佐證的部分。
    • 基礎事實區塊索引:基礎事實區塊清單中的基礎事實區塊索引,對應這項聲明。
    • 信心分數:介於 0 到 1 之間的數字,表示聲明在所提供的基礎區塊集中,有多大程度的根據。不適用於 Gemini 2.5 Pro 和 Gemini 2.5 Flash 以上版本。

後續步驟

  • 如要瞭解如何傳送即時通訊提示要求,請參閱多輪對話
  • 如要瞭解負責任的 AI 最佳做法和 Vertex AI 的安全篩選器,請參閱「安全最佳做法」。