Skip to content

Commit 607db38

Browse files
author
Milder Hernandez
authored
Merge pull request #237 from milderhc/vector-attributes-defaults
Adjust IndexKind and DistanceFunction defaults
2 parents 8bee95b + e8daf1e commit 607db38

File tree

22 files changed

+117
-104
lines changed

22 files changed

+117
-104
lines changed

aiservices/openai/src/test/java/com/microsoft/semantickernel/aiservices/openai/chatcompletion/JsonSchemaTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public void jacksonGenerationTest() throws JsonProcessingException {
1818
Assertions.assertEquals("foo", format.getJsonSchema().getName());
1919

2020
Assertions.assertTrue(format.getJsonSchema().getSchema()
21-
.replaceAll("\n", "")
21+
.replaceAll("\\r\\n|\\r|\\n", "")
2222
.replaceAll(" +", "")
2323
.contains(
2424
"\"type\":\"object\",\"properties\":{\"bar\":{}}"));

api-test/integration-tests/src/test/java/com/microsoft/semantickernel/tests/connectors/memory/jdbc/Hotel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.microsoft.semantickernel.data.vectorstorage.attributes.VectorStoreRecordKeyAttribute;
77
import com.microsoft.semantickernel.data.vectorstorage.attributes.VectorStoreRecordVectorAttribute;
88
import com.microsoft.semantickernel.data.vectorstorage.definition.DistanceFunction;
9+
import com.microsoft.semantickernel.data.vectorstorage.definition.IndexKind;
910

1011
import java.util.List;
1112

@@ -37,7 +38,7 @@ public class Hotel {
3738
private final List<Float> dotProduct;
3839

3940
@JsonProperty("indexedSummaryEmbedding")
40-
@VectorStoreRecordVectorAttribute(dimensions = 8, indexKind = "hnsw", distanceFunction = DistanceFunction.EUCLIDEAN_DISTANCE)
41+
@VectorStoreRecordVectorAttribute(dimensions = 8, indexKind = IndexKind.HNSW, distanceFunction = DistanceFunction.EUCLIDEAN_DISTANCE)
4142
private final List<Float> indexedEuclidean;
4243
@VectorStoreRecordDataAttribute
4344
private double rating;

api-test/integration-tests/src/test/java/com/microsoft/semantickernel/tests/connectors/memory/jdbc/JDBCVectorStoreRecordCollectionTest.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import com.microsoft.semantickernel.data.vectorstorage.options.GetRecordOptions;
1818
import com.microsoft.semantickernel.data.vectorstorage.options.VectorSearchOptions;
1919
import com.mysql.cj.jdbc.MysqlDataSource;
20+
21+
import java.io.IOException;
2022
import java.nio.file.Files;
2123
import java.nio.file.Path;
2224
import java.util.ArrayList;
@@ -61,6 +63,16 @@ public enum QueryProvider {
6163
HSQLDB
6264
}
6365

66+
static Path createTempDbFile(String prefix) {
67+
try {
68+
Path file = Files.createTempFile(prefix, ".db");
69+
file.toFile().deleteOnExit();
70+
return file;
71+
} catch (IOException e) {
72+
throw new RuntimeException(e);
73+
}
74+
}
75+
6476
private JDBCVectorStoreRecordCollection<Hotel> buildRecordCollection(QueryProvider provider,
6577
@Nonnull String collectionName) {
6678
SQLVectorStoreQueryProvider queryProvider;
@@ -88,17 +100,18 @@ private JDBCVectorStoreRecordCollection<Hotel> buildRecordCollection(QueryProvid
88100
.build();
89101
break;
90102
case SQLite:
103+
Path sqliteDb = createTempDbFile("sqliteDb");
91104
SQLiteDataSource sqliteDataSource = new SQLiteDataSource();
92-
sqliteDataSource.setUrl("jdbc:sqlite:file:testdb");
105+
sqliteDataSource.setUrl("jdbc:sqlite:file:" + sqliteDb.toFile().getAbsolutePath());
93106
dataSource = sqliteDataSource;
107+
94108
queryProvider = SQLiteVectorStoreQueryProvider.builder()
95-
.withDataSource(sqliteDataSource)
109+
.withDataSource(dataSource)
96110
.build();
97111
break;
98112
case HSQLDB:
99113
try {
100-
Path file = Files.createTempFile("testdb", ".db");
101-
file.toFile().deleteOnExit();
114+
Path file = createTempDbFile("testHSQLDB");
102115

103116
Properties properties = new Properties();
104117
properties.putAll(

api-test/integration-tests/src/test/java/com/microsoft/semantickernel/tests/connectors/memory/jdbc/JDBCVectorStoreTest.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.testcontainers.utility.DockerImageName;
2222

2323
import javax.sql.DataSource;
24+
import java.io.IOException;
2425
import java.nio.file.Files;
2526
import java.nio.file.Path;
2627
import java.util.Arrays;
@@ -30,6 +31,7 @@
3031

3132
import com.microsoft.semantickernel.tests.connectors.memory.jdbc.JDBCVectorStoreRecordCollectionTest.QueryProvider;
3233

34+
import static com.microsoft.semantickernel.tests.connectors.memory.jdbc.JDBCVectorStoreRecordCollectionTest.createTempDbFile;
3335
import static org.junit.jupiter.api.Assertions.assertEquals;
3436
import static org.junit.jupiter.api.Assertions.assertNotNull;
3537
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -72,17 +74,18 @@ private JDBCVectorStore buildVectorStore(QueryProvider provider) {
7274
.build();
7375
break;
7476
case SQLite:
77+
Path sqliteDb = createTempDbFile("testSQLite");
7578
SQLiteDataSource sqliteDataSource = new SQLiteDataSource();
76-
sqliteDataSource.setUrl("jdbc:sqlite:file:test");
79+
sqliteDataSource.setUrl("jdbc:sqlite:file:" + sqliteDb.toFile().getAbsolutePath());
7780
dataSource = sqliteDataSource;
81+
7882
queryProvider = SQLiteVectorStoreQueryProvider.builder()
79-
.withDataSource(sqliteDataSource)
83+
.withDataSource(dataSource)
8084
.build();
8185
break;
8286
case HSQLDB:
8387
try {
84-
Path file = Files.createTempFile("testdb", ".db");
85-
file.toFile().deleteOnExit();
88+
Path file = createTempDbFile("testHSQLDB");
8689

8790
Properties properties = new Properties();
8891
properties.putAll(

api-test/integration-tests/src/test/java/com/microsoft/semantickernel/tests/connectors/memory/redis/Hotel.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import com.microsoft.semantickernel.data.vectorstorage.attributes.VectorStoreRecordKeyAttribute;
77
import com.microsoft.semantickernel.data.vectorstorage.attributes.VectorStoreRecordVectorAttribute;
88
import com.microsoft.semantickernel.data.vectorstorage.definition.DistanceFunction;
9+
import com.microsoft.semantickernel.data.vectorstorage.definition.IndexKind;
10+
911
import java.util.List;
1012

1113
public class Hotel {
@@ -24,15 +26,15 @@ public class Hotel {
2426
private final String description;
2527

2628
@JsonProperty("summaryEmbedding1")
27-
@VectorStoreRecordVectorAttribute(dimensions = 8, distanceFunction = DistanceFunction.EUCLIDEAN_DISTANCE)
29+
@VectorStoreRecordVectorAttribute(dimensions = 8, indexKind = IndexKind.HNSW, distanceFunction = DistanceFunction.EUCLIDEAN_DISTANCE)
2830
private final List<Float> euclidean;
2931

3032
@JsonProperty("summaryEmbedding2")
31-
@VectorStoreRecordVectorAttribute(dimensions = 8, distanceFunction = DistanceFunction.COSINE_DISTANCE)
33+
@VectorStoreRecordVectorAttribute(dimensions = 8)
3234
private final List<Float> cosineDistance;
3335

3436
@JsonProperty("summaryEmbedding3")
35-
@VectorStoreRecordVectorAttribute(dimensions = 8, distanceFunction = DistanceFunction.DOT_PRODUCT)
37+
@VectorStoreRecordVectorAttribute(dimensions = 8, indexKind = IndexKind.HNSW, distanceFunction = DistanceFunction.DOT_PRODUCT)
3638
private final List<Float> dotProduct;
3739
@VectorStoreRecordDataAttribute
3840
private double rating;

samples/semantickernel-concepts/semantickernel-syntax-examples/src/main/java/com/microsoft/semantickernel/samples/syntaxexamples/memory/InMemoryVolatileVectorStore.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Map;
2121
import java.util.stream.Collectors;
2222
import com.microsoft.semantickernel.data.vectorstorage.definition.DistanceFunction;
23+
import com.microsoft.semantickernel.data.vectorstorage.definition.IndexKind;
2324
import reactor.core.publisher.Flux;
2425
import reactor.core.publisher.Mono;
2526

@@ -44,7 +45,7 @@ static class GitHubFile {
4445
private final String description;
4546
@VectorStoreRecordDataAttribute
4647
private final String link;
47-
@VectorStoreRecordVectorAttribute(dimensions = EMBEDDING_DIMENSIONS, indexKind = "Hnsw", distanceFunction = DistanceFunction.COSINE_DISTANCE)
48+
@VectorStoreRecordVectorAttribute(dimensions = EMBEDDING_DIMENSIONS, indexKind = IndexKind.HNSW, distanceFunction = DistanceFunction.COSINE_DISTANCE)
4849
private final List<Float> embedding;
4950

5051
public GitHubFile(

samples/semantickernel-concepts/semantickernel-syntax-examples/src/main/java/com/microsoft/semantickernel/samples/syntaxexamples/memory/VectorStoreWithAzureAISearch.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import java.util.List;
2929
import java.util.Map;
3030
import java.util.stream.Collectors;
31+
32+
import com.microsoft.semantickernel.data.vectorstorage.definition.IndexKind;
3133
import reactor.core.publisher.Flux;
3234
import reactor.core.publisher.Mono;
3335

@@ -58,7 +60,7 @@ static class GitHubFile {
5860
private final String description;
5961
@VectorStoreRecordDataAttribute
6062
private final String link;
61-
@VectorStoreRecordVectorAttribute(dimensions = EMBEDDING_DIMENSIONS, indexKind = "Hnsw", distanceFunction = DistanceFunction.COSINE_DISTANCE)
63+
@VectorStoreRecordVectorAttribute(dimensions = EMBEDDING_DIMENSIONS, indexKind = IndexKind.HNSW, distanceFunction = DistanceFunction.COSINE_DISTANCE)
6264
private final List<Float> embedding;
6365

6466
public GitHubFile() {

samples/semantickernel-concepts/semantickernel-syntax-examples/src/main/java/com/microsoft/semantickernel/samples/syntaxexamples/memory/VectorStoreWithJDBC.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ static class GitHubFile {
4949
private final String description;
5050
@VectorStoreRecordDataAttribute
5151
private final String link;
52-
@VectorStoreRecordVectorAttribute(dimensions = EMBEDDING_DIMENSIONS, indexKind = "Hnsw", distanceFunction = DistanceFunction.COSINE_DISTANCE)
52+
@VectorStoreRecordVectorAttribute(dimensions = EMBEDDING_DIMENSIONS, distanceFunction = DistanceFunction.COSINE_DISTANCE)
5353
private final List<Float> embedding;
5454

5555
public GitHubFile() {

samples/semantickernel-concepts/semantickernel-syntax-examples/src/main/java/com/microsoft/semantickernel/samples/syntaxexamples/memory/VectorStoreWithRedis.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.stream.Collectors;
2929

3030
import com.microsoft.semantickernel.data.vectorstorage.definition.DistanceFunction;
31+
import com.microsoft.semantickernel.data.vectorstorage.definition.IndexKind;
3132
import reactor.core.publisher.Flux;
3233
import reactor.core.publisher.Mono;
3334
import redis.clients.jedis.JedisPooled;
@@ -52,7 +53,7 @@ public static class GitHubFile {
5253
private final String description;
5354
@VectorStoreRecordDataAttribute
5455
private final String link;
55-
@VectorStoreRecordVectorAttribute(dimensions = EMBEDDING_DIMENSIONS, indexKind = "Hnsw", distanceFunction = DistanceFunction.COSINE_DISTANCE)
56+
@VectorStoreRecordVectorAttribute(dimensions = EMBEDDING_DIMENSIONS, indexKind = IndexKind.HNSW, distanceFunction = DistanceFunction.COSINE_DISTANCE)
5657
private final List<Float> embedding;
5758

5859
public GitHubFile() {

semantickernel-api/src/test/java/com/microsoft/semantickernel/templateengine/handlebars/HandlebarsPromptTemplateTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public void testSerializesObject() {
156156

157157
String result = instance.renderAsync(Kernel.builder().build(), arguments, null)
158158
.block();
159-
Assertions.assertEquals(expResult, result.replaceAll("\\n", ""));
159+
Assertions.assertEquals(expResult, result.replaceAll("\\r\\n|\\r|\\n", ""));
160160
}
161161

162162
@Test

0 commit comments

Comments
 (0)