Elasticsearch 벡터 스토어
그만큼ElasticSearchVector클래스는 다음을 사용하여 벡터 검색을 제공합니다.엘라스틱서치그것으로dense_vector필드 유형 및 k-NN 검색 기능.
그것은의 일부입니다@mastra/elasticsearch패키지.
설치설치에 대한 직접 링크
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/elasticsearch@latest
pnpm add @mastra/elasticsearch@latest
yarn add @mastra/elasticsearch@latest
bun add @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
}