AzureAISearchVectorStore
Defined in: packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:282
Azure AI Search vector store.
Example
Section titled “Example”import { DefaultAzureCredential, getBearerTokenProvider} from "@azure/identity";import {KnownAnalyzerNames, KnownVectorSearchAlgorithmKind } from "@azure/search-documents";
// 1- Setup Azure OpenAIconst azureADTokenProvider = getBearerTokenProvider( new DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default",);
// IMPORTANT: You need to deploy your own embedding model as well as your own chat completion model// NOTE: You can use whatever embedding model and language model that is supported by vectorstoresconst azure = { azureADTokenProvider, deployment: process.env.AZURE_DEPLOYMENT_NAME,};Settings.llm = new OpenAI({ azure });Settings.embedModel = new OpenAIEmbedding({ model: process.env.EMBEDDING_MODEL, azure: { ...azure, deployment: process.env.EMBEDDING_MODEL, },});
// ---------------------------------------------------------// 2- Setup Azure AI Search// Define env variables in .env file// AZURE_AI_SEARCH_ENDPOINT=// AZURE_AI_SEARCH_KEY=// AZURE_OPENAI_ENDPOINT=// EMBEDDING_MODEL=text-embedding-ada-002// AZURE_DEPLOYMENT_NAME=gpt-4// AZURE_API_VERSION=2024-09-01-preview
// Define index nameconst indexName = "vectorstores-vector-store";
// ---------------------------------------------------------// 3a- Create Index (if it does not exist)// id: Edm.String// chunk: Edm.String// embedding: Collection(Edm.Single)// metadata: Edm.String// doc_id: Edm.String// author: Edm.String// theme: Edm.String// director: Edm.String
// Define metadata fields with their respective configurationsconst metadataFields = { author: "author", theme: ["theme", MetadataIndexFieldType.STRING], director: "director",};
// Define index parameters and vector store configuration// Index validation:// - IndexManagement.VALIDATE_INDEX: will validate before creating emnbedding index and will throw a runtime error if the index does not exist// - IndexManagement.NO_VALIDATION: will try to access the index and will throw a runtime error if the index does not exist// - IndexManagement.CREATE_IF_NOT_EXISTS: will create the index if it does not exist
const vectorStore = new AzureAISearchVectorStore({ filterableMetadataFieldKeys: metadataFields as unknown as FilterableMetadataFieldKeysType, indexName, indexManagement: IndexManagement.CREATE_IF_NOT_EXISTS, idFieldKey: "id", chunkFieldKey: "chunk", embeddingFieldKey: "embedding", metadataStringFieldKey: "metadata", docIdFieldKey: "doc_id", embeddingDimensionality: 1536, hiddenFieldKeys: ["embedding"], languageAnalyzer: KnownAnalyzerNames.EnLucene, // store vectors on disk vectorAlgorithmType: KnownVectorSearchAlgorithmKind.ExhaustiveKnn,
// Optional: Set to "scalar" or "binary" if using HNSW compressionType: KnownVectorSearchCompressionKind.BinaryQuantization,});
// ---------------------------------------------------------// 3a- Loading documents// Load the documents stored in the data/paul_graham/ using the SimpleDirectoryReader// NOTE: You can use whatever reader that is supported by vectorstores
// Load documents using a directory readerconst documents = await new SimpleDirectoryReader().loadData( "data/paul_graham/",);
// Create index from documents with the specified vector storeconst index = await VectorStoreIndex.fromDocuments(documents, { vectorStore, docStoreStrategy: DocStoreStrategy.UPSERTS,});
const queryEngine = index.asQueryEngine();const response = await queryEngine.query({ query: "What did the author do growing up?", similarityTopK: 3,} as any);console.log({ response });
## Extends
- [`BaseVectorStore`](basevectorstore.md)
## Type Parameters
### T
`T` *extends* [`R`](../type-aliases/r.md)
## Constructors
### Constructor
> **new AzureAISearchVectorStore**\<`T`\>(`options`): `AzureAISearchVectorStore`\<`T`\>
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:309](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L309)
#### Parameters
##### options
[`AzureAISearchOptions`](../interfaces/azureaisearchoptions.md)\<`T`\> & [`VectorStoreBaseParams`](../type-aliases/vectorstorebaseparams.md)
#### Returns
`AzureAISearchVectorStore`\<`T`\>
#### Overrides
[`BaseVectorStore`](basevectorstore.md).[`constructor`](basevectorstore.md#constructor)
## Properties
### storesText
> **storesText**: `boolean` = `true`
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:283](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L283)
#### Overrides
[`BaseVectorStore`](basevectorstore.md).[`storesText`](basevectorstore.md#storestext)
***
### \_searchClient
> **\_searchClient**: `SearchClient`\<`T`\> \| `undefined`
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:284](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L284)
***
### \_indexClient
> **\_indexClient**: `SearchIndexClient` \| `undefined`
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:290](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L290)
***
### flatMetadata
> **flatMetadata**: `boolean` = `true`
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:296](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L296)
***
### embedModel
> **embedModel**: [`BaseEmbedding`](baseembedding.md)
Defined in: [packages/core/src/vector-store/index.ts:128](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/core/src/vector-store/index.ts#L128)
#### Inherited from
[`BaseVectorStore`](basevectorstore.md).[`embedModel`](basevectorstore.md#embedmodel)
***
### isEmbeddingQuery?
> `optional` **isEmbeddingQuery**: `boolean`
Defined in: [packages/core/src/vector-store/index.ts:130](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/core/src/vector-store/index.ts#L130)
#### Inherited from
[`BaseVectorStore`](basevectorstore.md).[`isEmbeddingQuery`](basevectorstore.md#isembeddingquery)
## Methods
### createSearchIndexClient()
> **createSearchIndexClient**(`options`): `void`
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:858](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L858)
#### Parameters
##### options
[`AzureAISearchOptions`](../interfaces/azureaisearchoptions.md)\<`T`\>
#### Returns
`void`
***
### createSearchClient()
> **createSearchClient**(`options`): `void`
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:875](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L875)
#### Parameters
##### options
[`AzureAISearchOptions`](../interfaces/azureaisearchoptions.md)\<`T`\>
#### Returns
`void`
***
### client()
> **client**(): `SearchClient`\<`T`\> \| `undefined`
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:1059](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L1059)
Get search client
#### Returns
`SearchClient`\<`T`\> \| `undefined`
Azure AI Search client. See SearchClient
#### Overrides
[`BaseVectorStore`](basevectorstore.md).[`client`](basevectorstore.md#client-1)
***
### indexClient()
> **indexClient**(): `SearchIndexClient` \| `undefined`
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:1067](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L1067)
Get index client
#### Returns
`SearchIndexClient` \| `undefined`
Azure AI Search index client. See SearchIndexClient
***
### add()
> **add**(`nodes`): `Promise`\<`string`[]\>
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:1076](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L1076)
Add nodes to index associated with the configured search client.
#### Parameters
##### nodes
[`BaseNode`](basenode.md)\<[`Metadata`](../type-aliases/metadata.md)\>[]
List of nodes with embeddings to add to the index
#### Returns
`Promise`\<`string`[]\>
List of node IDs that were added to the index
#### Overrides
[`BaseVectorStore`](basevectorstore.md).[`add`](basevectorstore.md#add)
***
### delete()
> **delete**(`refDocId`): `Promise`\<`void`\>
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:1141](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L1141)
Delete documents from the AI Search Index with docIdFieldKey (doc_id) field equal to refDocId.
#### Parameters
##### refDocId
`string`
The reference document ID to delete from the index
#### Returns
`Promise`\<`void`\>
#### Overrides
[`BaseVectorStore`](basevectorstore.md).[`delete`](basevectorstore.md#delete)
***
### getNodes()
> **getNodes**(`nodeIds?`, `filters?`, `limit?`): `Promise`\<[`BaseNode`](basenode.md)\<[`Metadata`](../type-aliases/metadata.md)\>[]\>
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:1188](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L1188)
Get nodes asynchronously from the Azure AI Search index.
#### Parameters
##### nodeIds?
`string`[]
List of node IDs to retrieve from the index
##### filters?
[`MetadataFilters`](../interfaces/metadatafilters.md)
Metadata filters to apply to the search
##### limit?
`number`
Maximum number of nodes to retrieve
#### Returns
`Promise`\<[`BaseNode`](basenode.md)\<[`Metadata`](../type-aliases/metadata.md)\>[]\>
List of nodes retrieved from the index
***
### query()
> **query**(`query`): `Promise`\<[`VectorStoreQueryResult`](../interfaces/vectorstorequeryresult.md)\>
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:1241](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L1241)
#### Parameters
##### query
[`VectorStoreQuery`](../interfaces/vectorstorequery.md)\<`unknown`\> & `object`
#### Returns
`Promise`\<[`VectorStoreQueryResult`](../interfaces/vectorstorequeryresult.md)\>
#### Overrides
[`BaseVectorStore`](basevectorstore.md).[`query`](basevectorstore.md#query)
***
### exists()
> **exists**(`refDocId`): `Promise`\<`boolean`\>
Defined in: [packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts:1298](https://github.com/marcusschiesser/vectorstores/blob/ddf6b48881a800a24be35adebce6878566cf0014/packages/providers/storage/azure/src/vectorStore/AzureAISearchVectorStore.ts#L1298)
Check if any nodes exist for the given document reference ID.Used for de-duplication during ingestion.
#### Parameters
##### refDocId
`string`
The reference document ID to check
#### Returns
`Promise`\<`boolean`\>
true if any nodes with this ref_doc_id exist
#### Overrides
[`BaseVectorStore`](basevectorstore.md).[`exists`](basevectorstore.md#exists)