> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # 터보퍼퍼 벡터 스토어 TurbopufferVector 클래스는 다음을 사용하여 벡터 검색을 제공합니다.[Turbopuffer](https://turbopuffer.com/), RAG 애플리케이션에 최적화된 고성능 벡터 데이터베이스입니다. Turbopuffer는 고급 필터링 기능과 효율적인 저장 관리를 통해 빠른 벡터 유사성 검색을 제공합니다. ## 생성자 옵션 **apiKey** (`string`): Turbopuffer 인증에 사용할 API 키 **baseUrl** (`string`): Turbopuffer API의 기본 URL (Default: `https://api.turbopuffer.com`) **connectTimeout** (`number`): 연결을 설정하기 위한 제한 시간(ms)입니다. Node와 Deno에만 적용됩니다. (Default: `10000`) **connectionIdleTimeout** (`number`): 소켓 유휴 제한 시간(ms)입니다. 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`): 벡터 차원(임베딩 Model과 일치해야 함) **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 또는 메타데이터 필터를 기준으로 단일 벡터를 업데이트합니다. `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}`) } } ``` ## 오류 처리 상점에서는 포착할 수 있는 입력된 오류를 발생시킵니다. ```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/ko/reference/rag/metadata-filters)