LangChain4j integration for Chroma embedding store enabling storage, retrieval, and similarity search of vector embeddings with metadata filtering support for both API V1 and V2.
The primary class for interacting with Chroma vector database.
package dev.langchain4j.store.embedding.chroma;
public class ChromaEmbeddingStore implements dev.langchain4j.store.embedding.EmbeddingStore<TextSegment>Implements the LangChain4j EmbeddingStore interface providing full CRUD operations for vector embeddings with metadata support.
public static Builder builder();Returns a builder for configuring and creating ChromaEmbeddingStore instances.
Example:
ChromaEmbeddingStore store = ChromaEmbeddingStore.builder()
.baseUrl("http://localhost:8000")
.collectionName("my-documents")
.build();See: Builder API
@Deprecated(since = "1.7.0-beta13", forRemoval = true)
public ChromaEmbeddingStore(
String baseUrl,
String collectionName,
java.time.Duration timeout,
boolean logRequests,
boolean logResponses
);Deprecated - use builder instead. Only supports V1 API.
public String add(Embedding embedding);Adds an embedding with auto-generated ID.
Parameters:
embedding - the embedding vector to addReturns: auto-generated UUID string
Example:
Embedding emb = Embedding.from(new float[]{0.1f, 0.2f, 0.3f});
String id = store.add(emb);public void add(String id, Embedding embedding);Adds an embedding with specific ID.
Parameters:
id - custom ID for the embeddingembedding - the embedding vector to addReturns: void
Example:
store.add("custom-123", embedding);public String add(Embedding embedding, TextSegment textSegment);Adds an embedding with associated text segment.
Parameters:
embedding - the embedding vectortextSegment - text content and metadata (may be null)Returns: auto-generated UUID string
Example:
TextSegment segment = TextSegment.from("document text");
String id = store.add(embedding, segment);public List<String> addAll(List<Embedding> embeddings);Adds multiple embeddings with auto-generated IDs.
Parameters:
embeddings - list of embeddings to addReturns: list of auto-generated UUIDs
Example:
List<String> ids = store.addAll(embeddings);public void addAll(
List<String> ids,
List<Embedding> embeddings,
List<TextSegment> textSegments
);Adds multiple embeddings with custom IDs and text segments.
Parameters:
ids - custom IDs (must match embeddings size)embeddings - list of embeddingstextSegments - list of text segments (may be null)Returns: void
Example:
store.addAll(ids, embeddings, segments);default List<String> addAll(
List<Embedding> embeddings,
List<TextSegment> embedded
);Inherited default method - adds embeddings with text segments and auto-generated IDs.
public EmbeddingSearchResult<TextSegment> search(EmbeddingSearchRequest request);Searches for similar embeddings using cosine similarity.
Parameters:
request - search request with query embedding and parametersReturns: search result with matching embeddings and scores
Example:
EmbeddingSearchRequest req = EmbeddingSearchRequest.builder()
.queryEmbedding(queryEmb)
.maxResults(10)
.minScore(0.7)
.build();
EmbeddingSearchResult<TextSegment> result = store.search(req);See: Search Types API
default void remove(String id);Removes a single embedding by ID (default interface implementation).
Parameters:
id - embedding ID to removeReturns: void
Example:
store.remove("embedding-id");public void removeAll(java.util.Collection<String> ids);Removes multiple embeddings by IDs.
Parameters:
ids - collection of IDs to removeReturns: void
Example:
store.removeAll(Arrays.asList("id1", "id2", "id3"));public void removeAll(Filter filter);Removes embeddings matching metadata filter.
Parameters:
filter - metadata filter conditionReturns: void
Example:
Filter f = metadataKey("status").isEqualTo("archived");
store.removeAll(f);See: Filter API
public void removeAll();Removes all embeddings from the collection.
Implementation: Deletes and recreates the collection.
Warning: This is destructive and cannot be undone.
Example:
store.removeAll(); // Clear entire collection@Experimental
default EmbeddingStore<TextSegment> addListener(EmbeddingStoreListener listener);Wraps the store with an observability listener (experimental, since 1.11.0).
Parameters:
listener - listener for store eventsReturns: wrapped store with listener
@Experimental
default EmbeddingStore<TextSegment> addListeners(List<EmbeddingStoreListener> listeners);Wraps the store with multiple observability listeners (experimental, since 1.11.0).
Parameters:
listeners - list of listenersReturns: wrapped store with listeners
Always cosine distance:
space = cosinedistance ∈ [0, 2]
score = 1 - (distance / 2)
score ∈ [0, 1]Where:
score = 1.0 - perfect match (identical vectors)score = 0.5 - orthogonal vectorsscore = 0.0 - opposite vectorsCollections are automatically created if they don't exist when the store is instantiated.
V2 API: Tenants and databases are also auto-created.
Not guaranteed - users should synchronize access if using from multiple threads.
removeAll() deletes and recreates the collectionAuto-generated IDs are UUIDs in string format.
Batch methods (addAll, removeAll with collection) use single HTTP requests for efficiency.
// Invalid configuration
IllegalArgumentException
// Connection issues
java.net.http.HttpConnectTimeoutException
// Operation timeout
java.net.http.HttpTimeoutException
// Chroma server errors
RuntimeException (various, depends on error)addAll() for multiple embeddingsaddAll() insteadSee:
Install with Tessl CLI
npx tessl i tessl/maven-dev-langchain4j--langchain4j-chroma@1.11.0