-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathModelProvidersTest.java
More file actions
243 lines (207 loc) · 9.8 KB
/
Copy pathModelProvidersTest.java
File metadata and controls
243 lines (207 loc) · 9.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
import io.weaviate.client6.v1.api.WeaviateClient;
import io.weaviate.client6.v1.api.collections.CollectionHandle;
import io.weaviate.client6.v1.api.collections.Property;
import io.weaviate.client6.v1.api.collections.VectorConfig;
import io.weaviate.client6.v1.api.collections.data.InsertManyResponse;
import io.weaviate.client6.v1.api.collections.query.Metadata;
import io.weaviate.client6.v1.api.collections.query.QueryResponse;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
class ModelProvidersTest {
private static WeaviateClient client;
@BeforeAll
public static void beforeAll() throws IOException {
String weaviateUrl = System.getenv("WEAVIATE_URL");
String weaviateApiKey = System.getenv("WEAVIATE_API_KEY");
client = WeaviateClient.connectToWeaviateCloud(weaviateUrl, // Replace with your Weaviate Cloud
// URL
weaviateApiKey // Replace with your Weaviate Cloud key
);
client.collections.delete("DemoCollection");
}
@AfterAll
public static void afterAll() throws IOException {
client.collections.delete("DemoCollection");
}
@Test
void testWeaviateInstantiation() throws Exception {
// START WeaviateInstantiation
// Best practice: store your credentials in environment variables
String weaviateUrl = System.getenv("WEAVIATE_URL");
String weaviateApiKey = System.getenv("WEAVIATE_API_KEY");
// highlight-start
WeaviateClient client = WeaviateClient.connectToWeaviateCloud(weaviateUrl, // Replace with your
// Weaviate Cloud URL
weaviateApiKey // Replace with your Weaviate Cloud key
);
System.out.println(client.isReady()); // Should print: `True`
// highlight-end
client.close(); // Free up resources
// END WeaviateInstantiation
}
@Test
void testWeaviateVectorizer() throws IOException {
client.collections.delete("DemoCollection");
// START BasicVectorizerWeaviate
client.collections.create("DemoCollection",
col -> col
.vectorConfig(
VectorConfig.text2vecWeaviate("title_vector", c -> c.sourceProperties("title")))
.properties(Property.text("title"), Property.text("description")));
// END BasicVectorizerWeaviate
var config = client.collections.getConfig("DemoCollection").get();
assertThat(config.vectors()).containsKey("title_vector");
System.out.println("first: " + config.vectors().get("title_vector"));
assertThat(config.vectors().get("title_vector").getClass().getSimpleName())
.isEqualTo("Text2VecWeaviateVectorizer");
client.collections.delete("DemoCollection");
}
@Test
@Disabled("Requires DIGITALOCEAN_APIKEY, not configured in CI")
void testDigitalOceanInstantiation() throws Exception {
// START DigitalOceanInstantiation
// Best practice: store your credentials in environment variables
String weaviateUrl = System.getenv("WEAVIATE_URL");
String weaviateApiKey = System.getenv("WEAVIATE_API_KEY");
String digitalOceanApiKey = System.getenv("DIGITALOCEAN_APIKEY");
// highlight-start
WeaviateClient client = WeaviateClient.connectToWeaviateCloud(
weaviateUrl,
weaviateApiKey,
config -> config.setHeaders(Map.of("X-Digitalocean-Api-Key", digitalOceanApiKey)));
System.out.println(client.isReady()); // Should print: `True`
// highlight-end
client.close(); // Free up resources
// END DigitalOceanInstantiation
}
@Test
@Disabled("Requires DIGITALOCEAN_APIKEY, not configured in CI")
void testDigitalOceanVectorizer() throws IOException {
client.collections.delete("DemoCollection");
// START BasicVectorizerDigitalOcean
client.collections.create("DemoCollection",
col -> col
.vectorConfig(
VectorConfig.text2vecDigitalOcean("title_vector",
c -> c.model("qwen3-embedding-0.6b").sourceProperties("title")))
.properties(Property.text("title"), Property.text("description")));
// END BasicVectorizerDigitalOcean
var config = client.collections.getConfig("DemoCollection").get();
assertThat(config.vectors()).containsKey("title_vector");
assertThat(config.vectors().get("title_vector").getClass().getSimpleName())
.isEqualTo("Text2VecDigitalOceanVectorizer");
client.collections.delete("DemoCollection");
}
@Test
void testWeaviateVectorizerModel() throws IOException {
// START VectorizerWeaviateCustomModel
client.collections
.create("DemoCollection",
col -> col
.vectorConfig(VectorConfig.text2vecWeaviate("title_vector",
c -> c.sourceProperties("title")
.model("Snowflake/snowflake-arctic-embed-l-v2.0")))
.properties(Property.text("title"), Property.text("description")));
// END VectorizerWeaviateCustomModel
var config = client.collections.getConfig("DemoCollection").get();
assertThat(config.vectors()).containsKey("title_vector");
System.out.println("first: " + config.vectors().get("title_vector"));
assertThat(config.vectors().get("title_vector").getClass().getSimpleName())
.isEqualTo("Text2VecWeaviateVectorizer");
client.collections.delete("DemoCollection");
}
@Test
void testWeaviateVectorizerParameters() throws IOException {
// START SnowflakeArcticEmbedMV15
client.collections.create("DemoCollection",
col -> col.vectorConfig(VectorConfig.text2vecWeaviate("title_vector",
c -> c.sourceProperties("title").model("Snowflake/snowflake-arctic-embed-m-v1.5")
// .inferenceUrl(null)
// .dimensions(0)
)).properties(Property.text("title"), Property.text("description")));
// END SnowflakeArcticEmbedMV15
var config = client.collections.getConfig("DemoCollection").get();
assertThat(config.vectors()).containsKey("title_vector");
System.out.println("first: " + config.vectors().get("title_vector"));
assertThat(config.vectors().get("title_vector").getClass().getSimpleName())
.isEqualTo("Text2VecWeaviateVectorizer");
}
@Test
void testWeaviateMMVectorizer() throws IOException {
client.collections.delete("DemoCollection");
client.collections.create("DemoCollection",
col -> col
.vectorConfig(
VectorConfig.text2vecWeaviate("title_vector", c -> c.sourceProperties("title")))
.properties(Property.text("title"), Property.text("description")));
// START BasicVectorizerMMWeaviate
// Coming soon
// END BasicVectorizerMMWeaviate
var config = client.collections.getConfig("DemoCollection").get();
assertThat(config.vectors()).containsKey("title_vector");
System.out.println("first: " + config.vectors().get("title_vector"));
assertThat(config.vectors().get("title_vector").getClass().getSimpleName())
.isEqualTo("Text2VecWeaviateVectorizer");
client.collections.delete("DemoCollection");
}
@Test
void testInsertData() {
// START BatchImportExample
// Define the source objects
List<Map<String, Object>> sourceObjects = List.of(Map.of("title", "The Shawshank Redemption",
"description",
"A wrongfully imprisoned man forms an inspiring friendship while finding hope and redemption in the darkest of places."),
Map.of("title", "The Godfather", "description",
"A powerful mafia family struggles to balance loyalty, power, and betrayal in this iconic crime saga."),
Map.of("title", "The Dark Knight", "description",
"Batman faces his greatest challenge as he battles the chaos unleashed by the Joker in Gotham City."),
Map.of("title", "Jingle All the Way", "description",
"A desperate father goes to hilarious lengths to secure the season's hottest toy for his son on Christmas Eve."),
Map.of("title", "A Christmas Carol", "description",
"A miserly old man is transformed after being visited by three ghosts on Christmas Eve in this timeless tale of redemption."));
// Get a handle to the collection
CollectionHandle<Map<String, Object>> collection = client.collections.use("DemoCollection");
// Insert the data using insertMany
InsertManyResponse response = collection.data.insertMany(sourceObjects.toArray(new Map[0]));
// Check for errors
if (!response.errors().isEmpty()) {
System.err.printf("Number of failed imports: %d\n", response.errors().size());
System.err.printf("First failed object error: %s\n", response.errors().get(0));
} else {
System.out.printf("Successfully inserted %d objects.\n", response.uuids().size());
}
// END BatchImportExample
}
@Test
void testNearText() {
// START NearTextExample
CollectionHandle<Map<String, Object>> collection = client.collections.use("DemoCollection");
// highlight-start
var response = collection.query.nearText("A holiday film", // The model provider integration will automatically vectorize the query
q -> q.limit(2).returnMetadata(Metadata.DISTANCE));
// highlight-end
for (var o : response.objects()) {
System.out.println(o.properties().get("title"));
}
// END NearTextExample
}
@Test
void testHybrid() {
// START HybridExample
CollectionHandle<Map<String, Object>> collection = client.collections.use("DemoCollection");
// highlight-start
QueryResponse<Map<String, Object>> response = collection.query.hybrid("A holiday film", // The model provider integration will automatically vectorize the query
q -> q.limit(2).returnMetadata(Metadata.DISTANCE));
// highlight-end
for (var o : response.objects()) {
System.out.println(o.properties().get("title"));
}
// END HybridExample
}
}