본문으로 건너뛰기

Elasticsearch 벡터 스토어

그만큼ElasticSearchVector클래스는 다음을 사용하여 벡터 검색을 제공합니다.엘라스틱서치그것으로dense_vector필드 유형 및 k-NN 검색 기능. 그것은의 일부입니다@mastra/elasticsearch패키지.

설치
설치에 대한 직접 링크

npm install @mastra/elasticsearch@latest

용법
용법에 대한 직접 링크

import { ElasticSearchVector } from "@mastra/elasticsearch";

const store = new ElasticSearchVector({
id: "elasticsearch-vector",
url: process.env.ELASTICSEARCH_URL,
});

// Create an index
await store.createIndex({
indexName: "my-collection",
dimension: 1536,
});

// Add vectors with metadata
const vectors = [[0.1, 0.2, ...], [0.3, 0.4, ...]];
const metadata = [
{ text: "first document", category: "A" },
{ text: "second document", category: "B" }
];
await store.upsert({
indexName: "my-collection",
vectors,
metadata,
});

// Query similar vectors
const results = await store.query({
indexName: "my-collection",
queryVector: [0.1, 0.2, ...],
topK: 10,
filter: { category: "A" },
});

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

id:

string
이 벡터 저장소 인스턴스의 고유 식별자

url:

string
Elasticsearch 연결 URL(예: 'http://localhost:9200')

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

createIndex()
createindex에 대한 직접 링크

지정된 구성으로 새 인덱스를 생성합니다.

indexName:

string
생성할 인덱스의 이름

dimension:

number
벡터 차원(임베딩 Model과 일치해야 함)

metric?:

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

upsert()
upsert에 대한 직접 링크

인덱스에 벡터와 해당 메타데이터를 추가하거나 업데이트합니다.

indexName:

string
데이터를 삽입할 인덱스의 이름

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
결과에 벡터 데이터를 포함할지 여부

describeIndex()
describeindex에 대한 직접 링크

인덱스에 대한 정보를 가져옵니다.

indexName:

string
설명할 인덱스의 이름

보고:

interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}

deleteIndex()
deleteindex에 대한 직접 링크

인덱스와 해당 데이터를 모두 삭제합니다.

indexName:

string
삭제할 인덱스의 이름

listIndexes()
listindexes에 대한 직접 링크

모든 벡터 인덱스를 나열합니다.

보고:Promise<string[]>

updateVector()
updatevector에 대한 직접 링크

ID 또는 메타데이터 필터를 기준으로 단일 벡터를 업데이트합니다. id 또는 filter 중 하나만 제공해야 하며, 둘 다 제공해서는 안 됩니다.

indexName:

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

id?:

string
업데이트할 벡터의 ID(filter와 함께 사용할 수 없음)

filter?:

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

update:

object
벡터 및/또는 메타데이터가 포함된 업데이트 데이터

update.vector?:

number[]
새 벡터 데이터

update.metadata?:

Record<string, any>
새 메타데이터

deleteVector()
deletevector에 대한 직접 링크

ID별로 단일 벡터를 삭제합니다.

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
}