

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

# 向量搜尋功能和限制
<a name="vector-search-features-limits"></a>

## 向量搜尋可用性
<a name="vector-search-availability"></a>

Amazon ElastiCache 的向量搜尋可在所有AWS區域的節點型叢集上使用 Valkey 8.2 版，無需額外費用。您也可以透過從任何版本的 Valkey 或 Redis OSS 升級到 Valkey 8.2，在現有叢集上使用向量搜尋，只要[按幾下滑鼠，就不會停機](VersionManagement.HowTo.md)。

向量搜尋目前可用於資料分層節點以外的所有 ElastiCache 執行個體類型。在 t2、t3 和 t4g 執行個體上使用向量搜尋需要將微型執行個體的記憶體保留增加到至少 50%，小型執行個體則增加到 30%。如需詳細資訊，請參閱[此頁面](redis-memory-management.md)。

## 參數限制
<a name="parametric-restrictions"></a>

下表顯示各種向量搜尋項目的限制：


**向量搜尋限制**  

| 項目 | 最大值 | 
| --- | --- | 
| 向量中的維度數量 | 32768 | 
| 可建立的索引數量 | 10 | 
| 索引中的欄位數目 | 50 | 
| FT.SEARCH TIMEOUT 子句 （毫秒） | 60000 | 
| 每個索引允許的字首數目上限 | 16 | 
| 標籤欄位的長度上限 | 10000 | 
| 數值欄位的長度上限 | 256 | 
| HNSW M 參數 | 2000000 | 
| HNSW EF\$1CONSTRUCTION 參數 | 4096 | 
| HNSW EF\$1RUNTIME 參數 | 4096 | 

## 操作限制
<a name="operational-restrictions"></a>

### 索引持續性和回填
<a name="index-persistence-backfilling"></a>

更新程序有三個步驟。在第一個步驟中，修改 HASH 或 JSON 金鑰，並封鎖請求用戶端。第二個步驟是在背景執行，並更新包含修改後金鑰的每個索引。在第三個步驟中，用戶端會解除封鎖。因此，對於在與變動相同的連線上執行的查詢操作，該變更會立即顯示在搜尋結果中。不過，金鑰的插入或更新在短時間內可能不會出現在其他用戶端的搜尋結果中。在大量系統負載和/或大量資料變動期間，可見性延遲可能會變長。

向量搜尋功能會保留索引的定義，以及索引的內容。會儲存向量欄位的索引，但不會儲存 TAGS 和 NUMERIC 的索引，這表示必須在外部載入時重建它們 （完全同步或重新載入）。這表示在任何導致節點啟動或重新啟動的操作請求或事件期間，向量的索引定義和內容會從最新的快照還原。不需要使用者動作即可啟動此動作。不過，對於 TAGS 和 NUMERIC 索引，重建會在資料還原後立即做為回填操作執行。這在功能上等同於系統自動為每個定義的索引執行 FT.CREATE 命令。請注意，一旦還原資料，節點就可用於應用程式操作，但可能在索引回填完成之前，這表示應用程式會再次看到回填操作。

索引回填的完成不會在主要和複本之間同步。應用程式可能會意外看到這種缺乏同步的情況，因此建議應用程式在啟動搜尋操作之前，先驗證主要和所有複本的回填完成。

### 擴展限制
<a name="scaling-limits"></a>

在擴展事件期間，索引可能會在資料遷移時進行回填。這會導致搜尋查詢的召回率降低。

### 快照匯入/匯出和即時遷移
<a name="snapshot-import-export"></a>

來自具有搜尋索引之叢集的 RDB 檔案可以匯入至具有 8.2 版或更新版本的另一個 ElastiCache Valkey 叢集。新叢集會在載入 RDB 檔案時重建索引內容。不過，RDB 檔案中是否存在搜尋索引會限制該資料與舊版 Valkey 的相容性。只有另一個具有 Valkey 8.2 版或更新版本的 ElastiCache 叢集，才能了解向量搜尋功能定義的搜尋索引格式。不過，不包含索引的 RDB 檔案不會以此方式受到限制。

### 回填期間記憶體不足
<a name="out-of-memory-backfill"></a>

與 Valkey OSS 寫入操作類似，索引回填會受到out-of-memory的限制。如果在回填進行時填滿引擎記憶體，則會暫停所有回填。如果記憶體可用，則會繼續回填程序。當回填因記憶體不足而暫停時，可以刪除索引。

### 交易
<a name="transactions"></a>

命令 `FT.CREATE`、`FT.DROPINDEX`、`FT.ALIASDEL`、 `FT.ALIASADD`和 `FT.ALIASUPDATE`無法在交易內容中執行，即不在`MULTI/EXEC`區塊內或在 LUA 或 FUNCTION 指令碼內。