CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-dev-langchain4j--langchain4j-chroma

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.

Overview
Eval results
Files

types.mddocs/api/

Core Types API

Core LangChain4j types used with ChromaEmbeddingStore (from langchain4j-core library).

Embedding

Represents a vector embedding.

package dev.langchain4j.data.embedding;

public class Embedding

Static Factory Methods

public static Embedding from(float[] vector);

Creates embedding from float array.

Example:

Embedding emb = Embedding.from(new float[]{0.1f, 0.2f, 0.3f});

public static Embedding from(List<Float> vector);

Creates embedding from Float list.

Example:

List<Float> vector = Arrays.asList(0.1f, 0.2f, 0.3f);
Embedding emb = Embedding.from(vector);

Instance Methods

public float[] vector();

Returns the embedding vector as float array.


public List<Float> vectorAsList();

Returns the embedding vector as Float list.

TextSegment

Represents a text segment with optional metadata.

package dev.langchain4j.data.segment;

public class TextSegment

Static Factory Methods

public static TextSegment from(String text);

Creates text segment from string.

Example:

TextSegment seg = TextSegment.from("document text");

public static TextSegment from(String text, Metadata metadata);

Creates text segment with metadata.

Example:

Metadata meta = new Metadata().put("author", "John");
TextSegment seg = TextSegment.from("document text", meta);

Instance Methods

public String text();

Returns the text content.


public Metadata metadata();

Returns the metadata (may be null).

Metadata

Represents metadata as key-value pairs.

package dev.langchain4j.data.document;

public class Metadata

Constructors

public Metadata();

Creates empty metadata.


public Metadata(Map<String, ?> map);

Creates metadata from map.

Put Methods

public Metadata put(String key, String value);

Adds string value. Returns this for chaining.


public Metadata put(String key, java.util.UUID value);

Adds UUID value.


public Metadata put(String key, int value);

Adds integer value.


public Metadata put(String key, long value);

Adds long value.


public Metadata put(String key, float value);

Adds float value.


public Metadata put(String key, double value);

Adds double value.

Get Methods

public String getString(String key);

Returns string value or null.


public java.util.UUID getUUID(String key);

Returns UUID value or null.


public Integer getInteger(String key);

Returns integer value or null.


public Long getLong(String key);

Returns long value or null.


public Float getFloat(String key);

Returns float value or null.


public Double getDouble(String key);

Returns double value or null.

Other Methods

public Map<String, Object> toMap();

Converts metadata to map.


public boolean containsKey(String key);

Checks if key exists.

Supported Types

Supported by Chroma:

  • String
  • UUID
  • Integer
  • Long
  • Float
  • Double

NOT Supported:

  • Boolean - Chroma does not support boolean metadata

Usage Examples

Creating Metadata

// Empty metadata
Metadata meta = new Metadata();

// With values
Metadata meta = new Metadata()
    .put("author", "John Doe")
    .put("year", 2024)
    .put("rating", 4.5)
    .put("id", UUID.randomUUID());

From Map

Map<String, Object> map = new HashMap<>();
map.put("title", "Document");
map.put("pages", 100);

Metadata meta = new Metadata(map);

Reading Values

String author = meta.getString("author");
Integer year = meta.getInteger("year");
Double rating = meta.getDouble("rating");

if (meta.containsKey("category")) {
    String category = meta.getString("category");
}

Null Safety

// Get methods return null if key doesn't exist
Integer year = meta.getInteger("year");
if (year != null) {
    // Use year
}

// Check existence first
if (meta.containsKey("year")) {
    int year = meta.getInteger("year");
}

EmbeddingMatch

Single match result from embedding search.

package dev.langchain4j.store.embedding;

public class EmbeddingMatch<Embedded>

Methods

public double score();

Returns similarity score (0.0 to 1.0, higher is more similar).


public String embeddingId();

Returns the embedding ID.


public Embedding embedding();

Returns the embedding vector (may be null).


public Embedded embedded();

Returns the associated content (TextSegment). May be null if no text segment was stored.

Usage Example

EmbeddingMatch<TextSegment> match = ...;

double score = match.score();
String id = match.embeddingId();
Embedding emb = match.embedding();

TextSegment segment = match.embedded();
if (segment != null) {
    String text = segment.text();
    Metadata meta = segment.metadata();
}

Type Relationships

Embedding
  ↓
  Used in: add(), addAll(), search()

TextSegment
  ├─ String text
  └─ Metadata metadata
  ↓
  Stored with: Embedding
  Retrieved in: EmbeddingMatch

Metadata
  ↓
  Part of: TextSegment
  Used in: filters

EmbeddingMatch
  ├─ double score
  ├─ String embeddingId
  ├─ Embedding embedding
  └─ TextSegment embedded
  ↓
  Returned from: search()

Common Patterns

Creating Complete Document

// 1. Create embedding
Embedding embedding = embeddingModel.embed(text).content();

// 2. Create metadata
Metadata metadata = new Metadata()
    .put("author", "John Doe")
    .put("date", System.currentTimeMillis())
    .put("category", "tech");

// 3. Create text segment
TextSegment segment = TextSegment.from(text, metadata);

// 4. Store together
String id = store.add(embedding, segment);

Processing Search Results

EmbeddingSearchResult<TextSegment> result = store.search(request);

List<String> texts = new ArrayList<>();
List<Metadata> metadataList = new ArrayList<>();

for (EmbeddingMatch<TextSegment> match : result.matches()) {
    if (match.score() > 0.7) {
        TextSegment seg = match.embedded();
        if (seg != null) {
            texts.add(seg.text());
            metadataList.add(seg.metadata());
        }
    }
}

Metadata for Filtering

// Store with filterable metadata
Metadata meta = new Metadata()
    .put("status", "published")
    .put("year", 2024)
    .put("priority", 5);

TextSegment seg = TextSegment.from(text, meta);
store.add(embedding, seg);

// Later: filter by metadata
Filter filter = metadataKey("status").isEqualTo("published")
    .and(metadataKey("year").isGreaterThanOrEqualTo(2023));

Related APIs

  • EmbeddingSearchRequest - Search request builder
  • EmbeddingSearchResult - Search result container
  • Filter - Metadata filtering
  • ChromaEmbeddingStore - Main store class

External Documentation

  • LangChain4j Core Documentation

Install with Tessl CLI

npx tessl i tessl/maven-dev-langchain4j--langchain4j-chroma@1.11.0

docs

api

builder.md

filters.md

search-types.md

store.md

types.md

version.md

index.md

tile.json