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 つのベクトルを更新します。id と filter のどちらか一方のみを指定する必要があります。
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 またはメタデータフィルターを使用して、複数のベクトルを削除します。ids と filter のどちらか一方のみを指定する必要があります。
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
}
}