Fix ElasticsearchVectorStore to parse similarity option correctly

- Check for valid DenseVectorSimilarity by using DenseVectorSimilarity's jsonValue with SimilarityFunction string
 - Update elasticsearch image elasticsearch:8.18.1

Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
This commit is contained in:
Ilayaperumal Gopinathan
2025-06-12 11:41:18 +01:00
parent 8b9d93f852
commit c9ec39e370
2 changed files with 15 additions and 6 deletions

View File

@@ -329,16 +329,26 @@ public class ElasticsearchVectorStore extends AbstractObservationVectorStore imp
try {
this.elasticsearchClient.indices()
.create(cr -> cr.index(this.options.getIndexName())
.mappings(map -> map.properties(this.options.getEmbeddingFieldName(),
p -> p.denseVector(dv -> dv
.similarity(DenseVectorSimilarity.valueOf(this.options.getSimilarity().toString()))
.dims(this.options.getDimensions())))));
.mappings(
map -> map.properties(this.options.getEmbeddingFieldName(),
p -> p.denseVector(dv -> dv
.similarity(parseSimilarity(this.options.getSimilarity().toString()))
.dims(this.options.getDimensions())))));
}
catch (IOException e) {
throw new RuntimeException(e);
}
}
private DenseVectorSimilarity parseSimilarity(String similarity) {
for (DenseVectorSimilarity sim : DenseVectorSimilarity.values()) {
if (sim.jsonValue().equalsIgnoreCase(similarity)) {
return sim;
}
}
throw new IllegalArgumentException("Unsupported similarity: " + similarity);
}
@Override
public void afterPropertiesSet() {
if (!this.initializeSchema) {

View File

@@ -23,8 +23,7 @@ import org.testcontainers.utility.DockerImageName;
*/
public final class ElasticsearchImage {
public static final DockerImageName DEFAULT_IMAGE = DockerImageName
.parse("docker.elastic.co/elasticsearch/elasticsearch:8.16.1");
public static final DockerImageName DEFAULT_IMAGE = DockerImageName.parse("elasticsearch:8.18.1");
private ElasticsearchImage() {