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