# Vector-Based search using cosineSimilarity

**URL:** <https://discuss.elastic.co/t/vector-based-search-using-cosinesimilarity/307672>\
**Category:** Elasticsearch\
**Created:** [June 20, 2022, 2:24pm UTC](https://discuss.elastic.co/t/vector-based-search-using-cosinesimilarity/307672 "2022-06-20T14:24:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Biplab](https://avatars.discourse-cdn.com/v4/letter/b/46a35a/32.png) [@Biplab](https://discuss.elastic.co/u/Biplab)\
**Post date:** [June 20, 2022, 2:24pm UTC](https://discuss.elastic.co/t/vector-based-search-using-cosinesimilarity/307672/1 "2022-06-20T14:24:31Z")

</div>

Hi, I am indexing text and vector in Elasticsearch, working on an use case where I am using cosineSimilarity to get the result. The query search is returning the list of documents with decreasing Confidence Scores with the most similar ones being at the top. For laptop query I am getting laptop/computer related document at top and other non laptop related document after that. Requirement for the use case is If user search by Laptop then the response would be laptop/computer/PC related document only, Not not laptop related document.

Query that I am using :

```nohighlight
{
  "query": {
    "script_score": {
      "query" : {
        "match_all": {}
      },
      "script": {
        "source": "cosineSimilarity(params.query_vector, 'vector') + 1.0", 
        "params": {
          "query_vector": [vsctors]  
        }
      }
    }
  }
}

Can someone please help on that.

Thanks.
```

---

<div class="post-metadata">

**Author:** ![Gavin\_Song](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gavin_song/32/101266_2.png) [@Gavin\_Song](https://discuss.elastic.co/u/Gavin_Song)\
**Post date:** [June 23, 2022, 6:20pm UTC](https://discuss.elastic.co/t/vector-based-search-using-cosinesimilarity/307672/2 "2022-06-23T18:20:17Z")

</div>

I am also looking for this.

---

<div class="post-metadata">

**Author:** ![mayya](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mayya/32/83147_2.png) [@mayya](https://discuss.elastic.co/u/mayya)\
**Post date:** [July 12, 2022, 4:22pm UTC](https://discuss.elastic.co/t/vector-based-search-using-cosinesimilarity/307672/3 "2022-07-12T16:22:52Z")

</div>

There are multiple ways you can do that:

1. script\_score query has a [min\_score](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html) parameter. If provided results will be restricted only to those with scores \>= min\_score

2. Inside `query` part you can provide a bool filter to restrict results to specific category (e.g. Laptops category)

3. For approximate KNN search, we are working (still work in progress) on a new type of query: [radius](https://github.com/elastic/elasticsearch/issues/84929) that allows to restrict returned results to only those that lie within the provided radius.

---

<div class="post-metadata">

**Author:** ![Biplab](https://avatars.discourse-cdn.com/v4/letter/b/46a35a/32.png) [@Biplab](https://discuss.elastic.co/u/Biplab)\
**Post date:** [July 14, 2022, 8:08am UTC](https://discuss.elastic.co/t/vector-based-search-using-cosinesimilarity/307672/4 "2022-07-14T08:08:46Z")

</div>

Thanks @mayya for your help.

---

<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:** [August 11, 2022, 8:09am UTC](https://discuss.elastic.co/t/vector-based-search-using-cosinesimilarity/307672/5 "2022-08-11T08:09:37Z")

</div>

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