搜尋資料物件

Search API 的用途是找出與指定查詢相似的資料物件,並傳回依相似度排序的結果清單。Search API 也支援篩選功能。

Search API 提供多種搜尋資料物件的方式:向量搜尋、全文搜尋和語意搜尋。此外,您也可以結合多種不同類型的搜尋,進行混合型搜尋。

向量搜尋可讓您提供自己的查詢向量。如要搜尋沒有 embedding-config 的嵌入欄位,就必須使用這個方法。如果提供多個 vector_search 欄位,系統會以相同權重合併結果。

以下範例說明如何對 ID 為 COLLECTION_ID 的集合執行向量搜尋。

REST

使用任何要求資料之前,請先修改下列項目的值:

  • COLLECTION_ID:集合 ID。
  • LOCATION:您使用 Agent Platform 的區域。
  • PROJECT_ID:您的 Google Cloud 專案 ID。

HTTP 方法和網址:

POST https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects:search

JSON 要求主體:

{
  "vector_search": {
    "search_field": "plot_embedding",
    "vector": {
      "values": [
        0.42426406871192845,
        0.565685424949238,
        0.7071067811865475
      ]
    },
    "filter": {
      "genre": {
        "$eq": "Thriller"
      }
    },
    "top_k": 5,
    "output_fields": {
      "data_fields": "*",
      "vector_fields": "*",
      "metadata_fields": "*"
    }
  }
}

請展開以下其中一個選項,以傳送要求:

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

{
  "results": [
    {
      "dataObject": {
        "name": "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/1",
        "createTime": "2026-01-31T20:05:06Z",
        "updateTime": "2026-02-02T13:59:24Z",
        "data": {
          "year": 1991,
          "title": "The Silence of the Lambs",
          "director": "Jonathan Demme",
          "genre": "Thriller"
        },
        "vectors": {
          "plot_embedding": {
            "dense": {
              "values": [
                1,
                1,
                1
              ]
            }
          },
          "sparse_embedding": {
            "sparse": {
              "values": [
                1,
                6,
                3,
                2,
                8,
                5,
                2
              ],
              "indices": [
                4065,
                13326,
                17377,
                25918,
                28105,
                32683,
                42998
              ]
            }
          },
          "genre_embedding": {
            "dense": {
              "values": [
                0.3863801,
                0.73934346,
                0.16189057,
                0.5271367
              ]
            }
          },
          "soundtrack_embedding": {
            "dense": {
              "values": [
                0.5920452,
                0.08301644,
                0.12647335,
                0.619643,
                0.49258286
              ]
            }
          }
        }
      },
      "distance": 1.697
    },
    {
      "dataObject": {
        "name": "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/2",
        "createTime": "2026-02-04T14:35:29Z",
        "updateTime": "2026-02-04T14:37:29Z",
        "data": {
          "year": 1995,
          "title": "Se7en",
          "director": "David Fincher",
          "genre": "Thriller"
        },
        "vectors": {
          "genre_embedding": {
            "dense": {
              "values": [
                0.3863801,
                0.73934346,
                0.16189057,
                0.5271367
              ]
            }
          },
          "plot_embedding": {
            "dense": {
              "values": [
                1,
                1,
                1
              ]
            }
          },
          "sparse_embedding": {
            "sparse": {
              "values": [
                1,
                6,
                3,
                2,
                8,
                5,
                2
              ],
              "indices": [
                4065,
                13326,
                17377,
                25918,
                28105,
                32683,
                42998
              ]
            }
          },
          "soundtrack_embedding": {
            "dense": {
              "values": [
                0.5920452,
                0.08301644,
                0.12647335,
                0.619643,
                0.49258286
              ]
            }
          }
        }
      },
      "distance": 1.75
    }
  ]
}

gcloud

使用下列任何指令資料前,請先替換以下項目:

  • SEARCH_VECTOR_FILE:JSON 檔案的本機路徑,內含要搜尋的密集或稀疏向量。

    密集向量的檔案內容範例:

    {
      "dense": {
        "values": [
          0.42426406871192845,
          0.565685424949238,
          0.7071067811865475
        ]
      }
    }

    稀疏向量的檔案內容範例:

    {
      "sparse": {
        "indices": [1, 5, 10],
        "values": [0.1, 0.5, 0.21]
      }
    }
  • COLLECTION_ID:集合 ID。
  • LOCATION:您使用 Agent Platform 的區域。
  • PROJECT_ID:您的 Google Cloud 專案 ID。

