> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # Elasticsearch 벡터 스토어 그만큼`ElasticSearchVector`클래스는 다음을 사용하여 벡터 검색을 제공합니다.[엘라스틱서치](https://www.elastic.co/elasticsearch/)그것으로`dense_vector`필드 유형 및 k-NN 검색 기능. 그것은의 일부입니다`@mastra/elasticsearch`패키지. ## 설치 **npm**: ```bash npm install @mastra/elasticsearch@latest ``` **pnpm**: ```bash pnpm add @mastra/elasticsearch@latest ``` **Yarn**: ```bash yarn add @mastra/elasticsearch@latest ``` **Bun**: ```bash bun add @mastra/elasticsearch@latest ``` ## 용법 ```typescript 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()` 지정된 구성으로 새 인덱스를 생성합니다. **indexName** (`string`): 생성할 인덱스의 이름 **dimension** (`number`): 벡터 차원(임베딩 Model과 일치해야 함) **metric** (`'cosine' | 'euclidean' | 'dotproduct'`): 유사도 검색에 사용할 거리 측정 방식 (Default: `cosine`) ### `upsert()` 인덱스에 벡터와 해당 메타데이터를 추가하거나 업데이트합니다. **indexName** (`string`): 데이터를 삽입할 인덱스의 이름 **vectors** (`number[][]`): 임베딩 벡터 배열 **metadata** (`Record[]`): 각 벡터의 메타데이터 **ids** (`string[]`): 선택적 벡터 ID(제공하지 않으면 자동 생성) ### `query()` 선택적 메타데이터 필터링을 사용하여 유사한 벡터를 검색합니다. **indexName** (`string`): 검색할 인덱스의 이름 **queryVector** (`number[]`): 유사한 벡터를 찾는 데 사용할 쿼리 벡터 **topK** (`number`): 반환할 결과 수 (Default: `10`) **filter** (`Record`): 메타데이터 필터 **includeVector** (`boolean`): 결과에 벡터 데이터를 포함할지 여부 (Default: `false`) ### `describeIndex()` 인덱스에 대한 정보를 가져옵니다. **indexName** (`string`): 설명할 인덱스의 이름 보고: ```typescript interface IndexStats { dimension: number count: number metric: 'cosine' | 'euclidean' | 'dotproduct' } ``` ### `deleteIndex()` 인덱스와 해당 데이터를 모두 삭제합니다. **indexName** (`string`): 삭제할 인덱스의 이름 ### `listIndexes()` 모든 벡터 인덱스를 나열합니다. 보고:`Promise` ### `updateVector()` ID 또는 메타데이터 필터를 기준으로 단일 벡터를 업데이트합니다. `id` 또는 `filter` 중 하나만 제공해야 하며, 둘 다 제공해서는 안 됩니다. **indexName** (`string`): 벡터가 포함된 인덱스의 이름 **id** (`string`): 업데이트할 벡터의 ID(filter와 함께 사용할 수 없음) **filter** (`Record`): 업데이트할 벡터를 식별하는 메타데이터 필터(id와 함께 사용할 수 없음) **update** (`object`): 벡터 및/또는 메타데이터가 포함된 업데이트 데이터 **update.vector** (`number[]`): 새 벡터 데이터 **update.metadata** (`Record`): 새 메타데이터 ### `deleteVector()` ID별로 단일 벡터를 삭제합니다. **indexName** (`string`): 벡터가 포함된 인덱스의 이름 **id** (`string`): 삭제할 벡터의 ID ### `deleteVectors()` ID 또는 메타데이터 필터를 기준으로 여러 벡터를 삭제합니다. `ids` 또는 `filter` 중 하나만 제공해야 하며, 둘 다 제공해서는 안 됩니다. **indexName** (`string`): 삭제할 벡터가 포함된 인덱스의 이름 **ids** (`string[]`): 삭제할 벡터 ID 배열(filter와 함께 사용할 수 없음) **filter** (`Record`): 삭제할 벡터를 식별하는 메타데이터 필터(ids와 함께 사용할 수 없음) ## 응답 유형 쿼리 결과는 다음 형식으로 반환됩니다. ```typescript interface QueryResult { id: string score: number metadata: Record vector?: number[] // Only included if includeVector is true } ``` ## 관련된 - [메타데이터 필터](https://mastra.zisheng.pro/ko/reference/rag/metadata-filters)