跳至主要內容

Cloudflare 向量儲存

CloudflareVector 類別使用 Cloudflare Vectorize 提供向量搜尋。Cloudflare Vectorize 是整合至 Cloudflare 邊緣網絡的向量資料庫服務。

建構函數選項
建構函數選項 的直接連結

accountId:

string
Cloudflare 帳戶 ID

apiToken:

string
具備 Vectorize 權限的 Cloudflare API token

方法
方法 的直接連結

createIndex()
createindex 的直接連結

indexName:

string
要建立的索引名稱

dimension:

number
向量維度(必須與你的嵌入模型相符)

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
相似度搜尋所用的距離度量(dotproduct 對應 dot-product)

upsert()
upsert 的直接連結

indexName:

string
要執行 upsert 的索引名稱

vectors:

number[][]
嵌入向量陣列

metadata?:

Record<string, any>[]
每個向量的中繼資料

ids?:

string[]
可選的向量 ID(如未提供則自動產生)

query()
query 的直接連結

indexName:

string
要查詢的索引名稱

queryVector:

number[]
用於尋找相似向量的查詢向量

topK?:

number
= 10
要傳回的結果數目

filter?:

Record<string, any>
查詢所用的中繼資料篩選條件

includeVector?:

boolean
= false
是否在結果中包含向量

listIndexes()
listindexes 的直接連結

以字串陣列形式傳回索引名稱。

describeIndex()
describeindex 的直接連結

indexName:

string
要描述的索引名稱

傳回:

interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}

deleteIndex()
deleteindex 的直接連結

indexName:

string
要刪除的索引名稱

createMetadataIndex()
createmetadataindex 的直接連結

在中繼資料欄位上建立索引,以啟用篩選功能。

indexName:

string
包含該中繼資料欄位的索引名稱

propertyName:

string
要建立索引的中繼資料欄位名稱

indexType:

'string' | 'number' | 'boolean'
中繼資料欄位的類型

deleteMetadataIndex()
deletemetadataindex 的直接連結

移除中繼資料欄位的索引。

indexName:

string
包含該中繼資料欄位的索引名稱

propertyName:

string
要移除索引的中繼資料欄位名稱

listMetadataIndexes()
listmetadataindexes 的直接連結

列出某個索引的所有中繼資料欄位索引。

indexName:

string
要列出中繼資料索引的索引名稱

updateVector()
updatevector 的直接連結

更新索引內特定 ID 的向量或中繼資料。

indexName:

string
包含要更新 ID 的索引名稱

id:

string
要更新的向量或中繼資料的唯一識別碼

update:

{ vector?: number[]; metadata?: Record<string, any>; }
包含要更新的向量及/或中繼資料的物件

deleteVector()
deletevector 的直接連結

刪除索引內特定 ID 的向量及其相關中繼資料。

indexName:

string
包含要刪除 ID 的索引名稱

id:

string
要刪除的向量及中繼資料的唯一識別碼

回應類型
回應類型 的直接連結

查詢結果會以以下格式傳回:

interface QueryResult {
id: string
score: number
metadata: Record<string, any>
vector?: number[]
}

錯誤處理
錯誤處理 的直接連結

此儲存會拋出可捕捉的具類型錯誤:

try {
await store.query({
indexName: 'index_name',
queryVector: queryVector,
})
} catch (error) {
if (error instanceof VectorStoreError) {
console.log(error.code) // 'connection_failed' | 'invalid_dimension' | etc
console.log(error.details) // Additional error context
}
}

環境變數
環境變數 的直接連結

必要的環境變數:

  • CLOUDFLARE_ACCOUNT_ID:你的 Cloudflare 帳戶 ID
  • CLOUDFLARE_API_TOKEN:具備 Vectorize 權限的 Cloudflare API token