Couchbase 벡터 스토어
그만큼CouchbaseVector클래스는 다음을 사용하여 벡터 검색을 제공합니다.Couchbase 벡터 검색. Couchbase 컬렉션 내에서 효율적인 유사성 검색 및 메타데이터 필터링이 가능합니다.
요구사항요구사항에 대한 직접 링크
- 카우치베이스 서버 7.6.4+또는 호환되는 Capella 클러스터
- 검색 서비스 활성화됨Couchbase 배포에서
설치설치에 대한 직접 링크
- 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 메서드는 인덱스가 없어도 사용할 수 있습니다. 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 클라이언트 연결을 닫습니다. 매장 이용이 끝나면 전화해야 합니다.
응답 유형응답 유형에 대한 직접 링크
쿼리 결과는 다음 형식으로 반환됩니다.
interface QueryResult {
id: string
score: number
metadata: Record<string, any>
vector?: number[] // Only included if includeVector is true
}
오류 처리오류 처리에 대한 직접 링크
상점에서는 포착할 수 있는 입력된 오류를 발생시킵니다.
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)
}
}
메모메모에 대한 직접 링크
- 인덱스 삭제 시 주의 사항:검색 인덱스를 삭제해도 연결된 Couchbase 컬렉션의 벡터/문서는 삭제되지 않습니다. 명시적으로 제거하지 않는 한 데이터는 그대로 유지됩니다.
- 필수 권한:Couchbase 사용자는 대상 컬렉션에 문서를 읽고 쓸 수 있어야 하며(
kvrole), Search 인덱스를 관리할 수 있어야 합니다(관련 버킷/범위의search_adminrole). - 인덱스 정의 세부 정보 및 문서 구조:그
createIndex메서드는 지정된scopeName.collectionName내의 문서를 대상으로embedding필드(vector유형)와content필드(text유형)를 인덱싱하는 Search 인덱스 정의를 생성합니다. 각 문서는 벡터를embedding필드에, 메타데이터를metadata필드에 저장합니다.metadata에text속성이 있으면 해당 값도 최상위content필드에 복사되며, 이 필드는 텍스트 검색용으로 인덱싱됩니다. - 복제 및 내구성:데이터 내구성을 확보하려면 Couchbase에 내장된 복제 및 지속성 기능을 사용하세요. 효율적인 검색을 위해 인덱스 통계를 정기적으로 모니터링하세요.
제한사항제한사항에 대한 직접 링크
- 인덱스 생성 지연은 생성 후 즉각적인 쿼리에 영향을 미칠 수 있습니다.
- 수집 시 벡터 차원을 강제로 적용하지 않습니다(차원 불일치로 인해 쿼리 시 오류가 발생함).
- 벡터 삽입과 인덱스 업데이트는 최종적으로 일관됩니다. 쓰기 직후에는 강력한 일관성이 보장되지 않습니다.