storing-and-querying-vectors
aws/agent-toolkit-for-aws
使用 Amazon S3 Vectors 儲存及查詢向量嵌入,這是一項具成本效益的長期向量儲存服務,並擁有專屬的 API 命名空間(s3vectors)。 適用情境:建立 S3 向量儲存桶、建立向量索引、儲存嵌入向量、語義搜尋、RAG 向量儲存、相似度搜尋、向量資料庫,以及從其他向量資料庫遷移。 請勿用於:查詢表格資料(請使用 querying-data-lake)、S3 物件儲存,或需要持續處理數百/數千 QPS 的情境(請使用 OpenSearch)。
...展開全部關於storing-and-querying-vectors
storing-and-querying-vectors 是一份關於使用 Amazon S3 Vectors 的操作指南,這是一項具成本效益的 AWS 服務,可在其專屬的 s3vectors API 命名空間下,大規模儲存與查詢向量嵌入。 該服務針對長期儲存進行了優化,冷查詢的延遲低於一秒,暖查詢時延遲最低可達 100 毫秒,因此非常適合 RAG 及其他查詢頻率較低的工作負載。 本決策指南會在適當情況下引導使用者選擇其他方案:若每秒需處理數百或數千次持續查詢,或需進行混合搜尋與彙總(可選用 S3 Vectors 作為儲存引擎),則建議採用 OpenSearch;若需即時處理,則建議採用將 S3 Vectors 與 OpenSearch Serverless 搭配的分層架構。
工作流程包含建立向量儲存桶、建立索引、可選用 Amazon Bedrock 生成嵌入向量、寫入向量以及執行查詢,優先使用 AWS MCP 伺服器工具,並在必要時回退至 AWS CLI。其中一項核心原則是不可變性: 儲存桶加密(SSE-S3 或 SSE-KMS)以及所有索引參數(包括維數(1 至 4096)、距離度量(餘弦或歐幾里得),以及最多十個不可過濾的元數據鍵)在建立後均無法變更,因此必須在建立前確認無誤。 嵌入維度必須與索引相符,且儲存與查詢時必須使用相同的模型。
操作限制如下:每次 put-vectors 呼叫最多 500 個向量;遇到 429 流量限制時會以退讓機制重試;若透過 --filter 或 --return-metadata 進行元資料篩選,則需同時具備 s3vectors:QueryVectors 與 s3vectors:GetVectors 權限。 故障排除表將 DimensionMismatch、403 及 AccessDenied 等錯誤(該服務使用 s3vectors 命名空間,而非 s3)對應至具體的解決方案,相關參考資料則涵蓋限制、多租戶模式及元資料篩選。
常見問題
在何種情況下應選擇 S3 Vectors 而非 OpenSearch?
S3 Vectors 適用於成本效益高的長期儲存,且查詢頻率較低並搭配 RAG;若需維持數百或數千的 QPS、混合搜尋或彙總運算,本指南建議使用 OpenSearch,並可選擇將 S3 Vectors 作為儲存引擎。
哪些索引參數是不可變的?
所有索引參數在建立後皆為不可變:維度(1 至 4096)、距離度量(餘弦或歐幾里得),以及最多十個不可過濾的元資料金鑰,儲存桶加密亦屬此類。
每次呼叫最多可寫入多少個向量?
每次 put-vectors 呼叫最多可寫入 500 個向量;建議進行批次處理,且批量操作應使用 SDK 而非 CLI。
元資料篩選器需要哪些 IAM 權限?
若要使用 --filter 或 --return-metadata,必須同時具備 s3vectors:QueryVectors 和 s3vectors:GetVectors 權限;若未具備 GetVectors 權限,這些選項將返回 403 錯誤。此服務使用 s3vectors 命名空間,而非 s3。
嵌入向量是如何產生並進行配對的?
透過 Bedrock 的 invoke-model 函式(例如 Titan 或 Cohere);嵌入向量的維度必須與索引相符,且儲存與查詢時必須使用同一模型。





首頁
