Install and import from "@langchain/azure-cosmosdb" instead. Azure Cosmos DB for MongoDB vCore vector store. To use this, you should have both:

  • the mongodb NPM package installed
  • a connection string associated with a MongoDB VCore Cluster

You do not need to create a database or collection, it will be created automatically.

Though you do need to create an index on the collection, which can be done using the createIndex method.

Hierarchy

  • VectorStore
    • AzureCosmosDBVectorStore

Constructors

Properties

FilterType: string | object

Defines the filter type used in search and delete operations. Can be an object for structured conditions or a string for simpler filtering.

embeddingKey: string
embeddings: EmbeddingsInterface

Embeddings interface for generating vector embeddings from text queries, enabling vector-based similarity searches.

indexName: string
textKey: string

Methods

  • Method for adding documents to the AzureCosmosDBVectorStore. It first converts the documents to texts and then adds them as vectors.

    Parameters

    • documents: DocumentInterface<Record<string, any>>[]

      The documents to add.

    Returns Promise<string[]>

    A promise that resolves to the added documents IDs.

  • Method for adding vectors to the AzureCosmosDBVectorStore.

    Parameters

    • vectors: number[][]

      Vectors to be added.

    • documents: DocumentInterface<Record<string, any>>[]

      Corresponding documents to be added.

    Returns Promise<string[]>

    A promise that resolves to the added documents IDs.

  • Creates a VectorStoreRetriever instance with flexible configuration options.

    Parameters

    • OptionalkOrFields: number | Partial<VectorStoreRetrieverInput<AzureCosmosDBVectorStore>>

      If a number is provided, it sets the k parameter (number of items to retrieve).

      • If an object is provided, it should contain various configuration options.
    • Optionalfilter: string | object

      Optional filter criteria to limit the items retrieved based on the specified filter type.

    • Optionalcallbacks: Callbacks

      Optional callbacks that may be triggered at specific stages of the retrieval process.

    • Optionaltags: string[]

      Tags to categorize or label the VectorStoreRetriever. Defaults to an empty array if not provided.

    • Optionalmetadata: Record<string, unknown>

      Additional metadata as key-value pairs to add contextual information for the retrieval process.

    • Optionalverbose: boolean

      If true, enables detailed logging for the retrieval process. Defaults to false.

    Returns VectorStoreRetriever<AzureCosmosDBVectorStore>

    • A configured VectorStoreRetriever instance based on the provided parameters.

    Basic usage with a k value:

    const retriever = myVectorStore.asRetriever(5);
    

    Usage with a configuration object:

    const retriever = myVectorStore.asRetriever({
    k: 10,
    filter: myFilter,
    tags: ['example', 'test'],
    verbose: true,
    searchType: 'mmr',
    searchKwargs: { alpha: 0.5 },
    });
  • Closes any newly instanciated Azure Cosmos DB client. If the client was passed in the constructor, it will not be closed.

    Returns Promise<void>

    A promise that resolves when any newly instanciated Azure Cosmos DB client been closed.

  • Creates an index on the collection with the specified index name during instance construction.

    Setting the numLists parameter correctly is important for achieving good accuracy and performance. Since the vector store uses IVF as the indexing strategy, you should create the index only after you have loaded a large enough sample documents to ensure that the centroids for the respective buckets are faily distributed.

    We recommend that numLists is set to documentCount/1000 for up to 1 million documents and to sqrt(documentCount) for more than 1 million documents. As the number of items in your database grows, you should tune numLists to be larger in order to achieve good latency performance for vector search.

    If you're experimenting with a new scenario or creating a small demo, you can start with numLists set to 1 to perform a brute-force search across all vectors. This should provide you with the most accurate results from the vector search, however be aware that the search speed and latency will be slow. After your initial setup, you should go ahead and tune the numLists parameter using the above guidance.

    Parameters

    • numLists: number = 100

      This integer is the number of clusters that the inverted file (IVF) index uses to group the vector data. We recommend that numLists is set to documentCount/1000 for up to 1 million documents and to sqrt(documentCount) for more than 1 million documents. Using a numLists value of 1 is akin to performing brute-force search, which has limited performance

    • dimensions: undefined | number = undefined

      Number of dimensions for vector similarity. The maximum number of supported dimensions is 2000. If no number is provided, it will be determined automatically by embedding a short text.

    • similarity: AzureCosmosDBSimilarityType = AzureCosmosDBSimilarityType.COS

      Similarity metric to use with the IVF index. Possible options are:

      • CosmosDBSimilarityType.COS (cosine distance)
      • CosmosDBSimilarityType.L2 (Euclidean distance)
      • CosmosDBSimilarityType.IP (inner product)

    Returns Promise<void>

    A promise that resolves when the index has been created.

  • Removes specified documents from the AzureCosmosDBVectorStore. If no IDs or filter are specified, all documents will be removed.

    Parameters

    Returns Promise<void>

    A promise that resolves when the documents have been removed.

  • Return documents selected using the maximal marginal relevance. Maximal marginal relevance optimizes for similarity to the query AND diversity among selected documents.

    Parameters

    • query: string

      Text to look up documents similar to.

    • options: MaxMarginalRelevanceSearchOptions<string | object>

    Returns Promise<Document<Record<string, any>>[]>

    List of documents selected by maximal marginal relevance.

  • Searches for documents similar to a text query by embedding the query and performing a similarity search on the resulting vector.

    Parameters

    • query: string

      Text query for finding similar documents.

    • Optionalk: number

      Number of similar results to return. Defaults to 4.

    • Optionalfilter: string | object

      Optional filter based on FilterType.

    • Optional_callbacks: Callbacks

      Optional callbacks for monitoring search progress

    Returns Promise<DocumentInterface<Record<string, any>>[]>

    A promise resolving to an array of DocumentInterface instances representing similar documents.

  • Method that performs a similarity search on the vectors stored in the collection. It returns a list of documents and their corresponding similarity scores.

    Parameters

    • queryVector: number[]

      Query vector for the similarity search.

    • k: number = 4

    Returns Promise<[Document<Record<string, any>>, number][]>

    Promise that resolves to a list of documents and their corresponding similarity scores.

  • Searches for documents similar to a text query by embedding the query, and returns results with similarity scores.

    Parameters

    • query: string

      Text query for finding similar documents.

    • Optionalk: number

      Number of similar results to return. Defaults to 4.

    • Optionalfilter: string | object

      Optional filter based on FilterType.

    • Optional_callbacks: Callbacks

      Optional callbacks for monitoring search progress

    Returns Promise<[DocumentInterface<Record<string, any>>, number][]>

    A promise resolving to an array of tuples, each containing a document and its similarity score.

  • Returns Serialized

  • Static method to create an instance of AzureCosmosDBVectorStore from a list of documents. It first converts the documents to vectors and then adds them to the collection.

    Parameters

    • docs: Document<Record<string, any>>[]

      List of documents to be converted to vectors.

    • embeddings: EmbeddingsInterface

      Embeddings to be used for conversion.

    • dbConfig: AzureCosmosDBConfig

      Database configuration for Azure Cosmos DB for MongoDB vCore.

    Returns Promise<AzureCosmosDBVectorStore>

    Promise that resolves to a new instance of AzureCosmosDBVectorStore.

  • Static method to create an instance of AzureCosmosDBVectorStore from a list of texts. It first converts the texts to vectors and then adds them to the collection.

    Parameters

    • texts: string[]

      List of texts to be converted to vectors.

    • metadatas: object | object[]

      Metadata for the texts.

    • embeddings: EmbeddingsInterface

      Embeddings to be used for conversion.

    • dbConfig: AzureCosmosDBConfig

      Database configuration for Azure Cosmos DB for MongoDB vCore.

    Returns Promise<AzureCosmosDBVectorStore>

    Promise that resolves to a new instance of AzureCosmosDBVectorStore.