Class OpenSearchEmbeddingStore

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

public class OpenSearchEmbeddingStore extends Object implements dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
Represents an OpenSearch index as an embedding store. This implementation uses K-NN and the cosinesimil space type.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    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.
    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.
    OpenSearchEmbeddingStore(org.opensearch.client.opensearch.OpenSearchClient openSearchClient, String indexName)
    Creates an instance of OpenSearchEmbeddingStore using provided OpenSearchClient
  • Method Summary

    Modifier and Type
    Method
    Description
    add(dev.langchain4j.data.embedding.Embedding embedding)
     
    add(dev.langchain4j.data.embedding.Embedding embedding, dev.langchain4j.data.segment.TextSegment textSegment)
     
    void
    add(String id, dev.langchain4j.data.embedding.Embedding embedding)
     
    addAll(List<dev.langchain4j.data.embedding.Embedding> embeddings)
     
    addAll(List<dev.langchain4j.data.embedding.Embedding> embeddings, List<dev.langchain4j.data.segment.TextSegment> embedded)
     
     
    List<dev.langchain4j.store.embedding.EmbeddingMatch<dev.langchain4j.data.segment.TextSegment>>
    findRelevant(dev.langchain4j.data.embedding.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/

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface dev.langchain4j.store.embedding.EmbeddingStore

    findRelevant, findRelevant, findRelevant, search
  • 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(dev.langchain4j.data.embedding.Embedding embedding)
      Specified by:
      add in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • add

      public void add(String id, dev.langchain4j.data.embedding.Embedding embedding)
      Specified by:
      add in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • add

      public String add(dev.langchain4j.data.embedding.Embedding embedding, dev.langchain4j.data.segment.TextSegment textSegment)
      Specified by:
      add in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • addAll

      public List<String> addAll(List<dev.langchain4j.data.embedding.Embedding> embeddings)
      Specified by:
      addAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • addAll

      public List<String> addAll(List<dev.langchain4j.data.embedding.Embedding> embeddings, List<dev.langchain4j.data.segment.TextSegment> embedded)
      Specified by:
      addAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • findRelevant

      public List<dev.langchain4j.store.embedding.EmbeddingMatch<dev.langchain4j.data.segment.TextSegment>> findRelevant(dev.langchain4j.data.embedding.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 dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>