Skip to content

Commit f5b7a9c

Browse files
committed
Add control to speed up marshalling
1 parent f34877b commit f5b7a9c

File tree

5 files changed

+99
-65
lines changed

5 files changed

+99
-65
lines changed

astra-db-java/src/main/java/com/datastax/astra/internal/utils/JsonUtils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,11 @@ public static String marshall(Object o) {
154154
* @param <T>
155155
* current type
156156
*/
157+
@SuppressWarnings("unchecked")
157158
public static <T> T convertValue(Object bean, Class<T> clazz) {
159+
if (bean.getClass() == clazz) {
160+
return (T) bean;
161+
}
158162
return getDataApiObjectMapper().convertValue(bean, clazz);
159163
}
160164

astra-db-java/src/test/java/com/datastax/astra/test/integration/collection/VectorizePreviewITTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class VectorizePreviewITTest {
2929
static final String COLLECTION_VECTORIZE = "collection_vectorize";
3030
static final String NVIDIA_PROVIDER = "nvidia";
3131
static final String NVIDIA_MODEL = "NV-Embed-QA";
32-
static final Integer NVIDIA_DIMENSION= 1024;
32+
static final Integer NVIDIA_DIMENSION = 1024;
3333
private static Database db;
3434
private static Collection<Document> collectionVectorize;
3535

@@ -46,11 +46,10 @@ static void setup() {
4646
void shouldCreateACollectionWithNvidia() {
4747
Collection<Document> collection = db.createCollection(COLLECTION_VECTORIZE,
4848
CollectionOptions.builder()
49-
.vectorDimension(NVIDIA_DIMENSION)
50-
.vectorSimilarity(SimilarityMetric.COSINE)
51-
.vectorize(NVIDIA_PROVIDER, NVIDIA_MODEL)
52-
.build());
53-
49+
.vectorDimension(NVIDIA_DIMENSION)
50+
.vectorSimilarity(SimilarityMetric.COSINE)
51+
.vectorize(NVIDIA_PROVIDER, NVIDIA_MODEL)
52+
.build());
5453
assertThat(collection).isNotNull();
5554
assertThat(db.listCollectionNames().collect(Collectors.toList())).contains(COLLECTION_VECTORIZE);
5655
}
@@ -68,8 +67,9 @@ void shouldInsertOneDocumentWithVectorize() {
6867

6968
@Test
7069
void testFindVectorize() {
71-
List<Document> doclist = collectionVectorize
72-
.find(sort("Life is too short for Javascript"))
70+
List<Document> doclist = collectionVectorize.find(
71+
// FindOptions.Builder.sort(...), some options
72+
sort("Life is too short for Javascript"))
7373
.all();
7474
assertThat(doclist).isNotNull().isNotEmpty();
7575
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import com.datastax.astra.client.Collection;
2+
import com.datastax.astra.client.DataAPIClient;
3+
import com.datastax.astra.client.Database;
4+
import com.datastax.astra.client.model.Document;
5+
import com.datastax.astra.client.model.FindIterable;
6+
7+
import static com.datastax.astra.client.model.SimilarityMetric.COSINE;
8+
9+
public class Quickstart {
10+
11+
public static void main(String[] args) {
12+
// Loading Arguments
13+
String astraToken = System.getenv("ASTRA_DB_APPLICATION_TOKEN");
14+
String astraApiEndpoint = System.getenv("ASTRA_DB_API_ENDPOINT");
15+
16+
// Initialize the client. The keyspace parameter is optional if you use
17+
// "default_keyspace".
18+
DataAPIClient client = new DataAPIClient(astraToken);
19+
System.out.println("Connected to AstraDB");
20+
21+
Database db = client.getDatabase(astraApiEndpoint, "default_keyspace");
22+
System.out.println("Connected to Database.");
23+
// end::init[]
24+
25+
// tag::collection[]
26+
// Create a collection. The default similarity metric is cosine.
27+
Collection<Document> collection = db
28+
.createCollection("vector_test", 5, COSINE);
29+
System.out.println("Created a collection");
30+
// end::collection[]
31+
32+
// tag::data[]
33+
// Insert documents into the collection
34+
collection.insertMany(
35+
new Document("1")
36+
.append("text", "ChatGPT integrated sneakers that talk to you")
37+
.vector(new float[]{0.1f, 0.15f, 0.3f, 0.12f, 0.05f}),
38+
new Document("2")
39+
.append("text", "An AI quilt to help you sleep forever")
40+
.vector(new float[]{0.45f, 0.09f, 0.01f, 0.2f, 0.11f}),
41+
new Document("3")
42+
.append("text", "A deep learning display that controls your mood")
43+
.vector(new float[]{0.1f, 0.05f, 0.08f, 0.3f, 0.6f}));
44+
System.out.println("Inserted documents into the collection");
45+
// end::data[]
46+
47+
// tag::search[]
48+
// Perform a similarity search
49+
FindIterable<Document> resultsSet = collection.find(
50+
new float[]{0.15f, 0.1f, 0.1f, 0.35f, 0.55f},
51+
10
52+
);
53+
resultsSet.forEach(System.out::println);
54+
// end::search[]
55+
56+
// tag::cleanup[]
57+
// Delete the collection
58+
collection.drop();
59+
System.out.println("Deleted the collection");
60+
// end::cleanup[]
61+
62+
// tag::end[]
63+
}
64+
}
65+
// end::end[]

examples/src/main/java/com/datastax/astra/client/QuickStart.java

Lines changed: 0 additions & 55 deletions
This file was deleted.

tools/src/main/java/com/datastax/astra/tool/CsvLoaderListing.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,43 @@
22

33
import com.datastax.astra.client.Collection;
44
import com.datastax.astra.client.DataAPIClient;
5+
import com.datastax.astra.client.DataAPIOptions;
56
import com.datastax.astra.client.Database;
7+
import com.datastax.astra.client.model.CollectionIdTypes;
8+
import com.datastax.astra.client.model.CollectionOptions;
69
import com.datastax.astra.client.model.Document;
10+
import com.datastax.astra.client.model.FindOptions;
11+
import com.datastax.astra.client.model.Projections;
12+
import com.datastax.astra.client.model.SimilarityMetric;
13+
import com.datastax.astra.internal.command.LoggingCommandObserver;
714
import com.datastax.astra.tool.csv.CsvLoader;
815
import com.datastax.astra.tool.csv.CsvRowMapper;
916
import lombok.extern.slf4j.Slf4j;
1017

18+
import static com.datastax.astra.client.model.CollectionIdTypes.OBJECT_ID;
19+
import static com.datastax.astra.client.model.Filters.and;
20+
import static com.datastax.astra.client.model.Filters.eq;
21+
import static com.datastax.astra.client.model.Projections.include;
22+
1123
/**
1224
* Load a CSV to Astra
1325
*/
1426
@Slf4j
1527
public class CsvLoaderListing {
1628

29+
private static final String ASTRA_TOKEN = "<replace_me>";
30+
private static final String API_ENDPOINT = "<replace_me>";
31+
1732
public static void main(String[] args) throws Exception {
1833
// Get an empty Collection
19-
DataAPIClient client = new DataAPIClient("<replace_me>");
20-
Database db = client.getDatabase("<replace_me>");
34+
DataAPIClient client = new DataAPIClient(ASTRA_TOKEN);
35+
36+
Database db = client.getDatabase(API_ENDPOINT);
37+
2138
Collection<Document> collection = db.createCollection("airbnb");
39+
40+
db.getCollection("airbnb").deleteAll();
41+
collection.registerListener("logger", new LoggingCommandObserver(CsvLoaderListing.class));
2242
collection.deleteAll();
2343

2444
// Zou !

0 commit comments

Comments
 (0)