Skip to content

Commit 3cc620e

Browse files
committed
doc
1 parent 1b42f5a commit 3cc620e

File tree

10 files changed

+275
-132
lines changed

10 files changed

+275
-132
lines changed

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

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.dtsx.astra.sdk.utils.Assert;
1212
import com.dtsx.astra.sdk.utils.AstraEnvironment;
1313
import com.dtsx.astra.sdk.utils.AstraRc;
14+
import io.stargate.sdk.json.JsonApiClient;
1415
import lombok.NonNull;
1516
import lombok.extern.slf4j.Slf4j;
1617

@@ -258,15 +259,39 @@ public Optional<Database> findById(@NonNull UUID id) {
258259
* @return
259260
* database client
260261
*/
261-
public VectorDatabase database(@NonNull String databaseName) {
262+
public VectorDatabase vectorDatabase(@NonNull String databaseName) {
262263
List<Database> dbs = findByName(databaseName).collect(Collectors.toList());
263264
if (dbs.isEmpty()) {
264265
throw new DatabaseNotFoundException(databaseName);
265266
}
266267
if (dbs.size() > 1) {
267268
throw new IllegalStateException("More than one database exists with the same name, use id.");
268269
}
269-
return database(UUID.fromString(dbs.get(0).getId()));
270+
return vectorDatabase(UUID.fromString(dbs.get(0).getId()));
271+
}
272+
273+
/**
274+
* Access database functions.
275+
*
276+
* @param databaseName
277+
* database name
278+
* @return
279+
* database client
280+
*/
281+
public JsonApiClient database(@NonNull String databaseName) {
282+
return vectorDatabase(databaseName).getJsonApiClient();
283+
}
284+
285+
/**
286+
* Access database functions.
287+
*
288+
* @param databaseId
289+
* database identifier
290+
* @return
291+
* database client
292+
*/
293+
public JsonApiClient database(@NonNull UUID databaseId) {
294+
return vectorDatabase(databaseId).getJsonApiClient();
270295
}
271296

272297
// --------------------
@@ -281,7 +306,7 @@ public VectorDatabase database(@NonNull String databaseName) {
281306
* @return
282307
* database client
283308
*/
284-
public VectorDatabase database(UUID databaseId) {
309+
public VectorDatabase vectorDatabase(UUID databaseId) {
285310
return new VectorDatabase(token, databaseId, env);
286311
}
287312

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

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public VectorDatabase(@NonNull String token, @NonNull UUID databaseId, @NonNull
6868
* @return
6969
* name of all vector store.
7070
*/
71-
public Stream<String> findAllStores() {
71+
public Stream<String> findAllVectorStores() {
7272
return nsClient.findCollections();
7373
}
7474

@@ -80,7 +80,7 @@ public Stream<String> findAllStores() {
8080
* @return
8181
* of the store already exist
8282
*/
83-
public boolean isStoreExist(@NonNull String store) {
83+
public boolean isVectorStoreExist(@NonNull String store) {
8484
return nsClient.existCollection(store);
8585
}
8686

@@ -90,10 +90,25 @@ public boolean isStoreExist(@NonNull String store) {
9090
* @param name
9191
* store name
9292
*/
93-
public void deleteStore(String name) {
93+
public void deleteVectorStore(String name) {
9494
nsClient.deleteCollection(name);
9595
}
9696

97+
/**
98+
* Create the minimal store.
99+
*
100+
* @param name
101+
* store name
102+
* @param dimension
103+
* dimension
104+
* @return
105+
* json vector store
106+
*/
107+
public JsonVectorStore createVectorStore(String name, int dimension) {
108+
nsClient.createCollection(name, dimension);
109+
return nsClient.vectorStore(name);
110+
}
111+
97112
/**
98113
* Create the minimal store.
99114
*
@@ -104,8 +119,9 @@ public void deleteStore(String name) {
104119
* @param metric
105120
* metric for the similarity
106121
*/
107-
public void createVectorStore(String name, int dimension, SimilarityMetric metric) {
122+
public JsonVectorStore createVectorStore(String name, int dimension, SimilarityMetric metric) {
108123
nsClient.createCollection(name, dimension, metric);
124+
return nsClient.vectorStore(name);
109125
}
110126

111127
/**
@@ -115,12 +131,16 @@ public void createVectorStore(String name, int dimension, SimilarityMetric metri
115131
* store name
116132
* @param dimension
117133
* dimension
134+
* @param bean
135+
* class of pojo
118136
* @return
119-
* json vector store
137+
* vector store instance
138+
* @param <T>
139+
* object type
120140
*/
121-
public JsonVectorStore createVectorStore(String name, int dimension) {
141+
public <T> VectorStore<T> createVectorStore(String name, int dimension, Class<T> bean) {
122142
nsClient.createCollection(name, dimension);
123-
return nsClient.vectorStore(name);
143+
return nsClient.vectorStore(name, bean);
124144
}
125145

126146
/**
@@ -130,15 +150,17 @@ public JsonVectorStore createVectorStore(String name, int dimension) {
130150
* store name
131151
* @param dimension
132152
* dimension
153+
* @param metric
154+
* similarity metric
133155
* @param bean
134156
* class of pojo
135157
* @return
136158
* vector store instance
137159
* @param <T>
138160
* object type
139161
*/
140-
public <T> VectorStore<T> createVectorStore(String name, int dimension, Class<T> bean) {
141-
nsClient.createCollection(name, dimension);
162+
public <T> VectorStore<T> createVectorStore(String name, int dimension, SimilarityMetric metric, Class<T> bean) {
163+
nsClient.createCollection(name, dimension, metric);
142164
return nsClient.vectorStore(name, bean);
143165
}
144166

@@ -150,14 +172,15 @@ public <T> VectorStore<T> createVectorStore(String name, int dimension, Class<T>
150172
* @param aiModel
151173
* ai model to use
152174
*/
153-
public void createVectorStore(@NonNull String name, @NonNull LLMEmbedding aiModel) {
175+
public JsonVectorStore createVectorStore(@NonNull String name, @NonNull LLMEmbedding aiModel) {
154176
nsClient.createCollection(CollectionDefinition.builder()
155177
.name(name)
156178
.vectorDimension(aiModel.getDimension())
157179
.similarityMetric(SimilarityMetric.cosine)
158180
.llmProvider(aiModel.getLlmprovider())
159181
.llmModel(aiModel.getName())
160182
.build());
183+
return nsClient.vectorStore(name);
161184
}
162185

163186
// --------------------

astra-sdk-vector/src/test/java/com/dtsx/astra/sdk/vector/AstraVectorQuickStart.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
import com.dtsx.astra.sdk.db.domain.Database;
44
import com.dtsx.astra.sdk.db.domain.DatabaseInfo;
55
import com.fasterxml.jackson.annotation.JsonProperty;
6-
import io.stargate.sdk.core.domain.ObjectMap;
6+
import io.stargate.sdk.core.domain.Page;
77
import io.stargate.sdk.json.domain.JsonDocument;
8+
import io.stargate.sdk.json.domain.JsonResult;
9+
import io.stargate.sdk.json.domain.SelectQuery;
810
import io.stargate.sdk.json.domain.odm.Document;
9-
import io.stargate.sdk.json.domain.odm.Result;
1011
import io.stargate.sdk.json.vector.JsonVectorStore;
1112
import io.stargate.sdk.json.vector.VectorStore;
1213
import lombok.AllArgsConstructor;
@@ -17,6 +18,7 @@
1718

1819
import java.util.List;
1920
import java.util.Map;
21+
import java.util.stream.Stream;
2022

2123
public class AstraVectorQuickStart {
2224

@@ -40,8 +42,8 @@ public void quickStartTest() {
4042
}
4143

4244
// 2. Create a store (delete if exist)
43-
VectorDatabase vectorDb = vectorClient.database(databaseName);
44-
vectorDb.deleteStore(vectorStoreName);
45+
VectorDatabase vectorDb = vectorClient.vectorDatabase(databaseName);
46+
vectorDb.deleteVectorStore(vectorStoreName);
4547
vectorDb.createVectorStore(vectorStoreName, 14);
4648

4749
// 3. Insert data in the store
@@ -75,6 +77,8 @@ public void quickStartTest() {
7577
+ " \"product_price\": 9.99"
7678
+ "}");
7779

80+
vectorStore.findByVectorJson(new float[]{1f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f});
81+
7882
// With ODM
7983
VectorStore<Product> productVectorStore = vectorDb.vectorStore(vectorStoreName, Product.class);
8084

@@ -91,9 +95,8 @@ public void quickStartTest() {
9195

9296
Assertions.assertEquals(6, productVectorStore.count());
9397

94-
List<JsonDocument> results = vectorStore
98+
List<JsonResult> results = vectorStore
9599
.similaritySearchJson(new float[]{1f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f}, 2);
96-
97100
}
98101

99102

astra-sdk-vector/src/test/java/com/dtsx/astra/sdk/vector/VectorClientDbCreationsTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void shouldCreateCollection() {
9393
AstraVectorClient vectorClient = new AstraVectorClient();
9494

9595
// Assign vectorDb client (but could user fluent everywhere)
96-
VectorDatabase vectorDb = vectorClient.database(DBNAME_VECTOR_CLIENT);
96+
VectorDatabase vectorDb = vectorClient.vectorDatabase(DBNAME_VECTOR_CLIENT);
9797

9898
// Create a Store with $vector
9999
vectorDb.createVectorStore(DEMO_COLLECTION_VECTOR, 14);
@@ -104,7 +104,7 @@ public void shouldCreateCollection() {
104104
log.info("{} is created", STORE_WITH_VECTORIZE_TMP);
105105

106106
log.info("List of Stores");
107-
vectorDb.findAllStores().forEach(log::info);
107+
vectorDb.findAllVectorStores().forEach(log::info);
108108
}
109109

110110
@Test
@@ -113,14 +113,14 @@ public void shouldCreateCollection() {
113113
@EnabledIfEnvironmentVariable(named = "ASTRA_DB_APPLICATION_TOKEN", matches = "Astra.*")
114114
public void shouldDeleteStore() {
115115
// Assign vectorDb client (but could user fluent everywhere)
116-
VectorDatabase vectorDb = new AstraVectorClient().database(DBNAME_VECTOR_CLIENT);
116+
VectorDatabase vectorDb = new AstraVectorClient().vectorDatabase(DBNAME_VECTOR_CLIENT);
117117
// Given
118-
Assertions.assertTrue(vectorDb.isStoreExist(STORE_WITH_VECTORIZE_TMP));
118+
Assertions.assertTrue(vectorDb.isVectorStoreExist(STORE_WITH_VECTORIZE_TMP));
119119
// When Delete a store
120-
vectorDb.deleteStore(STORE_WITH_VECTORIZE_TMP);
120+
vectorDb.deleteVectorStore(STORE_WITH_VECTORIZE_TMP);
121121
log.info("{} is deleted", STORE_WITH_VECTORIZE_TMP);
122122
// Then
123-
Assertions.assertFalse(vectorDb.isStoreExist(STORE_WITH_VECTORIZE_TMP));
123+
Assertions.assertFalse(vectorDb.isVectorStoreExist(STORE_WITH_VECTORIZE_TMP));
124124
}
125125

126126
}

astra-sdk-vector/src/test/java/com/dtsx/astra/sdk/vector/VectorClientPhilosopherTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ public static void setup() {
7373
@EnabledIfEnvironmentVariable(named = "ASTRA_DB_APPLICATION_TOKEN", matches = "Astra.*")
7474
public void shouldIngestCsv() {
7575
// Init the Store
76-
VectorDatabase dbClient = new AstraVectorClient().database(DBNAME_VECTOR_CLIENT);
77-
dbClient.deleteStore(VECTOR_STORE_NAME);
76+
VectorDatabase dbClient = new AstraVectorClient().vectorDatabase(DBNAME_VECTOR_CLIENT);
77+
dbClient.deleteVectorStore(VECTOR_STORE_NAME);
7878
vectorStore = dbClient.createVectorStore(VECTOR_STORE_NAME, 1536, Quote.class);
7979
log.info("store {} is created ", VECTOR_STORE_NAME);
80-
assertTrue(dbClient.isStoreExist(VECTOR_STORE_NAME));
80+
assertTrue(dbClient.isVectorStoreExist(VECTOR_STORE_NAME));
8181

8282
// Populate the Store
8383
AtomicInteger rowId = new AtomicInteger();
@@ -95,7 +95,7 @@ public void shouldIngestCsv() {
9595
public void shouldSimilaritySearch() {
9696

9797
vectorStore = new AstraVectorClient()
98-
.database(DBNAME_VECTOR_CLIENT)
98+
.vectorDatabase(DBNAME_VECTOR_CLIENT)
9999
.vectorStore(VECTOR_STORE_NAME, Quote.class);
100100

101101
float[] embeddings = vectorize("We struggle all our life for nothing");

astra-sdk-vector/src/test/java/com/dtsx/astra/sdk/vector/VectorClientProductTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ public static void setup() {
6363
@EnabledIfEnvironmentVariable(named = "ASTRA_DB_APPLICATION_TOKEN", matches = "Astra.*")
6464
public void shouldInsertStaticDocument() {
6565
// Recreating the store
66-
VectorDatabase dbClient = new AstraVectorClient().database(DBNAME_VECTOR_CLIENT);
67-
dbClient.deleteStore(VECTOR_STORE_NAME);
66+
VectorDatabase dbClient = new AstraVectorClient().vectorDatabase(DBNAME_VECTOR_CLIENT);
67+
dbClient.deleteVectorStore(VECTOR_STORE_NAME);
6868
vectorStore = dbClient.createVectorStore(VECTOR_STORE_NAME, 14, Product.class);
6969
log.info("store {} is created ", VECTOR_STORE_NAME);
70-
assertTrue(dbClient.isStoreExist(VECTOR_STORE_NAME));
70+
assertTrue(dbClient.isVectorStoreExist(VECTOR_STORE_NAME));
7171

7272
// Easy insert one
7373
vectorStore.insert("pf7044",
@@ -83,7 +83,7 @@ public void shouldInsertStaticDocument() {
8383
new float[]{0f, 0f, 0f, 1f, 0f, 0f, 0f, 1f, 1f, 1f, 0f, 0f, 0f, 0f})
8484
));
8585
// Insert Many with Json
86-
vectorStore.insertAllJsonDocuments(List.of(
86+
vectorStore.insertAllJson(List.of(
8787
new JsonDocument("pf1844")
8888
.put("product_name", "HealthyFresh - Beef raw dog food")
8989
.put("product_price", 12.99)
@@ -107,7 +107,7 @@ public void shouldInsertStaticDocument() {
107107
public void shouldSimilaritySearch() {
108108

109109
vectorStore = new AstraVectorClient()
110-
.database(DBNAME_VECTOR_CLIENT)
110+
.vectorDatabase(DBNAME_VECTOR_CLIENT)
111111
.vectorStore(VECTOR_STORE_NAME, Product.class);
112112

113113
float[] embeddings = new float[] {1f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f};
@@ -123,7 +123,7 @@ public void shouldSimilaritySearch() {
123123
@DisplayName("03. Search with Meta Data")
124124
public void shouldSimilaritySearchWithMetaData() {
125125
vectorStore = new AstraVectorClient()
126-
.database(DBNAME_VECTOR_CLIENT)
126+
.vectorDatabase(DBNAME_VECTOR_CLIENT)
127127
.vectorStore(VECTOR_STORE_NAME, Product.class);
128128

129129
float[] embeddings = new float[] {1f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f};

0 commit comments

Comments
 (0)