跳至主要內容

Turbopuffer 向量儲存

TurbopufferVector 類別使用針對 RAG 應用程式最佳化的高效能向量資料庫 Turbopuffer 提供向量搜尋。Turbopuffer 提供快速的向量相似度搜尋、進階篩選功能與高效率的儲存管理。

建構函式選項
「建構函式選項」的直接連結

apiKey:

string
向 Turbopuffer 驗證所用的 API 金鑰

baseUrl?:

string
= https://api.turbopuffer.com
Turbopuffer API 的基底 URL

connectTimeout?:

number
= 10000
建立連線的逾時時間,單位為毫秒。僅適用於 Node 與 Deno。

connectionIdleTimeout?:

number
= 60000
socket 閒置逾時時間,單位為毫秒。僅適用於 Node 與 Deno。

warmConnections?:

number
= 0
建立新使用者端時,初始開啟的連線數量。

compression?:

boolean
= true
是否壓縮要求並接受壓縮的回應。

consistency?:

'strong' | 'eventual'
= strong
查詢的預設一致性層級。可針對每次查詢覆寫。"strong" 保證查詢可看見查詢開始前寫入的所有資料,但延遲較高。"eventual" 的延遲較低,但最近寫入的資料可能尚不可見。

schemaConfigForIndex?:

function
接收索引名稱並傳回該索引設定物件的回呼函式。你可以為每個索引定義明確的 schema。

方法
「方法」的直接連結

createIndex()
「createindex」的直接連結

indexName:

string
要建立的索引名稱

dimension:

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

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
相似度搜尋使用的距離度量

upsert()
「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
結果是否包含向量

consistency?:

'strong' | 'eventual'
本次查詢的一致性層級。會覆寫建構函式中設定的一致性層級。預設為 "strong"。

listIndexes()
「listindexes」的直接連結

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

describeIndex()
「describeindex」的直接連結

indexName:

string
要描述的索引名稱

傳回:

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

deleteIndex()
「deleteindex」的直接連結

indexName:

string
要刪除的索引名稱

updateVector()
「updatevector」的直接連結

依 ID 或中繼資料篩選條件更新單一向量。必須提供 idfilter 其中一項,但不能同時提供兩者。

indexName:

string
包含該向量的索引名稱

id?:

string
要更新的向量 ID(不可與 filter 同時使用)

filter?:

Record<string, any>
用於識別待更新向量的中繼資料篩選條件(不可與 id 同時使用)

update:

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

deleteVector()
「deletevector」的直接連結

indexName:

string
包含該向量的索引名稱

id:

string
要刪除的向量 ID

deleteVectors()
「deletevectors」的直接連結

依 ID 或中繼資料篩選條件刪除多個向量。必須提供 idsfilter 其中一項,但不能同時提供兩者。

indexName:

string
包含待刪除向量的索引名稱

ids?:

string[]
要刪除的向量 ID 陣列(不可與 filter 同時使用)

filter?:

Record<string, any>
用於識別待刪除向量的中繼資料篩選條件(不可與 ids 同時使用)

回應型別
「回應型別」的直接連結

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

interface QueryResult {
id: string
score: number
metadata: Record<string, any>
vector?: number[] // Only included if includeVector is true
}

Schema 設定
「Schema 設定」的直接連結

schemaConfigForIndex 選項可讓你為不同索引定義明確的 schema:

schemaConfigForIndex: (indexName: string) => {
// Mastra's default embedding model and index for memory messages:
if (indexName === 'memory_messages_384') {
return {
dimensions: 384,
schema: {
thread_id: {
type: 'string',
filterable: true,
},
},
}
} else {
throw new Error(`TODO: add schema for index: ${indexName}`)
}
}

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

此儲存會擲回可攔截的具型別錯誤:

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
}
}