Skip to content

Commit 0864390

Browse files
committed
Samples
1 parent a487a85 commit 0864390

File tree

3 files changed

+73
-6
lines changed

3 files changed

+73
-6
lines changed

astra-sdk-vector/src/main/java/com/dtsx/astra/sdk/vector/AstraVectorClient.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,12 @@ public Stream<Database> findByName(String name) {
207207
return findAllDatabases().filter(db->name.equals(db.getInfo().getName()));
208208
}
209209

210+
public boolean isDatabaseExists(String name) {
211+
return findByName(name).findFirst().isPresent();
212+
}
213+
214+
215+
210216
/**
211217
* Find a database from its id.
212218
*

astra-sdk-vector/src/main/java/com/dtsx/astra/sdk/vector/AstraVectorDatabaseClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import io.stargate.sdk.json.JsonCollectionClient;
1212
import io.stargate.sdk.json.JsonNamespaceClient;
1313
import io.stargate.sdk.json.domain.CollectionDefinition;
14+
import io.stargate.sdk.json.vector.JsonVectorStore;
1415
import io.stargate.sdk.json.vector.SimilarityMetric;
1516
import io.stargate.sdk.json.vector.VectorStore;
1617
import lombok.NonNull;
@@ -104,7 +105,7 @@ public void createVectorStore(String name, int dimension, SimilarityMetric metri
104105
* param dimension
105106
* dimension
106107
*/
107-
public VectorStore<ObjectMap> createVectorStore(String name, int dimension) {
108+
public JsonVectorStore createVectorStore(String name, int dimension) {
108109
nsClient.createCollection(name, dimension);
109110
return nsClient.vectorStore(name);
110111
}
Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
package com.dtsx.astra.sdk.vector;
22

33
import com.dtsx.astra.sdk.db.domain.CloudProviderType;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
45
import io.stargate.sdk.core.domain.ObjectMap;
6+
import io.stargate.sdk.json.domain.JsonDocument;
7+
import io.stargate.sdk.json.domain.odm.Document;
8+
import io.stargate.sdk.json.vector.JsonVectorStore;
59
import io.stargate.sdk.json.vector.VectorStore;
10+
import lombok.AllArgsConstructor;
11+
import lombok.Data;
12+
import lombok.NoArgsConstructor;
613

14+
import java.util.Map;
715
import java.util.UUID;
816

917
public class AstraVectorQuickStart {
@@ -12,14 +20,66 @@ public void quickStartTest() {
1220
String databaseName = "vector_client_test";
1321
String astraToken = System.getenv("ASTRA_DB_APPLICATION_TOKEN");
1422

15-
UUID dbId = new AstraVectorClient(astraToken)
16-
.createDatabase(databaseName, CloudProviderType.GCP, "us-east1");
23+
AstraVectorClient vectorClient = new AstraVectorClient(astraToken);
24+
if (!vectorClient.isDatabaseExists(databaseName)) {
25+
vectorClient.createDatabase(databaseName);
26+
}
1727

18-
AstraVectorDatabaseClient vectorDb = new AstraVectorClient(astraToken)
19-
.database(databaseName);
28+
// Without ODM Accessing the Vector DB with JSON-ISH
29+
AstraVectorDatabaseClient vectorDb = vectorClient.database(databaseName);
30+
JsonVectorStore jsonVectorStore =
31+
vectorDb.createVectorStore("demo_product", 14);
2032

21-
DefaultVectorStore vectorStore = vectorDb.createVectorStore("demo_product", 14);
33+
// ======== INSERTIONS =========
2234

35+
jsonVectorStore.insert(new JsonDocument("doc1")
36+
.put("product_name", "HealthyFresh - Beef raw dog food")
37+
.put("product_price", 12.99)
38+
.vector(new float[]{1f, 0f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f}));
2339

40+
jsonVectorStore.insert(new JsonDocument("doc2")
41+
.data(Map.of("product_name", "HealthyFresh - Chicken raw dog food"))
42+
.vector(new float[]{1f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f}));
43+
44+
jsonVectorStore.insert(new JsonDocument("doc3")
45+
.data("{"
46+
+" \"product_name\": \"HealthyFresh - Chicken raw dog food\", "
47+
+ " \"product_price\": 9.99, "
48+
+ "}")
49+
.vector(new float[]{1f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f}));
50+
51+
//jsonVectorStore.insert("{"
52+
// + " \"_id\":\"doc4\","
53+
// + " \"$vector\":[1f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f],"
54+
// + " \"product_name\": \"HealthyFresh - Chicken raw dog food\", "
55+
// + " \"product_price\": 9.99, "
56+
// + "}");
57+
58+
// With ODM
59+
VectorStore<Product> productVectorStore =
60+
vectorDb.createVectorStore("demo_product", 14, Product.class);
61+
62+
// 3 fields: id, payload, vector
63+
productVectorStore.insert("doc5",
64+
new Product("HealthyFresh - Beef raw dog food", 12.99),
65+
new float[]{1f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f});
66+
67+
// build the "document" and insert the document
68+
Document<Product> doc6 = new Document<>("doc6",
69+
new Product("HealthyFresh - Beef raw dog food", 12.99),
70+
new float[]{1f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f});
71+
productVectorStore.insert(doc6);
72+
73+
}
74+
75+
76+
@Data
77+
@NoArgsConstructor
78+
@AllArgsConstructor
79+
static class Product {
80+
@JsonProperty("product_name")
81+
private String name;
82+
@JsonProperty("product_price")
83+
private Double price;
2484
}
2585
}

0 commit comments

Comments
 (0)