googleapis / nodejs-firestore

Node.js client for Google Cloud Firestore: a NoSQL document database built for automatic scaling, high performance, and ease of application development.
https://cloud.google.com/firestore/
Apache License 2.0
636 stars 147 forks source link

Add similarity threshold to (.findNearest) queries in addition to returning similarity scores. #2079

Open Moe03 opened 1 week ago

Moe03 commented 1 week ago

Is your feature request related to a problem? Please describe. I'm trying to be able to add a thresold to my similarity search with vectors but it doesn't semm to be mentioned here anywhere? https://firebase.google.com/docs/firestore/vector-search#node.js_2

Describe the solution you'd like Adding a field called similarityThreshold to the vector search query would be perfect:

const searchRes = await dbToUse.collection(`voiceglow/${agentData.ID}/kb_chunks`).findNearest("vector", 
   FieldValue.vector(searchVector), {
   limit: 5,
   distanceMeasure: 'COSINE',
   similarityThresohold: 0.2 // add this (currently doesn't work)
}).get();

Also adding to the queryies of such types (.findNearest) the similarity score with the search vector is highly beneficial for debugging purposes, we're currenlty using pgvector on postgres but would love to migrate everything on firestore but these may be annoying to deal with.

Describe alternatives you've considered There is nothing mentioned in the docs, I hope it's already implemented but not docuemented/typed properly?

tom-andersen commented 6 days ago

@MarkDuckworth Could you take this into consideration as part of your API design?

dave-lacy commented 5 days ago

+1 this would be great to have

MarkDuckworth commented 9 hours ago

Thanks for the feedback. I've passed it along to the rest of the team working on vector search in Firestore.

I can confirm that similarity threshold and returning the vector distance is not supported as of today. The Firestore vector search feature is currently in Preview and it is not necessarily feature complete.