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:
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user