メインコンテンツへ移動

Turbopuffer vector store

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
ソケットのアイドルタイムアウト(ミリ秒)。Node と Deno でのみ使用できます。

warmConnections?:

number
= 0
新しいクライアントの作成時に最初に開く接続数。

compression?:

boolean
= true
リクエストを圧縮し、圧縮されたレスポンスを受け入れるかどうか。

consistency?:

'strong' | 'eventual'
= strong
クエリのデフォルト整合性レベル。クエリごとに上書きできます。"strong" はレイテンシーが増える代わりに、クエリ開始前に書き込まれたすべてのデータをクエリで参照できることを保証します。"eventual" はレイテンシーを抑えられますが、直近に書き込まれたデータがまだ表示されない場合があります。

schemaConfigForIndex?:

function
インデックス名を受け取り、そのインデックスの設定オブジェクトを返すコールバック関数。インデックスごとに明示的なスキーマを定義できます。

メソッド
メソッドへの直接リンク

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 またはメタデータフィルターを使用して、1 つのベクトルを更新します。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
}

スキーマ設定
スキーマ設定への直接リンク

schemaConfigForIndex オプションを使用すると、インデックスごとに明示的なスキーマを定義できます。

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

エラー処理
エラー処理への直接リンク

store は捕捉可能な型付きエラーをスローします。

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