使用 Vertex AI Search 打造搜尋體驗時,您可以透過範例查詢集,評估自訂搜尋應用程式的搜尋結果品質。
您可以評估包含結構化、非結構化和網站資料的自訂搜尋應用程式成效。您無法評估有多個資料儲存庫的應用程式成效。
本頁說明使用評估方法評估搜尋品質的原因、時機和方式。
總覽
本節說明執行搜尋品質評估的原因和時機。 如要瞭解如何評估搜尋品質,請參閱「評估搜尋品質的程序」。
執行評估的原因
評估搜尋品質可提供指標,協助您執行下列工作:
- 從匯總層級評估搜尋引擎的成效
- 在查詢層級找出模式,瞭解排名演算法中潛在的偏誤或缺點
- 比較歷來評估結果,瞭解搜尋設定變更的影響
如需指標清單,請參閱「解讀結果」一文。
何時執行評估
Vertex AI Search 擴充了多項搜尋設定,可提升搜尋體驗。進行下列變更後,即可執行搜尋品質評估:
此外,由於搜尋行為會定期更新,因此您也可以定期執行評估測試。
關於範例查詢集
我們會使用查詢集樣本評估品質。範例查詢集必須符合指定格式,且必須包含具有下列巢狀欄位的查詢項目:
- 查詢:系統會使用查詢的搜尋結果產生評估指標,並判斷搜尋品質。Google 建議使用一組多樣化的查詢,反映使用者的搜尋模式和行為。
目標:預期會成為範例查詢搜尋結果的文件 URI。如要瞭解結構化、非結構化和網站搜尋應用程式的文件定義,請參閱「文件」一文。
將目標文件與搜尋回應中擷取的文件進行比較,即可產生成效指標。系統會使用下列兩種技術產生指標:
- 文件比對:系統會比較目標文件的 URI 與擷取文件的 URI。這會決定搜尋結果中是否包含預期文件。比較期間,評估 API 會嘗試依下列順序擷取下列欄位,並使用第一個可用值將目標與擷取的檔案比對:
- 文件定義的
structData
欄位中的cdoc_url
- 文件定義的
structData
欄位中的uri
- 文件定義的
derivedStructData
欄位中的link
- 文件定義的
derivedStructData
欄位中的url
- 文件定義的
- 頁面比對:在範例目標中加入頁碼時,評估 API 會比較頁面層級的結果。這項設定會決定搜尋回應中是否也引用目標中提及的網頁。您必須啟用擷取式答案,才能啟用網頁層級比對。評估 API 會比對搜尋結果中第一個擷取式答案的網頁。
- 文件比對:系統會比較目標文件的 URI 與擷取文件的 URI。這會決定搜尋結果中是否包含預期文件。比較期間,評估 API 會嘗試依下列順序擷取下列欄位,並使用第一個可用值將目標與擷取的檔案比對:
範例查詢集的目的
針對特定資料存放區的所有搜尋品質評估作業,使用相同的範例查詢集,可確保搜尋品質結果的測量方式一致且可靠。這也有助於建立公平且可重複執行的系統。
系統會比較每次評估的結果與每個樣本查詢的目標結果,計算出各種指標,例如召回率、準確率和正規化折扣累積收益 (NDCG)。這些量化指標可用於評估不同搜尋設定的結果排名。
配額與限制
以下限制適用於範例查詢集:
- 每個範例查詢集最多可包含 20,000 個查詢。
下列配額適用於範例查詢集:
- 每個專案最多可建立 100 個範例查詢集,每個機構最多可建立 500 個範例查詢集。
詳情請參閱「配額與限制」。
查詢集格式範例
以 JSON 格式建構查詢集時,必須符合下列結構定義。查詢集可包含多個查詢項目,每個查詢項目各有一個查詢。以換行符號分隔的 JSON (NDJSON) 格式呈現時,每個查詢項目都必須另起一行。
從 BigQuery 和 Cloud Storage 匯入
以下章節提供範例查詢集範本,可從 BigQuery 和 Cloud Storage 匯入資料。
非結構化資料
使用下列範本,以 JSON 格式草擬範例查詢檔案,評估含中繼資料的非結構化資料。
{
"queryEntry": {
"query": "SAMPLE_QUERY",
"targets": [
{
"uri": "gs://PATH/TO/CLOUD/STORAGE/LOCATION_1.docx"
},
{
"uri": "gs://PATH/TO/CLOUD/STORAGE/LOCATION_2.pdf",
"pageNumbers": [
PAGE_NUMBER_1,
PAGE_NUMBER_2
]
},
{
"uri": "CDOC_URL"
}
]
}
}
更改下列內容:
SAMPLE_QUERY
:用於測試評估搜尋品質的查詢PATH/TO/CLOUD/STORAGE/LOCATION
:預期結果所在的 Cloud Storage 位置路徑。這是文件定義derivedStructData
欄位中link
欄位的值。PAGE_NUMBER_1
:選用欄位,用於指出 PDF 檔案中預期查詢回應所在的頁碼。如果檔案有多個頁面,這項功能就非常實用。CDOC_URL
:選用欄位,用於指出 Vertex AI Search 資料存放區結構定義中文件中繼資料的自訂文件 IDcdoc_url
欄位。
結構化資料
使用下列範本,以 JSON 格式草擬範例查詢檔案,評估 BigQuery 中的結構化資料。
{
"queryEntry": {
"query": "SAMPLE_QUERY",
"targets": [
{
"uri": "CDOC_URL"
}
]
}
}
更改下列內容:
SAMPLE_QUERY
:用於測試評估搜尋品質的查詢CDOC_URL
:必要欄位,用於指出 Vertex AI Search 資料儲存庫結構定義中結構化資料欄位的自訂cdoc_url
欄位。
網站資料
使用下列範本,以 JSON 格式草擬範例查詢檔案,評估網站內容。
{
"queryEntry": {
"query": "SAMPLE_QUERY",
"targets": [
{
"uri": "WEBSITE_URL"
}
]
}
}
更改下列內容:
SAMPLE_QUERY
:用於測試評估搜尋品質的查詢WEBSITE_URL
:查詢的目標網站。
以下是採用 JSON 和 NDJSON 格式的範例查詢集:
JSON
[
{
"queryEntry": {
"query": "2018 Q4 Google revenue",
"targets": [
{
"uri": "gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/2018Q4_alphabet_earnings_release.pdf"
},
{
"uri": "gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/201802024_alphabet_10K.pdf"
}
]
}
},
{
"queryEntry": {
"query": "2019 Q4 Google revenue",
"targets": [
{
"uri": "gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/2019Q4_alphabet_earnings_release.pdf"
}
]
}
}
]
NDJSON
{"queryEntry":{"query":"2018 Q4 Google revenue","targets":[{"uri":"gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/2018Q4_alphabet_earnings_release.pdf"},{"uri":"gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/201802024_alphabet_10K.pdf"}]}}
{"queryEntry":{"query":"2019 Q4 Google revenue","targets":[{"uri":"gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/2019Q4_alphabet_earnings_release.pdf"}]}}
從本機檔案系統匯入
以下章節提供範例查詢集範本,方便您從本機檔案系統匯入。
非結構化資料
使用下列範本,以 JSON 格式草擬範例查詢檔案,評估含中繼資料的非結構化資料。
{
"inlineSource": {
"sampleQueries": [
{
"queryEntry": {
"query": "SAMPLE_QUERY",
"targets": [
{
"uri": "gs://PATH/TO/CLOUD/STORAGE/LOCATION_1.docx"
},
{
"uri": "gs://PATH/TO/CLOUD/STORAGE/LOCATION_2.pdf",
"pageNumbers": [
PAGE_NUMBER_1,
PAGE_NUMBER_2
]
},
{
"uri": "CDOC_URL"
}
]
}
}
]
}
}
更改下列內容:
SAMPLE_QUERY
:用於測試評估搜尋品質的查詢PATH/TO/CLOUD/STORAGE/LOCATION
:非結構化資料檔案的路徑,該檔案位於要查詢的 Cloud Storage 位置。這是文件定義derivedStructData
欄位中link
欄位的值。PAGE_NUMBER_1
:選用欄位,用於指出 PDF 檔案中可找到查詢所需回應的頁碼。如果檔案有多個頁面,這項功能就非常實用。CDOC_URL
:選用欄位,用於指出 Vertex AI Search 資料存放區結構定義中文件中繼資料的自訂文件 IDcdoc_url
欄位。
結構化資料
使用下列範本,以 JSON 格式草擬範例查詢檔案,評估 BigQuery 中的結構化資料。
{
"inlineSource": {
"sampleQueries": [
{
"queryEntry": {
"query": "SAMPLE_QUERY",
"targets": [
{
"uri": "CDOC_URL"
}
]
}
}
]
}
}
更改下列內容:
SAMPLE_QUERY
:用於測試評估搜尋品質的查詢CDOC_URL
:必要欄位,用於指出 Vertex AI Search 資料儲存庫結構定義中結構化資料欄位的自訂cdoc_url
欄位。
網站資料
使用下列範本,以 JSON 格式草擬範例查詢檔案,評估網站內容。
{
"inlineSource": {
"sampleQueries": [
{
"queryEntry": {
"query": "SAMPLE_QUERY",
"targets": [
{
"uri": "WEBSITE_URL"
}
]
}
}
]
}
}
更改下列內容:
SAMPLE_QUERY
:用於測試評估搜尋品質的查詢WEBSITE_URL
:查詢的目標網站。
以下是範例查詢集:
JSON
{
"inlineSource": {
"sampleQueries": [
{
"queryEntry": {
"query": "2018 Q4 Google revenue",
"targets": [
{
"uri": "gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/2018Q4_alphabet_earnings_release.pdf"
},
{
"uri": "gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/201802024_alphabet_10K.pdf"
}
]
}
},
{
"queryEntry": {
"query": "2019 Q4 Google revenue",
"targets": [
{
"uri": "gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/2019Q4_alphabet_earnings_release.pdf"
}
]
}
}
]
}
}
搜尋品質評估程序
搜尋品質評估程序如下:
以下各節將說明如何使用 REST API 方法執行這些步驟。
事前準備
建立範例查詢集
您可以建立範例查詢集,並用來評估特定資料儲存庫的搜尋回應品質。如要建立範例查詢集,請按照下列步驟操作。
REST
以下範例說明如何使用 sampleQuerySets.create
方法建立範例查詢集。
建立範例查詢集。
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/v1beta/projects/PROJECT_ID/locations/global/sampleQuerySets?sampleQuerySetId=SAMPLE_QUERY_SET_ID" \ -d '{ "displayName": "SAMPLE_QUERY_SET_DISPLAY_NAME" }'
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。SAMPLE_QUERY_SET_ID
:範例查詢集的自訂 ID。SAMPLE_QUERY_SET_DISPLAY_NAME
:範例查詢集的自訂名稱。
匯入範例查詢資料
建立範例查詢集後,請匯入範例查詢資料。 如要匯入範例查詢資料,請執行下列任一操作:
- 從 Cloud Storage 匯入:從 Cloud Storage 位置匯入 NDJSON 檔案。
- 從 BigQuery 匯入:從 BigQuery 資料表匯入 BigQuery 資料。如要從 NDJSON 檔案建立 BigQuery 資料表,請參閱「從 Cloud Storage 載入 JSON 資料」。
- 從本機檔案系統匯入:在本機檔案系統中建立範例查詢集,然後匯入。
Cloud Storage
建立符合範例查詢集格式的範例查詢集。
使用
sampleQueries.import
方法,從 Cloud Storage 位置匯入包含範例查詢集的 JSON 檔案。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/v1beta/projects/PROJECT_ID/locations/global/sampleQuerySets/SAMPLE_QUERY_SET_ID/sampleQueries:import" \ -d '{ "gcsSource": { "inputUris": ["INPUT_FILE_PATH"], }, "errorConfig": { "gcsPrefix": "ERROR_DIRECTORY" } }'
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。SAMPLE_QUERY_SET_ID
:您在建立範例查詢集時定義的範例查詢集自訂 ID。INPUT_FILE_PATH
:範例查詢集的 Cloud Storage 位置路徑。ERROR_DIRECTORY
:選用欄位,可指定 Cloud Storage 位置的路徑。發生匯入錯誤時,系統會將錯誤檔案記錄到這個位置。Google 建議將這個欄位留空或移除errorConfig
欄位,讓 Vertex AI Search 自動建立暫時位置。
使用
operations.get
方法取得長時間執行的作業 (LRO) 狀態。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_NUMBER/locations/global/sampleQuerySets/SAMPLE_QUERY_SET_ID/operations/OPERATION_ID"
BigQuery
建立符合範例查詢集格式的範例查詢集。
使用
sampleQueries.import
方法,從 BigQuery 位置匯入含有範例查詢集的 JSON 檔案。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/v1beta/projects/PROJECT_ID/locations/global/sampleQuerySets/SAMPLE_QUERY_SET_ID/sampleQueries:import" \ -d '{ "bigquerySource": { "projectId": "PROJECT_ID", "datasetId":"DATASET_ID", "tableId": "TABLE_ID" }, "errorConfig": { "gcsPrefix": "ERROR_DIRECTORY" } }'
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。SAMPLE_QUERY_SET_ID
:您在建立範例查詢集時定義的範例查詢集自訂 ID。DATASET_ID
:包含範例查詢集的 BigQuery 資料集 ID。TABLE_ID
:包含範例查詢集的 BigQuery 資料表 ID。ERROR_DIRECTORY
:選用欄位,可指定 Cloud Storage 位置的路徑。發生匯入錯誤時,系統會將錯誤檔案記錄到這個位置。Google 建議將這個欄位留空或移除 `errorConfig` 欄位,讓 Vertex AI Search 自動建立臨時位置。
使用
operations.get
方法取得長時間執行的作業 (LRO) 狀態。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_NUMBER/locations/global/sampleQuerySets/SAMPLE_QUERY_SET_ID/operations/OPERATION_ID"
本機檔案系統
建立符合範例查詢集格式的範例查詢集。
使用
sampleQueries.import
方法,從本機檔案系統位置匯入包含範例查詢集的 JSON 檔案。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/v1beta/projects/PROJECT_ID/locations/global/sampleQuerySets/SAMPLE_QUERY_SET_ID/sampleQueries:import" \ --data @PATH/TO/LOCAL/FILE.json
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。SAMPLE_QUERY_SET_ID
:您在建立範例查詢集時定義的範例查詢集自訂 ID。PATH/TO/LOCAL/FILE.json
:包含範例查詢集的 JSON 檔案路徑。
使用
operations.get
方法取得長時間執行的作業 (LRO) 狀態。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_NUMBER/locations/global/sampleQuerySets/SAMPLE_QUERY_SET_ID/operations/OPERATION_ID"
執行搜尋品質評估
將範例查詢資料匯入範例查詢集後,請按照下列步驟執行搜尋品質評估。
REST
啟動搜尋品質評估。
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/v1beta/projects/PROJECT_ID/locations/global/evaluations" \ -d '{ "evaluationSpec": { "querySetSpec": { "sampleQuerySet": "projects/PROJECT_ID/locations/global/sampleQuerySets/SAMPLE_QUERY_SET_ID" }, "searchRequest": { "servingConfig": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search" } } }'
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。SAMPLE_QUERY_SET_ID
:您在建立範例查詢集時定義的範例查詢集自訂 ID。- :要評估搜尋品質的 Vertex AI Search 應用程式 ID。
APP_ID
監控評估進度。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/evaluations/EVALUATION_ID"
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。EVALUATION_ID
:評估工作的 ID。您在啟動評估時,上一個步驟會傳回這個 ID。
擷取匯總結果。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/evaluations/EVALUATION_ID"
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。EVALUATION_ID
:評估工作的 ID。您在啟動評估時,上一個步驟會傳回這個 ID。
擷取查詢層級結果。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/evaluations/EVALUATION_ID:listResults"
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。EVALUATION_ID
:評估工作的 ID。您在啟動評估時,上一個步驟會傳回這個 ID。
解讀結果
下表說明評估結果中傳回的指標。
名稱 | 說明 | 需求條件 |
---|---|---|
docRecall |
各文件的召回率,以及各種 top-k 截斷層級。 召回率是指從所有相關文件中檢索到的相關文件比例。
舉例來說, 以單一查詢為例,如果前 5 個結果中有 3 個是相關文件,則 |
範例查詢必須包含 URI 欄位。 |
pageRecall |
各網頁的召回率,以及各種 top-k 截斷層級。 召回率是指系統從所有相關網頁中擷取的相關網頁比例。
舉例來說, 如果某次查詢在排名前 5 的結果中,擷取了 3 個相關網頁,則 |
|
docNdcg |
每份文件的正規化折減累計增益 (NDCG),適用於各種前 k 個截斷層級。 NDCG 會評估排名品質,並為排名較高的結果提供較高的關聯性。系統會根據標準化 CDG,計算每項查詢的 NDCG 值。 |
範例查詢必須包含 URI 欄位。 |
pageNdcg |
每個網頁的正規化折減累計增益 (NDCG),以及各種前 k 個結果的截斷層級。 NDCG 會評估排名品質,並為排名較高的結果提供較高的關聯性。系統會根據標準化 CDG,計算每項查詢的 NDCG 值。 |
|
docPrecision |
各個前 k 個截斷層級的文件精確度。 精確度是指檢索到的文件中相關文件的比例。
舉例來說, 以單一查詢為例,如果前 5 個擷取的文件中有 4 個相關,則 |
範例查詢必須包含 URI 欄位。 |
根據這些支援指標的值,您可以執行下列工作:
- 分析匯總指標:
- 檢查平均喚回度、精確度和正規化折減累計增益 (NDCG) 等整體指標。
- 這些指標可提供搜尋引擎成效的概略總覽。
- 查看查詢層級的結果:
- 深入瞭解個別查詢,找出搜尋引擎成效良好或不佳的特定領域。
- 在結果中尋找模式,瞭解排名演算法的潛在偏誤或缺點。
- 比較一段時間內的結果:
- 定期執行評估,追蹤搜尋品質的變化。
- 運用歷來資料找出趨勢,並評估您對搜尋引擎所做的任何變更帶來的影響。
後續步驟
- 使用 Cloud Scheduler 設定排定的品質評估。詳情請參閱「使用驗證搭配 HTTP 目標」。