

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 中繼資料篩選
<a name="s3-vectors-metadata-filtering"></a>

中繼資料篩選功能可讓您根據連接至向量的特定屬性來篩選查詢結果。您可以搭配使用中繼資料篩選條件和查詢操作，以尋找同時符合相似性條件和特定中繼資料條件的向量。

S3 Vectors 支援兩種中繼資料類型：可篩選的中繼資料，和不可篩選的中繼資料。關鍵差異在於可篩選中繼資料可用於查詢篩選，但具有更嚴格的大小限制，而不可篩選的中繼資料無法用於篩選，但可以在其大小限制內存放大量資料。如需有關中繼資料限制，包括每個向量的大小限制和每個向量的中繼資料索引鍵上限的詳細資訊，請參閱 [限制](s3-vectors-limitations.md)。

S3 Vectors 會串聯執行向量搜索和篩選評估。S3 Vectors 會搜尋索引中的候選向量，尋找最 top K 相似向量，同時驗證每個候選向量是否符合中繼資料篩選條件。例如，若您搜尋相似的電影嵌入，並依 genre='mystery' 篩選，S3 Vectors 只會傳回相似電影嵌入，其中類型中繼資料符合 'mystery'。與在向量搜索後套用中繼資料篩選條件相反，此篩選方法更有可能找到相符的結果。注意：當向量索引包含極少相符結果時，具有篩選條件的查詢可能會傳回少於 top K 結果。

**Topics**
+ [可篩選的中繼資料](#s3-vectors-metadata-filtering-filterable)
+ [有效可篩選中繼資料的範例](#s3-vectors-metadata-filtering-examples)
+ [不可篩選的中繼資料](#s3-vectors-metadata-filtering-non-filterable)

## 可篩選的中繼資料
<a name="s3-vectors-metadata-filtering-filterable"></a>

可篩選的中繼資料可讓您根據特定中繼資料值篩選查詢結果。根據預設，除非在向量索引建立期間明確指定為不可篩選，否則所有中繼資料欄位都可以在相似度查詢中進行篩選。S3 Vectors 支援字串、數字、布林值，以及具每個向量大小限制的中繼資料清單類型。中繼資料類型非常適合您要篩選的屬性，例如類別、時間戳記或狀態值。

如果中繼資料大小超過支援的限制，[PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) API 操作會傳回 `400 Bad Request` 錯誤。如需有關每個向量可篩選之中繼資料大小限制的詳細資訊，請參閱 [限制](s3-vectors-limitations.md)。

下列操作可與可篩選的中繼資料搭配使用。


| 運算子 | 有效的輸入類型 | Description | 
| --- | --- | --- | 
| \$1eq | 字串、數字、布林值 | 單一值的精確比對比較。與陣列中繼資料值比較時，如果輸入值符合陣列中的任何元素，則傳回 true。例如，`{"category": {"$eq": "documentary"}}` 會比對具有中繼資料 `"category": ["documentary", "romance"]` 的向量。 | 
| \$1ne | 字串、數字、布林值 | 非等於比較 | 
| \$1gt | Number | 大於比較 | 
| \$1gte | Number | 大於或等於比較 | 
| \$1lt | Number | 小於比較 | 
| \$1lte | Number | 小於或等於比較 | 
| \$1in | 基本項目的非空白陣列 | 符合陣列中的任何值 | 
| \$1nin | 基本項目的非空白陣列 | 未符合陣列中的任何值 | 
| \$1exists | Boolean | 檢查欄位是否存在 | 
| \$1and | 非空白的篩選條件陣列 | 多條件的邏輯 AND | 
| \$1or | 非空白的篩選條件陣列 | 多條件的邏輯 OR | 

## 有效可篩選中繼資料的範例
<a name="s3-vectors-metadata-filtering-examples"></a>

**簡單相等**  

```
{"genre": "documentary"}
```
此篩選條件符合類型中繼資料索引鍵等於 "documentary" 的向量。當您未指定運算子時，S3 Vectors 會自動使用 \$1eq 運算子。

**明確相等**  

```
// Example: Exact match
{"genre": {"$eq": "documentary"}}
```

```
// Example: Not equal to
{"genre": {"$ne": "drama"}}
```

**數值比較**  

```
{"year": {"$gt": 2019}}
```

```
{"year": {"$gte": 2020}}
```

```
{"year": {"$lt": 2020}}
```

```
{"year": {"$lte": 2020}}
```

**陣列操作**  

```
{"genre": {"$in": ["comedy", "documentary"]}}
```

```
{"genre": {"$nin": ["comedy", "documentary"]}}
```

**存在檢查**  

```
{"genre": {"$exists": true}}
```
`$exists` 篩選條件會比對具有 "genre" 中繼資料索引鍵的向量，無論該中繼資料索引鍵儲存的值為何。

**邏輯運算**  

```
{"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
```

```
{"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
```

**價格範圍 (相同欄位上的多個條件)**  

```
{"price": {"$gte": 10, "$lte": 50}}
```

如需如何使用中繼資料篩選功能查詢向量的詳細資訊，請參閱 [中繼資料篩選](s3-vectors.md#s3-vectors-filtering-metadata)。

## 不可篩選的中繼資料
<a name="s3-vectors-metadata-filtering-non-filterable"></a>

不可篩選的中繼資料無法用於查詢篩選，但可以儲存比可篩選的中繼資料更多的內容資料。它非常適合用於儲存大型文字區塊、詳細描述，或其他不需要可搜尋但可以使用查詢結果傳回的內容資訊。例如，您可以將完整文件文字、影像描述或詳細產品規格，儲存為不可篩選的中繼資料。

在向量索引建立期間，必須明確設定不可篩選的中繼資料索引鍵。中繼資料索引鍵在索引建立期間指定為不可篩選後，就無法在之後變更為可篩選。您可以為每個向量索引將多個中繼資料索引鍵設定為不可篩選，其中每個中繼資料索引鍵名稱限制為 63 個字元。如需有關每個向量索引允許的不可篩選中繼資料索引鍵數目上限的詳細資訊，請參閱 [限制](s3-vectors-limitations.md)。

雖然您無法篩選不可篩選的中繼資料，但您可以使用 `return-metadata` 參數將其與查詢結果一起擷取。對於某些使用案例，您可以使用不可篩選的中繼資料，如下所示。
+ 使用不可篩選的中繼資料為您的應用程式提供內容，無需剖析單獨的資料來源。
+ 儲存會超過可篩選中繼資料大小限制的較大文字區塊。
+ 使用 [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) API 操作將其包含在向量匯出中。

如需設定不可篩選的中繼資料的詳細資訊，請參閱 [在向量儲存貯體中建立向量索引](s3-vectors-create-index.md)。