# Using similarity in queries

**URL:** <https://community.pinecone.io/t/using-similarity-in-queries/3184>\
**Category:** General\
**Created:** [September 12, 2023, 9:39am UTC](https://community.pinecone.io/t/using-similarity-in-queries/3184 "2023-09-12T09:39:07Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![flemming.madsen](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/flemming.madsen/32/3617_2.png) [@flemming.madsen](https://community.pinecone.io/u/flemming.madsen)\
**Post date:** [September 12, 2023, 9:39am UTC](https://community.pinecone.io/t/using-similarity-in-queries/3184/1 "2023-09-12T09:39:07Z")

</div>

Is it possible query Pinecone for all (or top N) results where the similarity to a vector (or id) is over a certain threshold, e.g. 0.90?

If so, can you point me to an example or to the relevant documentation.  
Thank you in advance.

---

<div class="post-metadata">

**Author:** ![adumont](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/adumont/32/150_2.png) [@adumont](https://community.pinecone.io/u/adumont)\
**Post date:** [September 14, 2023, 5:55am UTC](https://community.pinecone.io/t/using-similarity-in-queries/3184/2 "2023-09-14T05:55:33Z")

</div>

From what I know, you set the top\_k when querying to retrieve the top\_k most similar vectors. You can’t set a threshold at that time, but you can retrieve the similarity score in the metadata, so you can filter the retrieved results, sort them… (in your app).

---

<div class="post-metadata">

**Author:** ![tjensen](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/tjensen/32/1279_2.png) [@tjensen](https://community.pinecone.io/u/tjensen)\
**Post date:** [September 14, 2023, 4:48pm UTC](https://community.pinecone.io/t/using-similarity-in-queries/3184/3 "2023-09-14T16:48:44Z")

</div>

The score appears in the query response. Something like this should work in python:

```auto
threshold = .9

def filter_by_score(d):
    return d["score"] > threshold

def query_vdb(s, filters={}, k=3):
    v = openai.Embedding.create(input=s, engine='text-embedding-ada-002')['data'][0]['embedding']
    q = index.query(vector=v, top_k=k,
                        filter = filters,
                        include_metadata=True
                    )
    return list(filter(filter_by_score, q['matches']))

query_vdb("this is my query")

```
