Skip to content

Commit a2bfa8b

Browse files
author
Milder Hernandez Cagua
committed
Adjust IndexKind and DistanceFunction defaults
1 parent 8bee95b commit a2bfa8b

File tree

20 files changed

+93
-96
lines changed

20 files changed

+93
-96
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/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, indexKind = IndexKind.HNSW, distanceFunction = DistanceFunction.COSINE_DISTANCE)
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

semantickernel-experimental/src/main/java/com/microsoft/semantickernel/connectors/data/azureaisearch/AzureAISearchVectorStoreCollectionCreateMapping.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import com.azure.search.documents.indexes.models.VectorSearchAlgorithmConfiguration;
1111
import com.azure.search.documents.indexes.models.VectorSearchAlgorithmMetric;
1212
import com.azure.search.documents.indexes.models.VectorSearchProfile;
13+
import com.microsoft.semantickernel.data.vectorstorage.definition.DistanceFunction;
14+
import com.microsoft.semantickernel.data.vectorstorage.definition.IndexKind;
1315
import com.microsoft.semantickernel.data.vectorstorage.definition.VectorStoreRecordDataField;
1416
import com.microsoft.semantickernel.data.vectorstorage.definition.VectorStoreRecordKeyField;
1517
import com.microsoft.semantickernel.data.vectorstorage.definition.VectorStoreRecordVectorField;
@@ -31,7 +33,7 @@ private static String getAlgorithmConfigName(VectorStoreRecordVectorField vector
3133

3234
private static VectorSearchAlgorithmMetric getAlgorithmMetric(
3335
@Nonnull VectorStoreRecordVectorField vectorField) {
34-
if (vectorField.getDistanceFunction() == null) {
36+
if (vectorField.getDistanceFunction() == DistanceFunction.UNDEFINED) {
3537
return VectorSearchAlgorithmMetric.COSINE;
3638
}
3739

@@ -50,7 +52,7 @@ private static VectorSearchAlgorithmMetric getAlgorithmMetric(
5052

5153
private static VectorSearchAlgorithmConfiguration getAlgorithmConfig(
5254
@Nonnull VectorStoreRecordVectorField vectorField) {
53-
if (vectorField.getIndexKind() == null) {
55+
if (vectorField.getIndexKind() == IndexKind.UNDEFINED) {
5456
return new HnswAlgorithmConfiguration(getAlgorithmConfigName(vectorField))
5557
.setParameters(new HnswParameters().setMetric(getAlgorithmMetric(vectorField)));
5658
}

semantickernel-experimental/src/main/java/com/microsoft/semantickernel/connectors/data/jdbc/JDBCVectorStoreQueryProvider.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.microsoft.semantickernel.data.vectorsearch.VectorSearchResult;
66
import com.microsoft.semantickernel.data.vectorstorage.VectorStoreRecordMapper;
77
import com.microsoft.semantickernel.data.vectorstorage.definition.DistanceFunction;
8+
import com.microsoft.semantickernel.data.vectorstorage.definition.IndexKind;
89
import com.microsoft.semantickernel.data.vectorstorage.definition.VectorStoreRecordDefinition;
910
import com.microsoft.semantickernel.data.vectorstorage.definition.VectorStoreRecordField;
1011
import com.microsoft.semantickernel.data.vectorstorage.definition.VectorStoreRecordVectorField;
@@ -263,7 +264,9 @@ public void createCollection(String collectionName,
263264

264265
// No approximate search is supported in JDBCVectorStoreQueryProvider
265266
if (recordDefinition.getVectorFields().stream()
266-
.anyMatch(field -> field.getIndexKind() != null)) {
267+
.anyMatch(
268+
field -> field.getIndexKind() != null && field.getIndexKind() != IndexKind.FLAT
269+
&& field.getIndexKind() != IndexKind.UNDEFINED)) {
267270
LOGGER
268271
.warn(String.format("Indexes are not supported in %s. Ignoring indexKind property.",
269272
this.getClass().getName()));
@@ -532,9 +535,10 @@ public <Record> List<VectorSearchResult<Record>> search(String collectionName,
532535
List<Record> records = getRecordsWithFilter(collectionName, recordDefinition, mapper,
533536
new GetRecordOptions(true), filter, parameters);
534537

535-
DistanceFunction distanceFunction = vectorField.getDistanceFunction() == null
536-
? DistanceFunction.EUCLIDEAN_DISTANCE
537-
: vectorField.getDistanceFunction();
538+
DistanceFunction distanceFunction = vectorField
539+
.getDistanceFunction() == DistanceFunction.UNDEFINED
540+
? DistanceFunction.EUCLIDEAN_DISTANCE
541+
: vectorField.getDistanceFunction();
538542

539543
return VectorOperations.exactSimilaritySearch(records, vector, vectorField,
540544
distanceFunction, options);

0 commit comments

Comments
 (0)