使用 Elasticsearch 建立基準

本頁面說明如何使用 Elasticsearch 執行個體,以便在資料上建立索引。

使用 Elasticsearch 建立 Gemini 基準

Grounding 是指使用公開和私人資料集,為大型語言模型 (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 的「Create prompt」頁面。

    前往「建立提示」

  2. 如要將資料接地,請在「設定」面板中按一下「接地:您的資料」切換鈕。

  3. 在「Customize Grounding」窗格中,選取「Elasticsearch」

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

  5. 在「Elasticsearch API Key」欄位中輸入 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
  4. 建立 Elasticsearch 搜尋範本:使用 Elasticsearch 資料來源,該資料來源會使用參考範本,以便傳回結果資料以建立基準。

透過 API 存取

請按照下列操作說明,使用 Vertex AI API 將 Gemini 與 Elasticsearch 資料來源連結。

準備具備基礎的產生要求

如要傳送文字提示並透過 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
  • 文字:大型語言模型產生的有依據答案。
  • 基準中繼資料:基準來源資訊,包含下列元素:
    • Grounding chunks:Elasticsearch 索引中支援答案的結果清單。
    • 建立基準功能支援:回覆中特定主張的資訊,可用於顯示參考資料:
    • 區段:模型答案中由基礎片段證實的部分。
    • Grounding chunk index:對應至此憑證的 grounding chunks 清單中的 grounding chunks 索引。
    • 信心分數:介於 0 到 1 之間的數字,表示在提供的基準片段集合中,聲明的依據程度。不適用於 Gemini 2.5 Pro 和 Gemini 2.5 Flash 以上版本。

後續步驟