在 Vertex AI Search 應用程式中搜尋時,您可以指定文件層級的關聯性篩選條件,這樣系統只會傳回符合篩選條件門檻的文件。本頁面說明門檻類型、門檻最佳化的重要性,以及如何指定相關性篩選條件和門檻。
依文件層級關聯性篩選簡介
搜尋查詢傳回結果時,系統會為每個擷取的文件指派關聯程度。在搜尋要求中,您可以設定門檻,只傳回符合篩選門檻的文件。設定較高的門檻可減少查詢傳回的文件數量。但如果門檻設得太低,結果可能會出現與使用者查詢內容關聯性不高的文件。
因此,如果發現結果包含太多與使用者關聯性不足的文件,請設定較高的關聯性門檻,將結果縮減為最相關的少數文件。如果高閾值過於嚴格,可以調低至較合適的值。
搜尋類型
您可以對下列類型的搜尋套用相關性篩選器:
- 關鍵字搜尋:根據關鍵字搜尋檢索文件。
- 語意相似度搜尋:根據嵌入檢索文件。
在關聯性篩選器定義中,您可以為每項搜尋指定閾值類型。搜尋會擷取指定搜尋的文件,然後套用指定門檻。
閾值類型
傳送搜尋要求時,您可以為關鍵字和語意相似度搜尋指定下列其中一種門檻。
關聯性門檻:設定這個門檻後,搜尋功能會使用專屬模型判斷文件關聯性。在這種情況下,搜尋可能會使用任何相關信號,例如關鍵字相似度分數、主題性分數和語意相似度分數。
關聯性門檻是粗略的設定,允許下列值:
HIGH、MEDIUM、LOW和LOWEST。HIGH門檻可能會傳回較少高相關分數的文件,而LOWEST門檻可能會傳回更多與搜尋查詢不相關的文件。語意關聯性門檻:設定這個門檻後,篩選器只會根據語意相似度分數判斷文件關聯性。
語意關聯性門檻是精細的設定,也是介於 0 到 1 之間的浮點值。將門檻設為零會傳回所有文件,設為一則會傳回最相關的文件。
關聯性篩選器定義和範例
如要在搜尋要求中定義相關性篩選器,請為每種搜尋類型 (關鍵字搜尋和語意搜尋) 指定一種門檻 (相關性門檻和語意相關性門檻)。您可以在相關性篩選器規格中指定其中一種或兩種搜尋類型。不過,每種搜尋類型只能定義一種門檻。舉例來說,你可以嘗試下列做法:
{
"relevanceFilterSpec": {
"keywordSearchThreshold": {
"relevanceThreshold": "LOW"
},
"semanticSearchThreshold": {
"semanticRelevanceThreshold": 0.871
}
}
}
在這項搜尋要求中,結果會分兩個階段傳回:擷取和篩選。
- 搜尋作業會根據關鍵字比對結果擷取文件,然後以低相關性門檻篩選文件。這會傳回大量擷取的文件。
- 同時,搜尋功能會根據語意相似度擷取文件,然後以
0.871的高語意相關性門檻篩選文件。這樣一來,系統傳回的擷取文件就會比較少。
搜尋重點在於關鍵字比對,而非語意相似度。 篩選器會允許更多因關鍵字比對而擷取的文件。
同樣地,您可以按照下列方式定義關聯性篩選器,傳回較少含有相符關鍵字的文件,以及較多含有語意相似性的文件。
"relevanceFilterSpec": {
"keywordSearchThreshold": {
"semanticRelevanceThreshold": 0.871
},
"semanticSearchThreshold": {
"relevanceThreshold": "LOW"
}
}
文件層級關聯性篩選器支援的資料類型和應用程式
文件層級關聯性篩選器可套用至含有下列類型資料的資料庫:
- 具備進階網站索引建立功能的網站資料
- 自訂非結構化資料
- 自訂結構化資料
文件層級相關性篩選器不適用於具有基本網站索引、媒體資料或醫療保健資料的資料存放區。
此外,文件層級相關性篩選器不適用於混合搜尋應用程式。混合搜尋應用程式是指連結至多個資料儲存庫的應用程式。
其他類型的篩選器
文件層級相關性篩選條件並非篩選查詢傳回資料的唯一方式。您也可以使用篩選運算式,根據中繼資料 (在進階網站索引和含中繼資料的非結構化資料儲存庫中) 和欄位值 (在結構化資料儲存庫中) 篩選結果。
詳情請參閱:
如果同時使用篩選運算式和文件層級關聯性篩選器,系統會先對結果套用篩選運算式,然後再套用文件層級關聯性篩選器。
事前準備
請確認您已建立應用程式和資料儲存庫,並將資料擷取至資料儲存庫。詳情請參閱「建立搜尋應用程式」。另請參閱「文件層級相關性篩選器支援的資料類型和應用程式」。
依文件層級關聯性搜尋及篩選結果
如要依相關性篩選,請按照下列步驟操作:
找出應用程式 ID。如果已有應用程式 ID,請跳到下一個步驟。
前往 Google Cloud 控制台的「AI Applications」頁面。
在「應用程式」頁面中找出應用程式名稱,然後從「ID」欄取得應用程式的 ID。
如要依文件層級相關性篩選搜尋結果,請使用
engines.servingConfigs.search方法,指定relevanceFilterSpec欄位,為每種搜尋類型定義一種門檻。也就是說,您可以為特定類型的搜尋指定relevanceThreshold或semanticRelevanceThreshold。curl -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "servingConfig": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search", "query": "QUERY", "relevanceFilterSpec": { "keywordSearchThreshold": { "relevanceThreshold": "RELEVANCE_THRESHOLD" }, "semanticSearchThreshold": { "semanticRelevanceThreshold": SEMANTIC_RELEVANCE_THRESHOLD } } }'更改下列內容:
PROJECT_ID: Google Cloud 專案的 ID。APP_ID:要查詢的 Vertex AI Search 應用程式 ID。QUERY:要搜尋的查詢文字。RELEVANCE_THRESHOLD:下列其中一項:HIGH、MEDIUM、LOW、LOWEST。SEMANTIC_RELEVANCE_THRESHOLD:範圍 [0,1] 中的浮點值。
使用不同門檻測試多個查詢,找出最適合資料和應用程式的門檻設定。