Couchbase vector store
CouchbaseVector クラスは、Couchbase Vector Search を使用したベクトル検索を提供します。Couchbase コレクション内で効率的な類似度検索とメタデータフィルタリングを実行できます。
要件要件への直接リンク
- Couchbase Server 7.6.4 以降または互換性のある Capella クラスター
- Couchbase デプロイで Search Service が有効であること
インストールインストールへの直接リンク
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/couchbase@latest
pnpm add @mastra/couchbase@latest
yarn add @mastra/couchbase@latest
bun add @mastra/couchbase@latest
使用例使用例への直接リンク
import { CouchbaseVector } from '@mastra/couchbase'
const store = new CouchbaseVector({
id: 'couchbase-vector',
connectionString: process.env.COUCHBASE_CONNECTION_STRING,
username: process.env.COUCHBASE_USERNAME,
password: process.env.COUCHBASE_PASSWORD,
bucketName: process.env.COUCHBASE_BUCKET,
scopeName: process.env.COUCHBASE_SCOPE,
collectionName: process.env.COUCHBASE_COLLECTION,
})
コンストラクターオプションコンストラクターオプションへの直接リンク
id:
connectionString:
username:
password:
bucketName:
scopeName:
collectionName:
options?:
メソッドメソッドへの直接リンク
createIndex()createindexへの直接リンク
Couchbase に新しいベクトルインデックスを作成します。
インデックスの作成は非同期です。createIndex を呼び出した後、クエリを実行するまで時間を置いてください。通常、小規模なデータセットでは 1〜5 秒、大規模なデータセットではさらに長くかかります。本番環境では固定の遅延ではなく、インデックスの状態を確認するポーリングを実装してください。
indexName:
dimension:
metric?:
upsert()upsertへの直接リンク
コレクション内のベクトルとそのメタデータを追加または更新します。
インデックスの作成前でも作成後でも、データを upsert できます。upsert メソッドではインデックスが存在する必要はありません。Couchbase では同じコレクションに複数の Search インデックスを作成できます。
indexName:
vectors:
metadata?:
ids?:
query()queryへの直接リンク
類似するベクトルを検索します。
現在、filter と includeVector パラメーターには対応していません。結果を取得した後にクライアント側でフィルタリングするか、Couchbase SDK の Search 機能を直接使用する必要があります。ベクトル埋め込みを取得するには、Couchbase SDK で ID を指定してドキュメント全体を取得してください。
indexName:
queryVector:
topK?:
filter?:
includeVector?:
minScore?:
describeIndex()describeindexへの直接リンク
インデックスの情報を返します。
indexName:
戻り値:
interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}
deleteIndex()deleteindexへの直接リンク
インデックスとそのすべてのデータを削除します。
indexName:
listIndexes()listindexesへの直接リンク
Couchbase バケット内のすべてのベクトルインデックスを一覧表示します。
戻り値: Promise<string[]>
updateVector()updatevectorへの直接リンク
ID を指定して特定のベクトルエントリを、新しいベクトルデータやメタデータで更新します。Couchbase ではフィルターベースの更新はまだ実装されていません。
indexName:
id:
update:
deleteVector()deletevectorへの直接リンク
ID を指定してインデックスから単一のベクトルを削除します。
indexName:
id:
deleteVectors()deletevectorsへの直接リンク
ID を指定して複数のベクトルを削除します。Couchbase ではフィルターベースの削除はまだ実装されていません。
indexName:
ids:
disconnect()disconnectへの直接リンク
Couchbase クライアント接続を閉じます。store の使用後に呼び出してください。
レスポンス型レスポンス型への直接リンク
クエリ結果は次の形式で返されます。
interface QueryResult {
id: string
score: number
metadata: Record<string, any>
vector?: number[] // Only included if includeVector is true
}
エラー処理エラー処理への直接リンク
store は捕捉可能な型付きエラーをスローします。
try {
await store.query({
indexName: 'my_index',
queryVector: queryVector,
})
} catch (error) {
// Handle specific error cases
if (error.message.includes('Invalid index name')) {
console.error(
'Index name must start with a letter or underscore and contain only valid characters.',
)
} else if (error.message.includes('Index not found')) {
console.error('The specified index does not exist')
} else {
console.error('Vector store error:', error.message)
}
}
注意事項注意事項への直接リンク
- インデックス削除時の注意: Search インデックスを削除しても、関連付けられた Couchbase コレクション内のベクトルやドキュメントは削除されません。明示的に削除しない限り、データは残ります。
- 必要な権限: Couchbase ユーザーには、接続、対象コレクション内のドキュメントの読み書き(
kvロール)、Search インデックスの管理(関連するバケットやスコープのsearch_adminロール)に必要な権限が必要です。 - インデックス定義とドキュメント構造の詳細:
createIndexメソッドは、指定されたscopeName.collectionName内のドキュメントを対象に、embeddingフィールドをvector型、contentフィールドをtext型としてインデックス化する Search インデックス定義を構築します。各ドキュメントは、ベクトルをembeddingフィールドに、メタデータをmetadataフィールドに保存します。metadataにtextプロパティが含まれる場合、その値は全文検索用にインデックス化されるトップレベルのcontentフィールドにもコピーされます。 - レプリケーションと耐久性: データの耐久性を確保するため、Couchbase 組み込みのレプリケーション機能と永続化機能の使用を検討してください。効率的な検索を維持するため、インデックス統計を定期的に監視してください。
制限事項制限事項への直接リンク
- インデックス作成の遅延により、作成直後のクエリに影響することがあります。
- 取り込み時にベクトルの次元数は厳密に検証されません。次元数が一致しない場合はクエリ時にエラーになります。
- ベクトルの挿入とインデックスの更新は結果整合性に基づきます。書き込み直後の強い整合性は保証されません。