搜尋資料物件

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

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

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

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

REST

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

  • COLLECTION_ID:集合的 ID。
  • LOCATION:您使用 Agent Platform 的區域。
  • PROJECT_ID:您的 Cloud de Confiance by S3NS 專案 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:您的 Cloud de Confiance by S3NS 專案 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)

調整搜尋準確度和效能

如果對超過 10 萬個嵌入項目的密集 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)

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

  • OR:區分大小寫的連詞運算子,可比對包含至少一個指定字詞的文件。這項規則只適用於兩個相鄰的字詞。

  • ":(雙引號) 進行詞組搜尋。

  • -:否定運算子。系統會排除含有該字詞的文件。

Agent Retrieval 文字搜尋 API 可讓您透過包含一或多個子查詢的結構化查詢,執行文字搜尋,並達成下列目標:

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

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

    • 每字詞 (不區分大小寫)

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

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

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

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

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

子查詢可分為三種類型:

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

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

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

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

ID 標題 說明 關鍵字
1 The Quick Brown Fox 敏捷的棕色狐狸輕鬆跳過懶狗。 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
2 Lazy Dog Days 棕色狗在睡覺。 家畜, 寵物, 房子, 犬科動物, 平靜, 懶惰, 聽話
3 狐狸與狗 敏捷的狐狸智取懶狗。 野生、家養、衝突、犬形類、哺乳動物、互動
4 棕熊 在森林中快速移動。 野生、森林、熊科、頂級掠食者、休眠、巨大
5 A foxy story 狗跳得很高。 cunning、jumps
6 My Lazy Days of Summer 一篇關於暑假放鬆的短篇故事。 夏天、放鬆、度假、太陽

文字子查詢

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

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

"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 敏捷的棕色狐狸輕鬆跳過懶狗。 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者

查詢強化功能

搜尋查詢可包含選用的 queryEnhancement 參數,指定語言專屬的強化功能。包括同義字、詞幹 (例如「跳」的詞幹「跳躍」)、錯別字和停用字詞 (例如「一」、「一個」和「該」)。

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

  • 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 敏捷的棕色狐狸輕鬆跳過懶狗。 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
0.3419 5 A foxy story 狗跳得很高。 cunning、jumps

如果未指定 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 敏捷的棕色狐狸輕鬆跳過懶狗。 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者

如果文字子查詢有多個要比對的欄位,系統會套用隱含的 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 敏捷的棕色狐狸輕鬆跳過懶狗。 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
5.0587 4 棕熊 在森林中快速移動。 野生、森林、熊科、頂級掠食者、休眠、巨大

Disjunction (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 敏捷的棕色狐狸輕鬆跳過懶狗。 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
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" ]
              }
            }
          }
        }
      ]
    }
  }
}

前例等同於:(不分大小寫的 Fox 位於 Title OR 不分大小寫的 jumps 位於 Description) AND NOT 不分大小寫的 domestic 位於任何 Keywords 元素中。

下表顯示查詢結果:

分數 ID 標題 說明 關鍵字
3.5178 1 The Quick Brown Fox 敏捷的棕色狐狸輕鬆跳過懶狗。 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
2.2589 5 A foxy story 狗跳得很高。 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 My Lazy Days of Summer 一篇關於暑假放鬆的短篇故事。 夏天、放鬆、度假、太陽

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

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

"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 敏捷的棕色狐狸輕鬆跳過懶狗。 野生, 森林, 哺乳類動物, 橘色, 敏捷, 掠食者
1.2589 5 A foxy story 狗跳得很高。 cunning、jumps

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

使用 batch_search_data_objects 並行執行多項搜尋 (向量搜尋、文字搜尋和語意搜尋)。您也可以選擇使用 ReciprocalRankFusion Ranker 合併結果並排名,這項工具會使用倒數排名融合 (RFF) 演算法合併結果集。