執行下列指令:

Linux、macOS 或 Cloud Shell

gcloud vector-search collections data-objects search \
  --vector-search-field="plot_embedding" \
  --vector-from-file=SEARCH_VECTOR_FILE \
  --json-filter='{"genre": {"$eq": "Thriller"}}' \
  --top-k=5 \
  --output-data-fields='*' \
  --output-vector-fields='*' \
  --output-metadata-fields='*' \
  --collection=COLLECTION_ID \
  --location=LOCATION \
  --project=PROJECT_ID

Windows (PowerShell)

gcloud vector-search collections data-objects search `
  --vector-search-field="plot_embedding" `
  --vector-from-file=SEARCH_VECTOR_FILE `
  --json-filter='{"genre": {"$eq": "Thriller"}}' `
  --top-k=5 `
  --output-data-fields='*' `
  --output-vector-fields='*' `
  --output-metadata-fields='*' `
  --collection=COLLECTION_ID `
  --location=LOCATION `
  --project=PROJECT_ID

Windows (cmd.exe)

gcloud vector-search collections data-objects search ^
  --vector-search-field="plot_embedding" ^
  --vector-from-file=SEARCH_VECTOR_FILE ^
  --json-filter='{"genre": {"$eq": "Thriller"}}' ^
  --top-k=5 ^
  --output-data-fields='*' ^
  --output-vector-fields='*' ^
  --output-metadata-fields='*' ^
  --collection=COLLECTION_ID ^
  --location=LOCATION ^
  --project=PROJECT_ID

您應該會收到類似以下的回應:

---
dataObject:
  createTime: '2026-01-31T20:05:06Z'
  data:
    director: Jonathan Demme
    genre: Thriller
    title: The Silence of the Lambs
    year: 1991
  name: projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/1
  updateTime: '2026-02-02T13:59:24Z'
  vectors:
    genre_embedding:
      dense:
        values:
        - 0.38638
        - 0.739343
        - 0.161891
        - 0.527137
    plot_embedding:
      dense:
        values:
        - 1.0
        - 1.0
        - 1.0
    soundtrack_embedding:
      dense:
        values:
        - 0.592045
        - 0.0830164
        - 0.126473
        - 0.619643
        - 0.492583
    sparse_embedding:
      sparse:
        indices:
        - 4065
        - 13326
        - 17377
        - 25918
        - 28105
        - 32683
        - 42998
        values:
        - 1.0
        - 6.0
        - 3.0
        - 2.0
        - 8.0
        - 5.0
        - 2.0
distance: 1.697
---
dataObject:
  createTime: '2026-02-04T14:35:29Z'
  data:
    director: David Fincher
    genre: Thriller
    title: Se7en
    year: 1995
  name: projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/2
  updateTime: '2026-02-04T14:37:29Z'
  vectors:
    genre_embedding:
      dense:
        values:
        - 0.38638
        - 0.739343
        - 0.161891
        - 0.527137
    plot_embedding:
      dense:
        values:
        - 1.0
        - 1.0
        - 1.0
    soundtrack_embedding:
      dense:
        values:
        - 0.592045
        - 0.0830164
        - 0.126473
        - 0.619643
        - 0.492583
    sparse_embedding:
      sparse:
        indices:
        - 4065
        - 13326
        - 17377
        - 25918
        - 28105
        - 32683
        - 42998
        values:
        - 1.0
        - 6.0
        - 3.0
        - 2.0
        - 8.0
        - 5.0
        - 2.0
distance: 1.75

Python

from google.cloud import vectorsearch_v1

# Create the client
data_object_search_service_client = vectorsearch_v1.DataObjectSearchServiceClient()

# Initialize request
vector_search = vectorsearch_v1.VectorSearch(
    search_field="plot_embedding",
    vector={"values": [0.1, 0.2, 0.3]},
    filter={"genre": {"$eq": "Thriller"}},
    top_k=5,
)
request = vectorsearch_v1.SearchDataObjectsRequest(
    parent="projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID",
    vector_search=vector_search,
)

# Make the request
response = data_object_search_service_client.search_data_objects(request=request)

# Handle the response
print(response)

調整搜尋準確度和效能

