Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecGoogleVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecHuggingFaceVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecJinaAiVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecDigitalOceanVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecMistralVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecModel2VecVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecMorphVectorizer;
Expand All @@ -59,6 +60,7 @@ public enum Kind implements JsonEnum<Kind> {
TEXT2VEC_HUGGINGFACE("text2vec-huggingface"),
REF2VEC_CENTROID("ref2vec-centroid"),
TEXT2VEC_JINAAI("text2vec-jinaai"),
TEXT2VEC_DIGITALOCEAN("text2vec-digitalocean"),
TEXT2VEC_MISTRAL("text2vec-mistral"),
TEXT2VEC_MORPH("text2vec-morph"),
TEXT2VEC_MODEL2VEC("text2vec-model2vec"),
Expand Down Expand Up @@ -1053,6 +1055,41 @@ public static Map.Entry<String, VectorConfig> text2vecJinaAi(String vectorName,
return Map.entry(vectorName, Text2VecJinaAiVectorizer.of(fn));
}

/** Create a vector index with an {@code text2vec-digitalocean} vectorizer. */
public static Map.Entry<String, VectorConfig> text2vecDigitalOcean() {
return text2vecDigitalOcean(VectorIndex.DEFAULT_VECTOR_NAME);
}

/**
* Create a vector index with an {@code text2vec-digitalocean} vectorizer.
*
* @param fn Lambda expression for optional parameters.
*/
public static Map.Entry<String, VectorConfig> text2vecDigitalOcean(
Function<Text2VecDigitalOceanVectorizer.Builder, ObjectBuilder<Text2VecDigitalOceanVectorizer>> fn) {
return text2vecDigitalOcean(VectorIndex.DEFAULT_VECTOR_NAME, fn);
}

/**
* Create a named vector index with an {@code text2vec-digitalocean} vectorizer.
*
* @param vectorName Vector name.
*/
public static Map.Entry<String, VectorConfig> text2vecDigitalOcean(String vectorName) {
return Map.entry(vectorName, Text2VecDigitalOceanVectorizer.of());
}

/**
* Create a named vector index with an {@code text2vec-digitalocean} vectorizer.
*
* @param vectorName Vector name.
* @param fn Lambda expression for optional parameters.
*/
public static Map.Entry<String, VectorConfig> text2vecDigitalOcean(String vectorName,
Function<Text2VecDigitalOceanVectorizer.Builder, ObjectBuilder<Text2VecDigitalOceanVectorizer>> fn) {
return Map.entry(vectorName, Text2VecDigitalOceanVectorizer.of(fn));
}

/** Create a vector index with an {@code text2vec-mistral} vectorizer. */
public static Map.Entry<String, VectorConfig> text2vecMistral() {
return text2vecMistral(VectorIndex.DEFAULT_VECTOR_NAME);
Expand Down Expand Up @@ -1558,6 +1595,16 @@ default public Text2VecJinaAiVectorizer asText2VecJinaAi() {
return _as(VectorConfig.Kind.TEXT2VEC_JINAAI);
}

/** Is this an instance of {@link Text2VecDigitalOceanVectorizer}? */
default public boolean isText2VecDigitalOcean() {
return _is(VectorConfig.Kind.TEXT2VEC_DIGITALOCEAN);
}

/** Convert this instance to {@link Text2VecDigitalOceanVectorizer}. */
default public Text2VecDigitalOceanVectorizer asText2VecDigitalOcean() {
return _as(VectorConfig.Kind.TEXT2VEC_DIGITALOCEAN);
}

/** Is this an instance of {@link Text2VecMistralVectorizer}? */
default public boolean isText2VecMistral() {
return _is(VectorConfig.Kind.TEXT2VEC_MISTRAL);
Expand Down Expand Up @@ -1668,6 +1715,7 @@ private final void init(Gson gson) {
addAdapter(gson, VectorConfig.Kind.TEXT2VEC_HUGGINGFACE, Text2VecHuggingFaceVectorizer.class);
addAdapter(gson, VectorConfig.Kind.REF2VEC_CENTROID, Ref2VecCentroidVectorizer.class);
addAdapter(gson, VectorConfig.Kind.TEXT2VEC_JINAAI, Text2VecJinaAiVectorizer.class);
addAdapter(gson, VectorConfig.Kind.TEXT2VEC_DIGITALOCEAN, Text2VecDigitalOceanVectorizer.class);
addAdapter(gson, VectorConfig.Kind.TEXT2VEC_MISTRAL, Text2VecMistralVectorizer.class);
addAdapter(gson, VectorConfig.Kind.TEXT2VEC_MORPH, Text2VecMorphVectorizer.class);
addAdapter(gson, VectorConfig.Kind.TEXT2VEC_MODEL2VEC, Text2VecModel2VecVectorizer.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
package io.weaviate.client6.v1.api.collections.vectorizers;

import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

import com.google.gson.annotations.SerializedName;

import io.weaviate.client6.v1.api.collections.Quantization;
import io.weaviate.client6.v1.api.collections.VectorConfig;
import io.weaviate.client6.v1.api.collections.VectorIndex;
import io.weaviate.client6.v1.internal.ObjectBuilder;

public record Text2VecDigitalOceanVectorizer(
@SerializedName("baseURL") String baseUrl,
@SerializedName("model") String model,

/**
* Weaviate defaults to {@code true} if the value is not provided.
* To avoid that we send "vectorizeClassName": false all the time
* and make it impossible to enable this feature, as it is deprecated.
*/
@Deprecated @SerializedName("vectorizeClassName") boolean vectorizeCollectionName,
/** Properties included in the embedding. */
@SerializedName("properties") List<String> sourceProperties,
/** Vector index configuration. */
VectorIndex vectorIndex,
/** Vector quantization method. */
Quantization quantization) implements VectorConfig {

@Override
public VectorConfig.Kind _kind() {
return VectorConfig.Kind.TEXT2VEC_DIGITALOCEAN;
}

@Override
public Object _self() {
return this;
}

public static Text2VecDigitalOceanVectorizer of() {
return of(ObjectBuilder.identity());
}

public static Text2VecDigitalOceanVectorizer of(
Function<Builder, ObjectBuilder<Text2VecDigitalOceanVectorizer>> fn) {
return fn.apply(new Builder()).build();
}

/**
* Canonical constructor always sets {@link #vectorizeCollectionName} to false.
*/
public Text2VecDigitalOceanVectorizer(
String baseUrl,
String model,

boolean vectorizeCollectionName,
List<String> sourceProperties,
VectorIndex vectorIndex,
Quantization quantization) {
this.baseUrl = baseUrl;
this.model = model;

this.vectorizeCollectionName = false;
this.sourceProperties = sourceProperties;
this.vectorIndex = vectorIndex;
this.quantization = quantization;
}

public Text2VecDigitalOceanVectorizer(Builder builder) {
this(
builder.baseUrl,
builder.model,

builder.vectorizeCollectionName,
builder.sourceProperties,
builder.vectorIndex,
builder.quantization);
}

public static class Builder implements ObjectBuilder<Text2VecDigitalOceanVectorizer> {
private final boolean vectorizeCollectionName = false;
private Quantization quantization;
private List<String> sourceProperties;
private VectorIndex vectorIndex = VectorIndex.DEFAULT_VECTOR_INDEX;

private String baseUrl;
private String model;

public Builder baseUrl(String baseUrl) {
this.baseUrl = baseUrl;
return this;
}

public Builder model(String model) {
this.model = model;
return this;
}

/** Add properties to include in the embedding. */
public Builder sourceProperties(String... properties) {
return sourceProperties(Arrays.asList(properties));
}

/** Add properties to include in the embedding. */
public Builder sourceProperties(List<String> properties) {
this.sourceProperties = properties;
return this;
}

/**
* Override default vector index configuration.
*
* <a href=
* "https://docs.weaviate.io/weaviate/config-refs/indexing/vector-index#hnsw-index-parameters">HNSW</a>
* is the default vector index.
*/
public Builder vectorIndex(VectorIndex vectorIndex) {
this.vectorIndex = vectorIndex;
return this;
}

public Builder quantization(Quantization quantization) {
this.quantization = quantization;
return this;
}

public Text2VecDigitalOceanVectorizer build() {
return new Text2VecDigitalOceanVectorizer(this);
}
}
}
34 changes: 34 additions & 0 deletions src/test/java/io/weaviate/client6/v1/internal/json/JSONTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecGoogleVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecHuggingFaceVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecJinaAiVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecDigitalOceanVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecMistralVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecModel2VecVectorizer;
import io.weaviate.client6.v1.api.collections.vectorizers.Text2VecMorphVectorizer;
Expand Down Expand Up @@ -347,6 +348,39 @@ public static Object[][] testCases() {
}
""",
},
{
VectorConfig.class,
Text2VecDigitalOceanVectorizer.of(),
"""
{
"vectorIndexType": "hnsw",
"vectorIndexConfig": {},
"vectorizer": {
"text2vec-digitalocean": {
"vectorizeClassName": false
}
}
}
""",
},
{
VectorConfig.class,
Text2VecDigitalOceanVectorizer.of(v -> v.model("qwen3-embedding-0.6b").baseUrl("https://inference.do-ai.run").sourceProperties("a")),
"""
{
"vectorIndexType": "hnsw",
"vectorIndexConfig": {},
"vectorizer": {
"text2vec-digitalocean": {
"baseURL": "https://inference.do-ai.run",
"model": "qwen3-embedding-0.6b",
"properties": ["a"],
"vectorizeClassName": false
}
}
}
""",
Comment thread
bevzzz marked this conversation as resolved.
},
{
VectorConfig.class,
Text2VecModel2VecVectorizer.of(),
Expand Down
Loading