Search vector contains invalid values

TL;DR — 你的 SearchVector 參數形狀不對。儲存的內嵌向量住在一個 L 屬性裡,但查詢參數是一個由 {"N": …} 值組成的裸陣列。把 L 拆掉,並確保每一個元素都是純數字。

這是什麼意思

ValidationException: Search vector contains invalid values. All values in the search vector must be a 32-bit floating-point number attribute

這是我們在 us-east-1 擷取到的服務原文回應:把查詢向量包進了 DynamoDB 的 L 型別。SearchVectors 在碰到索引之前就拒絕了這個請求。

為什麼會發生

線路格式是不對稱的,幾乎每個人都會撞上一次。儲存在項目上的內嵌向量是一個 List 屬性:

{"embedding": {"L": [{"N": "0.0132"}, {"N": "-0.0475"}]}}

SearchVector 請求參數則不是。它是一個由數字值組成的裸 JSON 陣列:

[{"N": "0.0132"}, {"N": "-0.0475"}]

把儲存形狀當作查詢形狀送出,你就會得到這個錯誤。當陣列裡的某個元素是字串、布林值或巢狀結構而不是 N 值時,它也會觸發。

如何修正

直接傳陣列。用 CLI 時,file://query-vector.json 的內容就是那個裸陣列;在各 SDK 裡,把 SearchVector 建成一個 AttributeValue 數字的 list,而不是一個 L 值。如果你重用了產生儲存屬性的那個 marshalling 輔助函式,在查詢前先把它的輸出拆包。

維度數是另外檢查的,所以一個已拆包但長度不對的向量會以另一則訊息失敗:Invalid size for parameter

相關內容

查詢端從頭到尾如何運作,加上一個實測的成本模型:見 DynamoDB 向量搜尋指南

不必透過主控台就能操作 DynamoDB

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。