Skip to Content

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
リクエストを圧縮し、圧縮されたレスポンスを受け入れるかどうか。

schemaConfigForIndex?:

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

メソッド

createIndex()

indexName:

string
作成するインデックスの名前

dimension:

number
ベクトルの次元(埋め込みモデルに一致する必要があります)

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
類似性検索のための距離メトリック

upsert()

vectors:

number[][]
埋め込みベクトルの配列

metadata?:

Record<string, any>[]
各ベクトルのメタデータ

ids?:

string[]
オプションのベクトルID(指定されない場合は自動生成)

query()

indexName:

string
クエリを実行するインデックスの名前

queryVector:

number[]
類似ベクトルを見つけるためのクエリベクトル

topK?:

number
= 10
返す結果の数

filter?:

Record<string, any>
クエリのメタデータフィルター

includeVector?:

boolean
= false
結果にベクトルを含めるかどうか

listIndexes()

文字列としてインデックス名の配列を返します。

describeIndex()

indexName:

string
説明するインデックスの名前

返される内容:

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

deleteIndex()

indexName:

string
削除するインデックスの名前

応答タイプ

クエリ結果はこの形式で返されます:

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

スキーマ構成

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

schemaConfigForIndex: (indexName: string) => { // Mastraのデフォルトの埋め込みモデルとメモリメッセージのインデックス: 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); // 追加のエラーコンテキスト } }

関連