# Similarity field in KNN

**URL:** <https://discuss.elastic.co/t/similarity-field-in-knn/348552>\
**Category:** Elasticsearch\
**Tags:** vector-search\
**Created:** [December 4, 2023, 11:33am UTC](https://discuss.elastic.co/t/similarity-field-in-knn/348552 "2023-12-04T11:33:40Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sai\_Krishna\_D](https://avatars.discourse-cdn.com/v4/letter/s/54ee81/32.png) [@Sai\_Krishna\_D](https://discuss.elastic.co/u/Sai_Krishna_D)\
**Post date:** [December 4, 2023, 11:33am UTC](https://discuss.elastic.co/t/similarity-field-in-knn/348552/1 "2023-12-04T11:33:40Z")

</div>

When using the Similarity field in KNN Query, The response is not expected, The similarity value I gave was 0.6 and the boost as 1. Even though there are more than 30 documents which have score greater than 0.7 only one document is returned.

If similarity field is not mentioned in the query, the documents that were returned are having more than 0.7 score

Query:  
 ![image](https://us1.discourse-cdn.com/elastic/original/3X/4/8/4873f77a2b0ad7f797cce079e17f2ec014c4782c.png)

ES Version: 8.11

---

<div class="post-metadata">

**Author:** ![BenTrent](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/bentrent/32/33915_2.png) [@BenTrent](https://discuss.elastic.co/u/BenTrent)\
**Post date:** [December 4, 2023, 12:28pm UTC](https://discuss.elastic.co/t/similarity-field-in-knn/348552/2 "2023-12-04T12:28:50Z")

</div>

@Sai_Krishna_D ,

What is the similarity function set up for your index?

Note: `similarity` in this case refers to the actual vector similarity, not the \_score. The \_score is transformed, applies boosts, etc.

For example, if you are using dot\_product, using `0.6` is requiring the vectors have a `dot_product` of at least 0.6.

The document \_score as it relates to dot\_product is `(1 + similarity) / 2`.

If you consider documents with score `0.7` as adequately similar, you should set your similarity threshold to:

`0.7 * 2 - 1` or `0.4`.

---

<div class="post-metadata">

**Author:** ![Sai\_Krishna\_D](https://avatars.discourse-cdn.com/v4/letter/s/54ee81/32.png) [@Sai\_Krishna\_D](https://discuss.elastic.co/u/Sai_Krishna_D)\
**Post date:** [December 4, 2023, 12:58pm UTC](https://discuss.elastic.co/t/similarity-field-in-knn/348552/3 "2023-12-04T12:58:48Z")

</div>

@BenTrent  
We are using the cosine similarity.  
Anyway your answer has resolved my issue. Thanks for the quick response. Also can we please add this to the documentation as well to avoid this understanding gap.

Thanks and Regards  
Sai Krishna D

---

<div class="post-metadata">

**Author:** ![BenTrent](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/bentrent/32/33915_2.png) [@BenTrent](https://discuss.elastic.co/u/BenTrent)\
**Post date:** [December 4, 2023, 1:21pm UTC](https://discuss.elastic.co/t/similarity-field-in-knn/348552/4 "2023-12-04T13:21:29Z")

</div>

@Sai_Krishna_D you are correct, our documentation here isn't great. I will update [k-nearest neighbor (kNN) search | Elasticsearch Guide [8.11] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html#_search_knn_with_expected_similarity) to explain the calculations and how to get the right similarity!

---

<div class="post-metadata">

**Author:** ![Sai\_Krishna\_D](https://avatars.discourse-cdn.com/v4/letter/s/54ee81/32.png) [@Sai\_Krishna\_D](https://discuss.elastic.co/u/Sai_Krishna_D)\
**Post date:** [December 4, 2023, 2:30pm UTC](https://discuss.elastic.co/t/similarity-field-in-knn/348552/5 "2023-12-04T14:30:06Z")

</div>

Thank you @BenTrent

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [January 1, 2024, 2:30pm UTC](https://discuss.elastic.co/t/similarity-field-in-knn/348552/6 "2024-01-01T14:30:34Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
