Class 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.
    • 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

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      String add​(dev.langchain4j.data.embedding.Embedding embedding)  
      String add​(dev.langchain4j.data.embedding.Embedding embedding, dev.langchain4j.data.segment.TextSegment textSegment)  
      void add​(String id, dev.langchain4j.data.embedding.Embedding embedding)  
      List<String> addAll​(List<dev.langchain4j.data.embedding.Embedding> embeddings)  
      List<String> addAll​(List<dev.langchain4j.data.embedding.Embedding> embeddings, List<dev.langchain4j.data.segment.TextSegment> embedded)  
      static OpenSearchEmbeddingStore.Builder builder()  
      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 interface dev.langchain4j.store.embedding.EmbeddingStore

        findRelevant, findRelevant, findRelevant
    • Constructor Detail

      • 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 Detail

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