Class VespaEmbeddingStore

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

public class VespaEmbeddingStore extends Object implements EmbeddingStore<TextSegment>
Represents the Vespa - search engine and vector database. Does not support storing Metadata yet. Example server configuration contains cosine similarity search rank profile, of course other Vespa neighbor search methods are supported too. Read more here.
  • Constructor Details

    • VespaEmbeddingStore

      public VespaEmbeddingStore(String url, String keyPath, String certPath, Duration timeout, String namespace, String documentType, String clusterName, String rankProfile, Integer targetHits, Boolean avoidDups, Boolean logRequests, Boolean logResponses)
      Creates a new VespaEmbeddingStore instance.
      Parameters:
      url - server url, local or cloud one. The latter you can find under Endpoint of your Vespa application, e.g. https://alexey-heezer.langchain4j.mytenant346.aws-us-east-1c.dev.z.vespa-app.cloud/
      keyPath - local path to the SSL private key file in PEM format. Read docs for details. Null if there is no SSL private key file e.g. for local Vespa server.
      certPath - local path to the SSL certificate file in PEM format. Read docs for details. Null if there is no SSL certificate file e.g. for local Vespa server.
      timeout - for Vespa Java client in java.time.Duration format.
      namespace - required for document ID generation, find more details here.
      documentType - document type, used for document ID generation, find more details here and data querying
      clusterName - cluster name, used for deleting all documents, find more details here
      rankProfile - rank profile from your .sd schema. Provided example schema configures cosine similarity match
      targetHits - sets the number of hits (10 is default) exposed to the real Vespa's first-phase ranking function per content node, find more details here.
      avoidDups - if true (default), then VespaEmbeddingStore will generate a hashed ID based on provided text segment, which avoids duplicated entries in DB. If false, then random ID will be generated.
      logRequests - If true, requests to the Vespa service are logged.
      logResponses - If true, responses from the Vespa service are logged.
  • Method Details

    • builder

      public static VespaEmbeddingStore.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)
      Adds a new embedding with provided ID to the store.
      Specified by:
      add in interface EmbeddingStore<TextSegment>
      Parameters:
      id - "user-specified" part of document ID, find more details here
      embedding - the embedding to add
    • 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 void addAll(List<String> ids, 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.

      The lists are positional: the i-th ID, the i-th embedding and the i-th embedded content belong together. ids and embeddings must therefore have the same size, and embedded, when provided, must have that size as well. A null list of IDs or embeddings counts as an empty list, so passing embeddings without IDs (or the other way around) is a size mismatch, not an empty input. ValidationUtils.ensureConsistentSizes(List, List, List) implements these rules and should be used by implementations.

      Passing no embeddings at all (an empty or null embeddings together with an empty or null ids, and no embedded contents) is a no-op: nothing is stored and no exception is thrown.

      Specified by:
      addAll in interface EmbeddingStore<TextSegment>
      Parameters:
      ids - A list of IDs associated with the added embeddings.
      embeddings - A list of embeddings to be added to the store.
      embedded - A list of original contents that were embedded, or null if they were not provided.
    • search

      Searches for the most similar (closest in the embedding space) Embeddings.
      All search criteria are defined inside the EmbeddingSearchRequest.
      EmbeddingSearchRequest.filter() can be used to filter by various metadata entries (e.g., user/memory ID). Please note that not all EmbeddingStore implementations support Filtering. The score inside EmbeddingMatch is Vespa relevance according to provided rank profile.
      Specified by:
      search in interface EmbeddingStore<TextSegment>
      Parameters:
      request - A request to search in an EmbeddingStore. Contains all search criteria.
      Returns:
      An EmbeddingSearchResult containing all found Embeddings.
    • removeAll

      public void removeAll()
      Description copied from interface: EmbeddingStore
      Removes all embeddings from the store.
      Specified by:
      removeAll in interface EmbeddingStore<TextSegment>