크로마 벡터 스토어
ChromaVector 클래스는 다음을 사용하여 벡터 검색을 제공합니다.Chroma, 오픈 소스 임베딩 데이터베이스입니다. 메타데이터 필터링 및 하이브리드 검색 기능을 통해 효율적인 벡터 검색을 제공합니다.
Chroma Cloud는 서버리스 벡터 및 전체 텍스트 검색을 지원합니다. 매우 빠르고 비용 효율적이며 고용량이며 통증이 없습니다. DB를 만들고 $5의 무료 크레딧으로 30초 안에 사용해 보세요.
생성자 옵션생성자 옵션에 대한 직접 링크
host?:
port?:
ssl?:
apiKey?:
tenant?:
database?:
headers?:
fetchOptions?:
Chroma 서버 실행Chroma 서버 실행에 대한 직접 링크
Chroma Cloud 사용자는 ChromaVector 생성자에 API 키, 테넌트, 데이터베이스 이름을 제공하세요.
@mastra/chroma 패키지를 설치하면 Chroma CLI를 사용할 수 있으며, chroma db connect [DB-NAME] --env-file 명령으로 이러한 값을 환경 변수로 설정할 수 있습니다.
그렇지 않은 경우 단일 노드 Chroma 서버를 설정하기 위한 몇 가지 옵션이 있습니다.
- Chroma CLI를 사용해 로컬에서 실행합니다:
chroma run. 더 많은 구성 옵션은 Chroma 문서에서 확인할 수 있습니다. - 공식 Chroma 이미지를 사용하여 Docker에서 실행합니다.
- 선택한 Provider에 자체 Chroma 서버를 배포합니다. Chroma는 AWS, Azure, GCP용 예제 템플릿을 제공합니다.
행동 양식행동 양식에 대한 직접 링크
createIndex()createindex에 대한 직접 링크
indexName:
dimension:
metric?:
forkIndex()forkindex에 대한 직접 링크
참고: 분기는 Chroma Cloud에서만 지원되거나 자체 OSS를 배포하는 경우에만 지원됩니다.distributed Chroma.
forkIndex기존 Chroma 인덱스를 즉시 포크할 수 있습니다. 분기된 인덱스에 대한 작업은 원본 인덱스에 영향을 주지 않습니다. 자세히 알아보기Chroma docs.
indexName:
newIndexName:
upsert()upsert에 대한 직접 링크
indexName:
vectors:
metadata?:
ids?:
documents?:
query()query에 대한 직접 링크
queryVector를 사용하여 인덱스를 쿼리합니다. queryVector와의 거리순으로 의미상 유사한 레코드 배열을 반환합니다. 각 레코드는 다음 형태입니다.
{
id: string;
score: number;
document?: string;
metadata?: Record<string, string | number | boolean>;
embedding?: number[]
}
타입 추론을 위해 메타데이터의 형태를 query 호출에 전달하세요: query<T>().
indexName:
queryVector:
topK?:
filter?:
includeVector?:
documentFilter?:
get()get에 대한 직접 링크
ID, 메타데이터 및 문서 필터를 통해 Chroma 색인에서 기록을 가져옵니다. 모양의 레코드 배열을 반환합니다.
{
id: string;
document?: string;
metadata?: Record<string, string | number | boolean>;
embedding?: number[]
}
타입 추론을 위해 메타데이터의 형태를 get 호출에 전달하세요: get<T>().
indexName:
ids?:
filter?:
includeVector?:
documentFilter?:
limit?:
offset?:
limit과 함께 사용하세요.listIndexes()listindexes에 대한 직접 링크
인덱스 이름의 배열을 문자열로 반환합니다.
describeIndex()describeindex에 대한 직접 링크
indexName:
보고:
interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}
deleteIndex()deleteindex에 대한 직접 링크
indexName:
updateVector()updatevector에 대한 직접 링크
ID 또는 메타데이터 필터를 기준으로 단일 벡터를 업데이트합니다. id와 filter 중 하나만 제공해야 합니다.
indexName:
id?:
filter?:
update:
update 객체에는 다음 항목이 포함될 수 있습니다.
vector?:
metadata?:
예:
// Update by ID
await vectorStore.updateVector({
indexName: 'docs',
id: 'vec_123',
update: { metadata: { status: 'reviewed' } },
})
// Update by filter
await vectorStore.updateVector({
indexName: 'docs',
filter: { source_id: 'manual.pdf' },
update: { metadata: { version: 2 } },
})
deleteVector()deletevector에 대한 직접 링크
indexName:
id:
deleteVectors()deletevectors에 대한 직접 링크
ID 또는 메타데이터 필터를 기준으로 여러 벡터를 삭제합니다. 이 메서드는 대량 삭제 및 소스 기반 벡터 관리를 지원합니다. ids와 filter 중 하나만 제공해야 합니다.
indexName:
ids?:
filter?:
예:
// Delete all chunks from a document
await vectorStore.deleteVectors({
indexName: 'docs',
filter: { source_id: 'manual.pdf' },
})
// Delete multiple vectors by ID
await vectorStore.deleteVectors({
indexName: 'docs',
ids: ['vec_1', 'vec_2', 'vec_3'],
})
// Delete old temporary documents
await vectorStore.deleteVectors({
indexName: 'docs',
filter: {
$and: [{ bucket: 'temp' }, { indexed_at: { $lt: '2025-01-01' } }],
},
})
응답 유형응답 유형에 대한 직접 링크
쿼리 결과는 다음 형식으로 반환됩니다.
interface QueryResult {
id: string
score: number
metadata: Record<string, any>
document?: string // Chroma-specific: Original document if it was stored
vector?: number[] // Only included if includeVector is true
}
오류 처리오류 처리에 대한 직접 링크
상점에서는 포착할 수 있는 입력된 오류를 발생시킵니다.
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
}
}