Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/changelog/125370.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
pr: 125370
summary: Set default similarity for Cohere model to cosine
area: Machine Learning
type: bug
issues:
- 122878
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.elasticsearch.common.util.LazyInitializable;
import org.elasticsearch.core.Nullable;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper;
import org.elasticsearch.inference.ChunkedInference;
import org.elasticsearch.inference.ChunkingSettings;
import org.elasticsearch.inference.InferenceServiceConfiguration;
Expand Down Expand Up @@ -335,15 +336,15 @@ public Model updateModelWithEmbeddingDetails(Model model, int embeddingSize) {
}

/**
* Return the default similarity measure for the embedding type.
* Cohere embeddings are normalized to unit vectors therefor Dot
* Product similarity can be used and is the default for all Cohere
* models.
* Returns the default similarity measure for the embedding type.
* Cohere embeddings are expected to be normalized to unit vectors, but due to floating point precision issues,
* our check ({@link DenseVectorFieldMapper#isNotUnitVector(float)}) often fails.
* Therefore, we use cosine similarity to ensure compatibility.
*
* @return The default similarity.
* @return The default similarity measure.
*/
static SimilarityMeasure defaultSimilarity() {
return SimilarityMeasure.DOT_PRODUCT;
return SimilarityMeasure.COSINE;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1579,7 +1579,7 @@ public void testChunkedInfer_BatchesCalls_Bytes() throws IOException {
}

public void testDefaultSimilarity() {
assertEquals(SimilarityMeasure.DOT_PRODUCT, CohereService.defaultSimilarity());
assertEquals(SimilarityMeasure.COSINE, CohereService.defaultSimilarity());
}

public void testInfer_StreamRequest() throws Exception {
Expand Down