본문으로 건너뛰기

Qdrant 벡터 스토어

QdrantVector 클래스는 다음을 사용하여 벡터 검색을 제공합니다.Qdrant, 벡터 유사성 검색 엔진. 추가 페이로드 및 확장된 필터링 지원을 통해 벡터를 저장, 검색 및 관리할 수 있는 편리한 API를 갖춘 프로덕션 준비 서비스를 제공합니다.

생성자 옵션
생성자 옵션에 대한 직접 링크

url:

string
Qdrant 인스턴스의 REST URL입니다. 예: https://xyz-example.eu-central.aws.cloud.qdrant.io:6333

apiKey:

string
선택적 Qdrant API 키

https:

boolean
연결 설정 시 TLS를 사용할지 여부입니다. 사용을 권장합니다.

행동 양식
행동 양식에 대한 직접 링크

createIndex()
createindex에 대한 직접 링크

indexName:

string
생성할 인덱스의 이름

dimension:

number
벡터 차원(임베딩 Model과 일치해야 함)입니다. 단일 벡터 컬렉션에 필요합니다.

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
유사도 검색에 사용할 거리 측정 방식

namedVectors?:

Record<string, { size: number; distance: 'cosine' | 'euclidean' | 'dotproduct' }>
이름이 지정된 벡터 공간의 구성입니다. 제공하면 이름이 지정된 여러 벡터 필드가 있는 컬렉션을 생성합니다.

명명된 벡터 컬렉션 만들기
명명된 벡터 컬렉션 만들기에 대한 직접 링크

// Create a collection with multiple named vector spaces
await store.createIndex({
indexName: 'multi_modal',
dimension: 768, // fallback
namedVectors: {
text: { size: 768, distance: 'cosine' },
image: { size: 512, distance: 'euclidean' },
},
})

upsert()
upsert에 대한 직접 링크

indexName:

string
upsert할 인덱스의 이름

vectors:

number[][]
임베딩 벡터 배열

metadata?:

Record<string, any>[]
각 벡터의 메타데이터

ids?:

string[]
선택적 벡터 ID(제공하지 않으면 자동 생성)

vectorName?:

string
이름이 지정된 벡터를 사용할 때 upsert할 벡터 공간의 이름입니다.

명명된 벡터 공간에 Upserting
명명된 벡터 공간에 Upserting에 대한 직접 링크

// Upsert into the "text" vector space
await store.upsert({
indexName: 'multi_modal',
vectors: textEmbeddings,
metadata: textMetadata,
vectorName: 'text',
})

// Upsert into the "image" vector space
await store.upsert({
indexName: 'multi_modal',
vectors: imageEmbeddings,
metadata: imageMetadata,
vectorName: 'image',
})

query()
query에 대한 직접 링크

indexName:

string
쿼리할 인덱스의 이름

queryVector:

number[]
유사한 벡터를 찾기 위한 쿼리 벡터

topK?:

number
= 10
반환할 결과 수

filter?:

Record<string, any>
쿼리용 메타데이터 필터

includeVector?:

boolean
= false
결과에 벡터를 포함할지 여부

using?:

string
이름이 지정된 벡터를 사용할 때 쿼리할 벡터 필드의 이름입니다. 컬렉션에 이름이 지정된 벡터 필드가 여러 개 있을 때 사용하세요.

명명된 벡터
명명된 벡터에 대한 직접 링크

Qdrant는 각 벡터 필드에 이름을 할당하는 컬렉션당 여러 벡터를 지원합니다. 쿼리할 벡터 필드를 선택하려면 using 매개변수를 사용하세요.

const results = await store.query({
indexName: 'my_index',
queryVector: embedding,
topK: 10,
using: 'title_embedding', // Query against a specific named vector
})

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

해당 ID로 지정된 인덱스에서 벡터를 삭제합니다.

deleteVectors()
deletevectors에 대한 직접 링크

ID 또는 메타데이터 필터를 기준으로 여러 벡터를 삭제합니다. ids 또는 filter 중 하나만 제공해야 합니다.

indexName:

string
삭제할 벡터가 포함된 인덱스의 이름

ids?:

string[]
삭제할 벡터 ID 배열(filter와 함께 사용할 수 없음)

filter?:

Record<string, any>
삭제할 벡터를 식별하는 메타데이터 필터(ids와 함께 사용할 수 없음)

createPayloadIndex()
createpayloadindex에 대한 직접 링크

효율적인 필터링을 활성화하도록 컬렉션 필드에 페이로드(메타데이터) 인덱스를 생성합니다. 이는 Qdrant Cloud 및 strict_mode_config = true인 모든 Qdrant 인스턴스에 필수입니다.

indexName:

string
페이로드 인덱스를 생성할 컬렉션의 이름

fieldName:

string
인덱싱할 페이로드 필드의 이름

fieldSchema:

'keyword' | 'integer' | 'float' | 'geo' | 'text' | 'bool' | 'datetime' | 'uuid'
페이로드 필드의 스키마 유형

wait?:

boolean
= true
작업이 완료될 때까지 기다릴지 여부
// Create a keyword index for filtering by source
await store.createPayloadIndex({
indexName: 'my_index',
fieldName: 'source',
fieldSchema: 'keyword',
})

const results = await store.query({
indexName: 'my_index',
queryVector: queryVector,
filter: { source: 'document-a' },
})

deletePayloadIndex()
deletepayloadindex에 대한 직접 링크

컬렉션 필드에서 페이로드 인덱스를 제거합니다.

indexName:

string
페이로드 인덱스를 삭제할 컬렉션의 이름

fieldName:

string
삭제할 페이로드 필드 인덱스의 이름

wait?:

boolean
= true
작업이 완료될 때까지 기다릴지 여부

응답 유형
응답 유형에 대한 직접 링크

쿼리 결과는 다음 형식으로 반환됩니다.

interface QueryResult {
id: string
score: number
metadata: Record<string, any>
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
}
}