Class ClickHouseEmbeddingStore

java.lang.Object
dev.langchain4j.community.store.embedding.clickhouse.ClickHouseEmbeddingStore
All Implemented Interfaces:
dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>, AutoCloseable

public class ClickHouseEmbeddingStore extends Object implements dev.langchain4j.store.embedding.EmbeddingStore<dev.langchain4j.data.segment.TextSegment>, AutoCloseable

An EmbeddingStore which uses AI Vector Search capabilities of ClickHouse Database. This embedding store supports metadata filtering and removal

Instances of this store are created by configuring a builder:


 EmbeddingStore<TextSegment> example() {
   return ClickHouseEmbeddingStore.builder()
     .settings(ClickHouseSettings.builder()
             .url("http://localhost:8123")
             .dimension(embeddingModel.dimension())
             .build();)
     .build();
 }
 

It is recommended to configure a ClickHouseClient in order to customize your connection or authorization.

This embedding store requires a ClickHouseSettings to be configured

NOTE: Since clickhouse-server version 25.4.1.2934, the 'vector_similarity' index has some breaking change in parameters. If you encounter some problem like 'DB::Exception: Vector similarity index must have three or six arguments. (INCORRECT_QUERY)', please upgrade the version of clickhouse-server to the latest version.

  • Constructor Details

    • ClickHouseEmbeddingStore

      public ClickHouseEmbeddingStore(com.clickhouse.client.api.Client client, ClickHouseSettings settings)
      Construct embedding store.
      Parameters:
      client - Custom ClickHouse client. (Optional)
      settings - ClickHouse settings.
      See Also:
  • Method Details

    • builder

      public static ClickHouseEmbeddingStore.Builder builder()
    • close

      public void close() throws Exception
      Specified by:
      close in interface AutoCloseable
      Throws:
      Exception
    • 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>
    • 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>
    • 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(dev.langchain4j.store.embedding.filter.Filter filter)
      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>
    • 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>