터보퍼퍼 벡터 스토어
TurbopufferVector 클래스는 다음을 사용하여 벡터 검색을 제공합니다.Turbopuffer, RAG 애플리케이션에 최적화된 고성능 벡터 데이터베이스입니다. Turbopuffer는 고급 필터링 기능과 효율적인 저장 관리를 통해 빠른 벡터 유사성 검색을 제공합니다.
생성자 옵션생성자 옵션에 대한 직접 링크
apiKey:
string
Turbopuffer 인증에 사용할 API 키
baseUrl?:
string
= https://api.turbopuffer.com
Turbopuffer API의 기본 URL
connectTimeout?:
number
= 10000
연결을 설정하기 위한 제한 시간(ms)입니다. Node와 Deno에만 적용됩니다.
connectionIdleTimeout?:
number
= 60000
소켓 유휴 제한 시간(ms)입니다. Node와 Deno에만 적용됩니다.
warmConnections?:
number
= 0
새 클라이언트를 생성할 때 처음에 열 연결 수입니다.
compression?:
boolean
= true
요청을 압축하고 압축된 응답을 수락할지 여부입니다.
consistency?:
'strong' | 'eventual'
= strong
쿼리의 기본 일관성 수준입니다. 쿼리별로 재정의할 수 있습니다. "strong"은 지연 시간이 늘어나는 대신 쿼리 시작 전에 기록된 모든 데이터를 쿼리에서 볼 수 있도록 보장합니다. "eventual"은 지연 시간이 짧지만 최근에 기록된 데이터가 아직 표시되지 않을 수 있습니다.
schemaConfigForIndex?:
function
인덱스 이름을 받아 해당 인덱스의 구성 객체를 반환하는 콜백 함수입니다. 인덱스별로 명시적 스키마를 정의할 수 있습니다.
행동 양식행동 양식에 대한 직접 링크
createIndex()createindex에 대한 직접 링크
indexName:
string
생성할 인덱스의 이름
dimension:
number
벡터 차원(임베딩 Model과 일치해야 함)
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 또는 메타데이터 필터를 기준으로 단일 벡터를 업데이트합니다. 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}`)
}
}
오류 처리오류 처리에 대한 직접 링크
상점에서는 포착할 수 있는 입력된 오류를 발생시킵니다.
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
}
}