Class WeaviateEmbeddingStore

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

public class WeaviateEmbeddingStore extends Object implements dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
Represents the Weaviate vector database. Current implementation assumes the cosine distance metric is used.
  • Constructor Details

    • WeaviateEmbeddingStore

      public WeaviateEmbeddingStore(String apiKey, String scheme, String host, Integer port, Boolean useGrpcForInserts, Boolean securedGrpc, Integer grpcPort, String objectClass, Boolean avoidDups, String consistencyLevel, Collection<String> metadataKeys, String textFieldName, String metadataFieldName)
      Creates a new WeaviateEmbeddingStore instance.
      Parameters:
      apiKey - Your Weaviate API key. Not required for local deployment.
      scheme - The scheme, e.g. "https" of cluster URL. Find in under Details of your Weaviate cluster.
      host - The host, e.g. "langchain4j-4jw7ufd9.weaviate.network" of cluster URL. Find in under Details of your Weaviate cluster.
      port - The port, e.g. 8080. This parameter is optional.
      useGrpcForInserts - Use GRPC instead of HTTP for batch inserts only. You still need HTTP configured for search
      securedGrpc - The GRPC connection is secured
      grpcPort - The port, e.g. 50051. This parameter is optional.
      objectClass - The object class you want to store, e.g. "MyGreatClass". Must start from an uppercase letter.
      avoidDups - If true (default), then WeaviateEmbeddingStore will generate a hashed ID based on provided text segment, which avoids duplicated entries in DB. If false, then random ID will be generated.
      consistencyLevel - Consistency level: ONE, QUORUM (default) or ALL. Find more details here.
      metadataKeys - Metadata keys that should be persisted (optional)
      textFieldName - The name of the field that contains the text of a TextSegment. Default is "text".
      metadataFieldName - metadataFieldName The name of the field where Metadata entries are stored. Default is "_metadata". If set to empty string, Metadata entries will be stored in the root of the Weaviate object.
  • Method Details

    • 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)
      Adds a new embedding with provided ID to the store.
      Specified by:
      add in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
      Parameters:
      id - the ID of the embedding to add in UUID format, since it's Weaviate requirement. See Weaviate docs and UUID on Wikipedia
      embedding - the embedding to add
    • 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>
    • 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>
    • 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(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)
      The score inside EmbeddingMatch is Weaviate's certainty.
      Specified by:
      search in interface dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>
    • 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>