使用 Elasticsearch 建立基準

本頁說明如何使用 Elasticsearch 執行個體,根據您的資料提供回應。

使用 Elasticsearch 建立 Gemini 基準

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

  • 生成式搜尋摘要
  • 使用企業資料的問答聊天機器人
  • 以資料為基準的代理

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

支援的模型

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

按一下即可展開支援的模型

在 Elasticsearch 中設定搜尋範本

本節說明如何使用 Elasticsearch 執行個體,根據儲存在該執行個體中的資料建立基準。

最佳做法

為取得最佳基準回覆,請在建立搜尋範本時遵循下列原則:

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

  • 建立基準時,系統會移除與提示關聯性低的 Elasticsearch 結果。您應提供更多 Elasticsearch 結果,以擷取所有相關背景資訊。

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

範例範本

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

Gemini Enterprise Agent Platform 的語意搜尋是一般 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 生成有憑有據的回覆

本節說明如何使用 Agent Platform API,根據特定資訊生成 LLM 回覆。

必要條件

您必須先完成下列事項,才能使用 Elasticsearch 建立 LLM 回覆基準:

  1. 啟用 Agent Platform API:確認專案已啟用 Agent Platform API。 Cloud de Confiance by S3NS

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

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

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

生成有憑有據的回覆

控制台

如要在 Cloud de Confiance 控制台中使用 Elasticsearch 建立基準,請按照下列步驟操作:

  1. 前往「Agent Studio」頁面。

    前往 Agent Studio

  2. 在側邊面板的「模型設定」下方,前往「基礎」部分,然後開啟「你的資料」切換按鈕。

  3. 在設定窗格中,選取「Elasticsearch」。

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

  5. 在「Elasticsearch API 金鑰」欄位中輸入 ApiKey YOUR_API_KEY。

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

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

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

  9. 按一下 [儲存]。

  10. 輸入提示詞。

  11. 按一下「提交」。

瞭解回覆內容

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

Python

安裝

pip install --upgrade google-genai

詳情請參閱 SDK 參考文件。

設定環境變數,以便透過 Vertex AI 使用 Google Gen AI SDK:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    Elasticsearch,
    Retrieval,
    Tool,
    HttpOptions,
)

client = genai.Client(http_options=HttpOptions(api_version="v1"))

# Replace with your Elasticsearch details
ELASTIC_SEARCH_ENDPOINT = "YOUR_ELASTICSEARCH_ENDPOINT"
ELASTIC_SEARCH_API_KEY = "YOUR_ELASTICSEARCH_API_KEY"
INDEX_NAME = "YOUR_INDEX_NAME"
SEARCH_TEMPLATE_NAME = "YOUR_SEARCH_TEMPLATE_NAME"
NUM_HITS = 5

tool = Tool(
    retrieval=Retrieval(
        external_api=Elasticsearch(
            api_spec="ELASTIC_SEARCH",
            endpoint=ELASTIC_SEARCH_ENDPOINT,
            api_auth={
                "apiKeyConfig": {
                    "apiKeyString": f"ApiKey {ELASTIC_SEARCH_API_KEY}"
                }
            },
            elastic_search_params={
                "index": INDEX_NAME,
                "searchTemplate": SEARCH_TEMPLATE_NAME,
                "numHits": NUM_HITS,
            },
        )
    )
)

response = client.models.generate_content(
    model="gemini-2.5-flash",  # Or another supported model
    contents="What are the main features of product X?", # Your query
    config=GenerateContentConfig(
        tools=[tool],
    ),
)

print(response.text)

REST

如要傳送文字提示詞,並使用 Elasticsearch 建立基準,請傳送 POST 要求至 Agent Platform API。您至少必須提供要求主體。請務必修改下列項目的值:

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

    HTTP 方法和網址:

    POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent
    

    JSON 要求主體:

      {
        "contents": [
          {
            "role": "user",
            "parts": [
              {
                "text": "PROMPT"
              }
            ]
          }
        ],
        "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:處理要求的區域。如要使用全域端點,請從端點名稱中排除位置,並將資源位置設為 global。
  • PROJECT_ID:您的 Cloud de Confiance by S3NS 專案 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 技術的最佳做法和 Agent Platform 的安全篩選器,請參閱「安全最佳做法」。