Skip to content

Commit 20b560f

Browse files
committed
Fix failing Coherence test
Fixes #2850 Signed-off-by: Mark Pollack <[email protected]>
1 parent 08958af commit 20b560f

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

vector-stores/spring-ai-coherence-store/src/main/java/org/springframework/ai/vectorstore/coherence/CoherenceVectorStore.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,11 +209,12 @@ public List<Document> doSimilaritySearch(SearchRequest request) {
209209
if (this.distanceType != DistanceType.COSINE || (1 - r.getDistance()) >= request.getSimilarityThreshold()) {
210210
DocumentChunk.Id id = r.getKey();
211211
DocumentChunk chunk = r.getValue();
212-
chunk.metadata().put(DocumentMetadata.DISTANCE.value(), r.getDistance());
212+
Map<String, Object> mergedMetadata = new HashMap<>(chunk.metadata());
213+
mergedMetadata.put(DocumentMetadata.DISTANCE.value(), r.getDistance());
213214
documents.add(Document.builder()
214215
.id(id.docId())
215216
.text(chunk.text())
216-
.metadata(chunk.metadata())
217+
.metadata(mergedMetadata)
217218
.score(1 - r.getDistance())
218219
.build());
219220
}

vector-stores/spring-ai-coherence-store/src/test/java/org/springframework/ai/vectorstore/coherence/CoherenceVectorStoreIT.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,10 +281,15 @@ public void searchWithThreshold() {
281281
.similarityThreshold(similarityThreshold)
282282
.build());
283283

284+
// Debug: print all returned document IDs and metadata
285+
for (Document doc : results) {
286+
System.out.println("Returned doc ID: " + doc.getId() + ", metadata: " + doc.getMetadata());
287+
}
288+
284289
assertThat(results).hasSize(1);
285290
Document resultDoc = results.get(0);
286291
assertThat(resultDoc.getId()).isEqualTo(this.documents.get(1).getId());
287-
assertThat(resultDoc.getMetadata()).containsKeys("meta1", DocumentMetadata.DISTANCE.value());
292+
assertThat(resultDoc.getMetadata()).containsKey(DocumentMetadata.DISTANCE.value());
288293
assertThat(resultDoc.getScore()).isGreaterThanOrEqualTo(similarityThreshold);
289294

290295
truncateMap(context, ((CoherenceVectorStore) vectorStore).getMapName());
@@ -300,6 +305,22 @@ void getNativeClientTest() {
300305
});
301306
}
302307

308+
@Test
309+
public void similaritySearchReturnsMetadata() {
310+
this.contextRunner.run(context -> {
311+
VectorStore vectorStore = context.getBean(VectorStore.class);
312+
vectorStore.add(this.documents);
313+
314+
// Query that matches the first document, which has meta1
315+
List<Document> results = vectorStore
316+
.similaritySearch(SearchRequest.builder().query("spring ai").topK(1).build());
317+
318+
assertThat(results).hasSize(1);
319+
Document resultDoc = results.get(0);
320+
assertThat(resultDoc.getMetadata()).containsKeys("meta1", DocumentMetadata.DISTANCE.value());
321+
});
322+
}
323+
303324
private static boolean isSortedByDistance(final List<Document> documents) {
304325
final List<Double> distances = documents.stream()
305326
.map(doc -> (Double) doc.getMetadata().get(DocumentMetadata.DISTANCE.value()))

0 commit comments

Comments
 (0)