如果對嵌入數量超過 100,000 個的密集 ANN 索引執行向量搜尋,Agent Retrieval 預設會嘗試在喚回度和延遲時間之間取得最佳平衡。您可以指定目標喚回度,根據用途調整這項平衡。

值必須大於或等於 0.00,且小於或等於 1.00。

如要瞭解如何建立 ANN 索引,請參閱「建立 ANN 索引」。

以下範例說明如何對密集 ANN 索引執行向量搜尋,目標喚回度為 0.95。

REST

HTTP 方法和網址:

POST https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects:search

JSON 要求主體:

{
  "vectorSearch": {
    "searchField": "plot_embedding",
    "vector": {
      "values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]
    },
    "topK": 10,
    "searchHint": {
      "indexHint": {
        "name": "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/indexes/INDEX_ID",
        "denseScannParams": {
          "targetRecall": 0.95
        }
      }
    },
    "outputFields": {
      "dataFields": "*",
      "vectorFields": "*",
      "metadataFields": "*"
    }
  }
}

gcloud

將查詢向量儲存至 JSON 檔案,例如 vector.json:

{
  "dense": {
    "values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]
  }
}

然後執行 gcloud vector-search collections data-objects search 指令:

gcloud vector-search collections data-objects search \
    --project=PROJECT_ID \
    --location=LOCATION \
    --collection=COLLECTION_ID \
    --vector-search-field=plot_embedding \
    --vector-from-file=vector.json \
    --use-index=INDEX_ID \
    --dense-scann-target-recall=0.95 \
    --top-k=10

Python

from google.cloud import vectorsearch_v1

# Create the client
data_object_search_service_client = vectorsearch_v1.DataObjectSearchServiceClient()

collection = "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID"

# Set the target recall rate on the index hint
search_hint = vectorsearch_v1.SearchHint(
    index_hint=vectorsearch_v1.SearchHint.IndexHint(
        name=f"{collection}/indexes/INDEX_ID",
        dense_scann_params=vectorsearch_v1.SearchHint.IndexHint.DenseScannParams(
            target_recall=0.95,
        ),
    ),
)

