> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # Turbopuffer vector store TurbopufferVector クラスは、RAG アプリケーション向けに最適化された高性能ベクトルデータベース [Turbopuffer](https://turbopuffer.com/) を使用したベクトル検索を提供します。Turbopuffer は、高度なフィルター機能と効率的なストレージ管理を備えた高速なベクトル類似度検索に対応しています。 ## コンストラクターオプション **apiKey** (`string`): Turbopuffer での認証に使用する API キー **baseUrl** (`string`): Turbopuffer API のベース URL (Default: `https://api.turbopuffer.com`) **connectTimeout** (`number`): 接続を確立するまでのタイムアウト(ミリ秒)。Node と Deno でのみ使用できます。 (Default: `10000`) **connectionIdleTimeout** (`number`): ソケットのアイドルタイムアウト(ミリ秒)。Node と Deno でのみ使用できます。 (Default: `60000`) **warmConnections** (`number`): 新しいクライアントの作成時に最初に開く接続数。 (Default: `0`) **compression** (`boolean`): リクエストを圧縮し、圧縮されたレスポンスを受け入れるかどうか。 (Default: `true`) **consistency** (`'strong' | 'eventual'`): クエリのデフォルト整合性レベル。クエリごとに上書きできます。"strong" はレイテンシーが増える代わりに、クエリ開始前に書き込まれたすべてのデータをクエリで参照できることを保証します。"eventual" はレイテンシーを抑えられますが、直近に書き込まれたデータがまだ表示されない場合があります。 (Default: `strong`) **schemaConfigForIndex** (`function`): インデックス名を受け取り、そのインデックスの設定オブジェクトを返すコールバック関数。インデックスごとに明示的なスキーマを定義できます。 ## メソッド ### `createIndex()` **indexName** (`string`): 作成するインデックスの名前 **dimension** (`number`): ベクトルの次元数(埋め込みモデルと一致させる必要があります) **metric** (`'cosine' | 'euclidean' | 'dotproduct'`): 類似度検索の距離指標 (Default: `cosine`) ### `upsert()` **vectors** (`number[][]`): 埋め込みベクトルの配列 **metadata** (`Record[]`): 各ベクトルのメタデータ **ids** (`string[]`): 省略可能なベクトル ID(未指定の場合は自動生成されます) ### `query()` **indexName** (`string`): クエリ対象のインデックス名 **queryVector** (`number[]`): 類似ベクトルを検索するためのクエリベクトル **topK** (`number`): 返す結果の数 (Default: `10`) **filter** (`Record`): クエリのメタデータフィルター **includeVector** (`boolean`): 結果にベクトルを含めるかどうか (Default: `false`) **consistency** (`'strong' | 'eventual'`): このクエリの整合性レベル。コンストラクターで設定した整合性レベルを上書きします。デフォルトは "strong" です。 ### `listIndexes()` インデックス名を文字列の配列として返します。 ### `describeIndex()` **indexName** (`string`): 詳細を取得するインデックスの名前 戻り値: ```typescript interface IndexStats { dimension: number count: number metric: 'cosine' | 'euclidean' | 'dotproduct' } ``` ### `deleteIndex()` **indexName** (`string`): 削除するインデックスの名前 ### `updateVector()` ID またはメタデータフィルターを使用して、1 つのベクトルを更新します。`id` と `filter` のどちらか一方のみを指定する必要があります。 **indexName** (`string`): ベクトルを含むインデックスの名前 **id** (`string`): 更新するベクトルの ID(filter と同時には指定できません) **filter** (`Record`): 更新するベクトルを特定するメタデータフィルター(id と同時には指定できません) **update** (`{ vector?: number[]; metadata?: Record; }`): 更新するベクトルやメタデータを含むオブジェクト ### `deleteVector()` **indexName** (`string`): ベクトルを含むインデックスの名前 **id** (`string`): 削除するベクトルの ID ### `deleteVectors()` ID またはメタデータフィルターを使用して、複数のベクトルを削除します。`ids` と `filter` のどちらか一方のみを指定する必要があります。 **indexName** (`string`): 削除するベクトルを含むインデックスの名前 **ids** (`string[]`): 削除するベクトル ID の配列(filter と同時には指定できません) **filter** (`Record`): 削除するベクトルを特定するメタデータフィルター(ids と同時には指定できません) ## レスポンス型 クエリ結果は次の形式で返されます。 ```typescript interface QueryResult { id: string score: number metadata: Record vector?: number[] // Only included if includeVector is true } ``` ## スキーマ設定 `schemaConfigForIndex` オプションを使用すると、インデックスごとに明示的なスキーマを定義できます。 ```typescript 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 は捕捉可能な型付きエラーをスローします。 ```typescript 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 } } ``` ## 関連情報 - [メタデータフィルター](https://mastra.zisheng.pro/ja/reference/rag/metadata-filters)