Class OpenSearchEmbeddingStore

java.lang.Object
dev.langchain4j.store.embedding.opensearch.OpenSearchEmbeddingStore
All Implemented Interfaces:
EmbeddingStore<TextSegment>

public class OpenSearchEmbeddingStore extends Object implements EmbeddingStore<TextSegment>
Represents an OpenSearch index as an embedding store. This implementation uses K-NN and the cosinesimil space type.
  • Constructor Details

    • OpenSearchEmbeddingStore

      public OpenSearchEmbeddingStore(String serverUrl, String apiKey, String userName, String password, String indexName)
      Creates an instance of OpenSearchEmbeddingStore to connect with OpenSearch clusters running locally and network reachable.
      Parameters:
      serverUrl - OpenSearch Server URL.
      apiKey - OpenSearch API key (optional)
      userName - OpenSearch username (optional)
      password - OpenSearch password (optional)
      indexName - OpenSearch index name.
    • OpenSearchEmbeddingStore

      public OpenSearchEmbeddingStore(String serverUrl, String serviceName, String region, org.opensearch.client.transport.aws.AwsSdk2TransportOptions options, String indexName)
      Creates an instance of OpenSearchEmbeddingStore to connect with OpenSearch clusters running as a fully managed service at AWS.
      Parameters:
      serverUrl - OpenSearch Server URL.
      serviceName - The AWS signing service name, one of `es` (Amazon OpenSearch) or `aoss` (Amazon OpenSearch Serverless).
      region - The AWS region for which requests will be signed. This should typically match the region in `serverUrl`.
      options - The options to establish connection with the service. It must include which credentials should be used.
      indexName - OpenSearch index name.
    • OpenSearchEmbeddingStore

      public OpenSearchEmbeddingStore(org.opensearch.client.opensearch.OpenSearchClient openSearchClient, String indexName)
      Creates an instance of OpenSearchEmbeddingStore using provided OpenSearchClient
      Parameters:
      openSearchClient - OpenSearch client provided
      indexName - OpenSearch index name.
  • Method Details

    • builder

      public static OpenSearchEmbeddingStore.Builder builder()
    • add

      public String add(Embedding embedding)
      Description copied from interface: EmbeddingStore
      Adds a given embedding to the store.
      Specified by:
      add in interface EmbeddingStore<TextSegment>
      Parameters:
      embedding - The embedding to be added to the store.
      Returns:
      The auto-generated ID associated with the added embedding.
    • add

      public void add(String id, Embedding embedding)
      Description copied from interface: EmbeddingStore
      Adds a given embedding to the store.
      Specified by:
      add in interface EmbeddingStore<TextSegment>
      Parameters:
      id - The unique identifier for the embedding to be added.
      embedding - The embedding to be added to the store.
    • add

      public String add(Embedding embedding, TextSegment textSegment)
      Description copied from interface: EmbeddingStore
      Adds a given embedding and the corresponding content that has been embedded to the store.
      Specified by:
      add in interface EmbeddingStore<TextSegment>
      Parameters:
      embedding - The embedding to be added to the store.
      textSegment - Original content that was embedded.
      Returns:
      The auto-generated ID associated with the added embedding.
    • addAll

      public List<String> addAll(List<Embedding> embeddings)
      Description copied from interface: EmbeddingStore
      Adds multiple embeddings to the store.
      Specified by:
      addAll in interface EmbeddingStore<TextSegment>
      Parameters:
      embeddings - A list of embeddings to be added to the store.
      Returns:
      A list of auto-generated IDs associated with the added embeddings.
    • addAll

      public List<String> addAll(List<Embedding> embeddings, List<TextSegment> embedded)
      Description copied from interface: EmbeddingStore
      Adds multiple embeddings and their corresponding contents that have been embedded to the store.
      Specified by:
      addAll in interface EmbeddingStore<TextSegment>
      Parameters:
      embeddings - A list of embeddings to be added to the store.
      embedded - A list of original contents that were embedded.
      Returns:
      A list of auto-generated IDs associated with the added embeddings.
    • findRelevant

      public List<EmbeddingMatch<TextSegment>> findRelevant(Embedding referenceEmbedding, int maxResults, double minScore)
      This implementation uses the exact k-NN with scoring script to calculate See https://opensearch.org/docs/latest/search-plugins/knn/knn-score-script/
      Specified by:
      findRelevant in interface EmbeddingStore<TextSegment>
      Parameters:
      referenceEmbedding - The embedding used as a reference. Returned embeddings should be relevant (closest) to this one.
      maxResults - The maximum number of embeddings to be returned.
      minScore - The minimum relevance score, ranging from 0 to 1 (inclusive). Only embeddings with a score of this value or higher will be returned.
      Returns:
      A list of embedding matches. Each embedding match includes a relevance score (derivative of cosine distance), ranging from 0 (not relevant) to 1 (highly relevant).