# Initialize request
vector_search = vectorsearch_v1.VectorSearch(
    search_field="plot_embedding",
    vector={"values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]},
    top_k=10,
    search_hint=search_hint,
    output_fields=vectorsearch_v1.OutputFields(
        data_fields=["*"],
        vector_fields=["*"],
        metadata_fields=["*"],
    ),
)
request = vectorsearch_v1.SearchDataObjectsRequest(
    parent=collection,
    vector_search=vector_search,
)

# Make the request
response = data_object_search_service_client.search_data_objects(request=request)

# Handle the response
print(response)

這項作業會執行全文搜尋,不使用稀疏向量。預設的「word」查詢方言會將整個輸入內容視為個別搜尋字詞,並隱含 AND 運算子。您可以將 enhanced_query 設為 true,展開搜尋字詞、處理詞幹、移除停用詞,並允許其他搜尋運算子:

  • OR:區分大小寫的分離運算子,會比對至少包含一個指定字詞的文件。僅適用於兩個相鄰的字詞。

  • ":(雙引號) 用於詞組搜尋。

  • -:否定運算子。排除含有前置字詞的文件。

Agent Retrieval 文字搜尋 API 可讓您透過結構化查詢 (包含一或多個子查詢) 執行文字搜尋,以便:

  • 比對特定資料物件欄位。

  • 指定要執行的比對類型:

    • 每個字詞,不區分大小寫

    • 完全相符 (區分大小寫)

  • 加入各語言的強化功能,比對詞幹、同義詞、錯別字和停用詞 (例如「a」、「an」和「the」)。

  • 使用 AND、OR 和 NOT 布林運算子合併子查詢。

  • 將子查詢分組,控制評估順序。

  • 提高分數貢獻度,影響排名。

子查詢有三種類型:

  • Text:提供搜尋文字和一或多個要比對的欄位。

  • 一元:對單一子查詢套用 NOT 運算。

  • 合併:套用 AND 或 OR 運算子來合併子查詢,並可用於分組其他合併子查詢,以控制評估順序。

本頁範例使用下表所示的集合。其中包含六個資料物件,並在資料架構中定義下列欄位:字串 ID、Title、Description 和字串陣列 Keywords。

ID 標題 說明 關鍵字
1 The Quick Brown Fox A quick brown fox easily jumps over the lazy dog. 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
2 慵懶狗日子 棕色的狗在睡覺。 家犬, 寵物, 房屋, 犬科, 平靜, 慵懶, 聽話
3 狐狸與狗 機靈的狐狸比狗聰明。 野生、家養、衝突、犬形亞目、哺乳動物、互動
4 棕熊 在森林中快速移動。 野生、森林、熊科、頂級掠食者、冬眠、巨大
5 狐狸的故事 狗跳得很高。 cunning、jumps
6 我的慵懶夏日 一篇關於暑假放鬆的短篇故事。 夏天、放鬆、度假、太陽

文字子查詢

文字查詢會與資料物件中的一或多個欄位進行比對。所有結構化查詢都必須包含至少一個文字查詢。

以下範例定義了基本文字查詢:

"text_search": {
  "structured_query": {
    "text": {
      "text": "fox vs dog"
    }
  }
}

根據預設,文字會分割成個別字詞,並在指定欄位中搜尋每個字詞。在上述範例中,系統會在 Title 欄位中搜尋「fox」、「vs」和「dog」等字詞。

文字查詢有下列選用參數:

  • fields:要比對的欄位陣列。如未指定,預設會比對所有欄位。欄位會與隱含的 OR 運算子比對。

  • match_type:要執行的比對類型。比對類型可以是 EXACT,指定欄位必須與搜尋文字完全相符。如果欄位是字串陣列,系統會比對陣列中的任何元素。

  • enhancement:指定 enabled 和 languageCode,允許針對 languageCode 指定語言 (例如 en-US) 的同義詞、詞幹、拼寫錯誤和停用詞進行比對。預設為不強化。

  • boost:選用。要套用至查詢分數的調節係數。預設值為 1.0。

比對類型

match_type 參數會指定搜尋文字與欄位值的比對方式。

參數值可以是:

  • EXACT:欄位必須與查詢字詞完全相符。如果欄位是字串陣列,系統會比對陣列中的任何元素。

以下範例指定 EXACT 比對類型:

"text_search": {
  "structured_query": {
    "text": {
      "text": "Fox vs Dog",
      "fields": [ "Title" ],
      "match_type": "EXACT"
    }
  }
}

字串陣列的比對類型

查詢結果如下表所示:

分數 ID 標題 說明 關鍵字
1.0000 3 狐狸與狗 機靈的狐狸比狗聰明。 野生、國內、衝突、犬形亞目、哺乳動物、互動

如果欄位是字串陣列,系統會比對搜尋文字與任何陣列元素。

以下範例說明如何在 Keywords 字串陣列中搜尋確切文字 wild:

"text_search": {
  "structured_query": {
    "text": {
      "text": "wild",
      "fields": [ "Keywords" ],
      "match_type": "EXACT"
    }
  }
}

查詢結果如下表所示:

分數 ID 標題 說明 關鍵字
1.0000 3 狐狸與狗 機靈的狐狸比狗聰明。 野生、家養、衝突、犬形亞目、哺乳動物、互動
1.0000 4 棕熊 在森林中快速移動。 野生、森林、熊科、頂級掠食者、冬眠、巨大
1.0000 1 The Quick Brown Fox A quick brown fox easily jumps over the lazy dog. 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者

查詢強化功能

搜尋查詢可包含選用的 queryEnhancement 參數,用於指定特定語言的強化功能。包括比對同義詞、詞幹 (例如「jump」的詞幹「jumping」)、拼寫錯誤和停用詞 (例如「a」、「an」和「the」)。

參數是具有下列屬性的物件:

  • enabled:布林值,指定是否啟用強化功能。

  • languageCode:指定強化功能的語言字串 (例如 en-US)。

以下範例會啟用 en-US 語言的強化功能:

"text_search": {
  "structured_query": {
    "text": {
      "text": {
        "text": "jump",
        "fields": [ "Description" ],
        "queryEnhancement": {
          "enabled": true,
          "languageCode": "en-US"
        }
      }
    }
  }
}

查詢結果如下表所示:

分數 ID 標題 說明 關鍵字
0.3419 1 The Quick Brown Fox A quick brown fox easily jumps over the lazy dog. 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
0.3419 5 狐狸的故事 狗跳得很高。 狡猾、跳躍

如果未指定 queryEnhancement,或 enabled 為 false,則不會進行比對。

合併子查詢

合併查詢會對兩個以上的子查詢套用布林運算。支援的操作為 AND 和 OR。

合併查詢具有下列屬性:

  • op:要套用至子查詢的布林運算子。可能的值為 AND 或 OR。

  • subQueries:要合併的子查詢陣列。這些子查詢可以是任何支援的子查詢類型,包括其他組合查詢。巢狀結構深度上限為 2。

    • boost:選用。要套用至查詢分數的調節係數。預設值為 1.0。

合相 (AND)

AND 運算子會比對包含所有子查詢字詞的資料物件。

以下範例說明如何使用 AND 運算子,合併三個文字查詢:

"text_search": {
  "structured_query": {
    "combine": {
      "op": "AND",
      "subQueries": [
        {
          "text": {
            "text": "Brown",
            "fields": [ "Title" ]
          }
        },
        {
          "text": {
            "text": "quick",
            "fields": [ "Description" ]
          }
        },
        {
          "text": {
            "text": "forest predator",
            "fields": [ "Keywords" ]
          }
        }
      ]
    }
  }
}

在範例中,只有在三個子查詢都相符時,系統才會進行比對。

查詢結果如下表所示:

分數 ID 標題 說明 關鍵字
5.0587 4 棕熊 在森林中快速移動。 野生、森林、熊科、頂級掠食者、冬眠、巨大
5.0587 1 The Quick Brown Fox A quick brown fox easily jumps over the lazy dog. 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者

當文字子查詢有多個要比對的欄位時,系統會套用隱含的 OR,如以下範例所示:

"text_search": {
  "structured_query": {
    "combine": {
      "op": "AND",
      "subQueries": [
        {
          "text": {
            "text": "Brown",
            "fields": [ "Title", "Description" ]
          }
        },
        {
          "text": {
            "text": "quick",
            "fields": [ "Description" ]
          }
        },
        {
          "text": {
            "text": "forest predator",
            "fields": [ "Keywords" ]
          }
        }
      ]
    }
  }
}

在上述範例中:

  • 第一個子查詢會比對 Title 或 Description 欄位中不區分大小寫的字詞 Brown。

  • 第二個子查詢會比對 Description 欄位中不區分大小寫的字詞 quick。

  • 第三個子查詢會比對 Keywords 字串陣列欄位中任何值的不區分大小寫字詞 forest 和 predator。

  • 如果三個子查詢都相符,則合併查詢會比對成功。

查詢結果如下表所示:

分數 ID 標題 說明 關鍵字
6.3176 1 The Quick Brown Fox A quick brown fox easily jumps over the lazy dog. 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
5.0587 4 棕熊 在森林中快速移動。 野生、森林、熊科、頂級掠食者、冬眠、巨大

析取 (OR)

OR 運算子會比對至少包含一個子查詢字詞的資料物件。

以下範例說明如何使用 OR 運算子合併三個文字查詢:

"text_search": {
  "structured_query": {
    "combine": {
      "op": "OR",
      "subQueries": [
        {
          "text": {
            "text": "Brown",
            "fields": [ "Title", "Description" ]
          }
        },
        {
          "text": {
            "text": "quick",
            "fields": [ "Description" ]
          }
        },
        {
          "text": {
            "text": "forest predator",
            "fields": [ "Keywords" ]
          }
        }
      ]
    }
  }
}

在範例中,只要三個子查詢有任一相符,即視為相符。

查詢結果如下表所示:

分數 ID 標題 說明 關鍵字
6.3176 1 The Quick Brown Fox A quick brown fox easily jumps over the lazy dog. 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
5.0587 4 棕熊 在森林中快速移動。 野生、森林、熊科、頂級掠食者、冬眠、巨大

分組

合併子查詢可以巢狀結構嵌入其他合併子查詢,以便控制評估順序。

以下範例說明如何將子查詢分組:

"text_search": {
  "structured_query": {
    "combine": {
      "op": "AND",
      "subQueries": [
        {
          "combine": {
            "op": "OR",
            "subQueries": [
              {
                "text": {
                  "text": "Fox",
                  "fields": [ "Title" ]
                }
              },
              {
                "text": {
                  "text": "jumps",
                  "fields": [ "Description" ]
                }
              }
            ]
          }
        },
        {
          "unary": {
            "op": "NOT",
            "subQuery": {
              "text": {
                "text": "domestic",
                "fields": [ "Keywords" ]
              }
            }
          }
        }
      ]
    }
  }
}

上述範例等同於: (Title 中不區分大小寫的 Fox「或」Description 中不區分大小寫的 jumps)「且非」任何 Keywords 元素中不區分大小寫的 domestic。

下表顯示查詢結果:

分數 ID 標題 說明 關鍵字
3.5178 1 The Quick Brown Fox A quick brown fox easily jumps over the lazy dog. 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
2.2589 5 狐狸的故事 狗跳得很高。 cunning、jumps

一元子查詢

一元子查詢會將布林運算套用至結構化查詢中的單一子查詢。NOT 運算子是唯一支援的一元運算。

一元查詢具有下列屬性:

  • op:要套用至子查詢的布林運算子。值可以是 NOT。

  • subQuery:要套用一元運算的子查詢。

    • boost:選用。要套用至查詢分數的調節係數。預設值為 1.0。

否定 (NOT)

NOT 運算子會比對不含子查詢字詞的資料物件。

以下範例說明如何使用 NOT 運算子:

"text_search": {
  "structured_query": {
    "unary": {
      "op": "NOT",
      "subQuery": {
        "text": {
          "text": "dog",
          "fields": [ "Description" ]
        }
      }
    }
  }
}

查詢結果如下表所示:

分數 ID 標題 說明 關鍵字
1.000 4 棕熊 在森林中快速移動。 野生、森林、熊科、頂級掠食者、冬眠、巨大
1.000 6 我的慵懶夏日 一篇關於暑假放鬆的短篇故事。 夏天、放鬆、度假、太陽

如果將 NOT 運算子套用至字串陣列,且陣列中任何元素都不含該字詞,則運算子會比對資料物件。

在範例中,如果 Keywords 字串陣列的任何元素不含不區分大小寫的字詞 orange,就會比對成功。

"text_search": {
  "structured_query": {
    "combine": {
      "op": "AND",
      "subQueries": [
        {
          "text": {
            "text": "Brown",
            "fields": [ "Title" ]
          }
        },
        {
          "text": {
            "text": "quick",
            "fields": [ "Description" ]
          }
        },
        {
          "text": {
            "text": "forest predator",
            "fields": [ "Keywords" ]
          }
        },
        {
          "unary": {
            "op": "NOT",
            "subQuery": {
              "text": {
                "text": "orange",
                "fields": [ "Keywords" ]
              }
            }
          }
        }
      ]
    }
  }
}

查詢結果如下表所示:

分數 ID 標題 說明 關鍵字
6.0587 4 棕熊 在森林中快速移動。 野生、森林、熊科、頂級掠食者、冬眠、巨大

增強

任何子查詢都可以使用 boost 參數,將調節係數套用至子查詢的分數。根據預設,所有子查詢的 boost 都是 1.0。

以下範例說明如何提高子查詢:

"text_search": {
  "structured_query": {
    "combine": {
      "op": "OR",
      "subQueries": [
        {
          "text": {
            "text": "fox",
            "fields": [ "Title" ]
          },
          "boost": 1.0
        },
        {
          "text": {
            "text": "jumps",
            "fields": [ "Description" ]
          },
          "boost": 1.0
        },
        {
          "text": {
            "text": "interaction",
            "fields": [ "Keywords" ]
          },
          "boost": 5.0
        }
      ]
    }
  }
}

查詢結果如下表所示:

分數 ID 標題 說明 關鍵字
7.5534 3 狐狸與狗 機靈的狐狸比狗聰明。 野生、家養、衝突、犬形亞目、哺乳動物、互動
2.5178 1 The Quick Brown Fox A quick brown fox easily jumps over the lazy dog. 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
1.2589 5 狐狸的故事 狗跳得很高。 cunning、jumps

這項搜尋會將文字查詢轉換為嵌入,根據語意找出結果。系統會使用結構定義中定義的 embedding-config 生成查詢嵌入。如果提供多個 vector_search 欄位,系統會使用相同權重合併結果。

使用 batch_search_data_objects 同時執行多項搜尋 (向量搜尋、Text Search 和語意搜尋)。您也可以使用 ReciprocalRankFusion 排序器合併結果並排序,該排序器會使用倒數排名融合 (RFF) 演算法合併結果集。