Class for interacting with an Elasticsearch database. It extends the VectorStore base class and provides methods for adding documents and vectors to the Elasticsearch database, performing similarity searches, deleting documents, and more.

Hierarchy

  • VectorStore
    • ElasticVectorSearch

Constructors

Properties

FilterType: ElasticFilter
embeddings: EmbeddingsInterface

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

Methods

  • Method to add documents to the Elasticsearch database. It first converts the documents to vectors using the embeddings, then adds the vectors to the database.

    Parameters

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

      The documents to add to the database.

    • Optionaloptions: {
          ids?: string[];
      }

      Optional parameter that can contain the IDs for the documents.

      • Optionalids?: string[]

    Returns Promise<string[]>

    A promise that resolves with the IDs of the added documents.

  • Method to add vectors to the Elasticsearch database. It ensures the index exists, then adds the vectors and their corresponding documents to the database.

    Parameters

    • vectors: number[][]

      The vectors to add to the database.

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

      The documents corresponding to the vectors.

    • Optionaloptions: {
          ids?: string[];
      }

      Optional parameter that can contain the IDs for the documents.

      • Optionalids?: string[]

    Returns Promise<string[]>

    A promise that resolves with the IDs of the added documents.

  • Creates a VectorStoreRetriever instance with flexible configuration options.

    Parameters

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

      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: ElasticFilter

      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<ElasticVectorSearch>

    • 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 },
    });
  • Method to delete documents from the Elasticsearch database.

    Parameters

    • params: {
          ids: string[];
      }

      Object containing the IDs of the documents to delete.

      • ids: string[]

    Returns Promise<void>

    A promise that resolves when the deletion is complete.

  • 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<ElasticFilter>
    • _callbacks: undefined | Callbacks

    Returns Promise<DocumentInterface<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: ElasticFilter

      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 to perform a similarity search in the Elasticsearch database using a vector. It returns the k most similar documents along with their similarity scores.

    Parameters

    • query: number[]

      The query vector.

    • k: number

      The number of most similar documents to return.

    • Optionalfilter: ElasticFilter

      Optional filter to apply to the search.

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

    A promise that resolves with an array of tuples, where each tuple contains a Document and its similarity score.

  • 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: ElasticFilter

      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 ElasticVectorSearch instance from Document instances. It adds the documents to the Elasticsearch database, then returns the ElasticVectorSearch instance.

    Parameters

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

      The Document instances to create the ElasticVectorSearch instance from.

    • embeddings: EmbeddingsInterface

      The embeddings to use for the documents.

    • dbConfig: ElasticClientArgs

      The configuration for the Elasticsearch database.

    Returns Promise<ElasticVectorSearch>

    A promise that resolves with the created ElasticVectorSearch instance.

  • Static method to create an ElasticVectorSearch instance from an existing index in the Elasticsearch database. It checks if the index exists, then returns the ElasticVectorSearch instance if it does.

    Parameters

    • embeddings: EmbeddingsInterface

      The embeddings to use for the documents.

    • dbConfig: ElasticClientArgs

      The configuration for the Elasticsearch database.

    Returns Promise<ElasticVectorSearch>

    A promise that resolves with the created ElasticVectorSearch instance if the index exists, otherwise it throws an error.

  • Static method to create an ElasticVectorSearch instance from texts. It creates Document instances from the texts and their corresponding metadata, then calls the fromDocuments method to create the ElasticVectorSearch instance.

    Parameters

    • texts: string[]

      The texts to create the ElasticVectorSearch instance from.

    • metadatas: object | object[]

      The metadata corresponding to the texts.

    • embeddings: EmbeddingsInterface

      The embeddings to use for the documents.

    • args: ElasticClientArgs

      The arguments to create the Elasticsearch client.

    Returns Promise<ElasticVectorSearch>

    A promise that resolves with the created ElasticVectorSearch instance.