Class AbstractAzureAiSearchEmbeddingStore

java.lang.Object
dev.langchain4j.store.embedding.azure.search.AbstractAzureAiSearchEmbeddingStore
All Implemented Interfaces:
dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
Direct Known Subclasses:
AzureAiSearchContentRetriever, AzureAiSearchEmbeddingStore

public abstract class AbstractAzureAiSearchEmbeddingStore extends Object implements dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
  • Field Details

  • Constructor Details

    • AbstractAzureAiSearchEmbeddingStore

      public AbstractAzureAiSearchEmbeddingStore()
  • Method Details

    • initialize

      protected void initialize(String endpoint, com.azure.core.credential.AzureKeyCredential keyCredential, com.azure.core.credential.TokenCredential tokenCredential, boolean createOrUpdateIndex, int dimensions, com.azure.search.documents.indexes.models.SearchIndex index, String indexName, AzureAiSearchFilterMapper filterMapper)
    • createOrUpdateIndex

      public void createOrUpdateIndex(int dimensions)
      Creates or updates the index using a ready-made index.
      Parameters:
      dimensions - The number of dimensions of the embeddings.
    • deleteIndex

      public void deleteIndex()
    • add

      public String add(dev.langchain4j.data.embedding.Embedding embedding)
      Add an embedding to the store.
      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)
      Add an embedding to the store.
      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)
      Add an embedding and the related content to the store.
      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)
      Add a list of embeddings to the store.
      Specified by:
      addAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • remove

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

      public void removeAll(Collection<String> ids)
      Specified by:
      removeAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • removeAll

      public void removeAll()
      Specified by:
      removeAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • removeAll

      public void removeAll(dev.langchain4j.store.embedding.filter.Filter filter)
      Specified by:
      removeAll in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • search

      public dev.langchain4j.store.embedding.EmbeddingSearchResult<dev.langchain4j.data.segment.TextSegment> search(dev.langchain4j.store.embedding.EmbeddingSearchRequest request)
      Specified by:
      search in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • getEmbeddingMatches

      protected List<dev.langchain4j.store.embedding.EmbeddingMatch<dev.langchain4j.data.segment.TextSegment>> getEmbeddingMatches(com.azure.search.documents.util.SearchPagedIterable searchResults, Double minScore, AzureAiSearchQueryType azureAiSearchQueryType)
    • addAll

      public void addAll(List<String> ids, 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>
    • fromAzureScoreToRelevanceScore

      protected static double fromAzureScoreToRelevanceScore(double score)
      Calculates LangChain4j's RelevanceScore from Azure AI Search's score.

      Score in Azure AI Search is transformed into a cosine similarity as described here: https://learn.microsoft.com/en-us/azure/search/vector-search-ranking#scores-in-a-vector-search-results

      RelevanceScore in LangChain4j is a derivative of cosine similarity, but it compresses it into 0..1 range (instead of -1..1) for ease of use.

    • fromAzureScoreToRelevanceScore

      public static double fromAzureScoreToRelevanceScore(com.azure.search.documents.models.SearchResult searchResult, AzureAiSearchQueryType azureAiSearchQueryType)
      Calculates LangChain4j's RelevanceScore from Azure AI Search's score, for the 4 types of search.