What is our primary use case?
I use Supabase Vector for semantic duplicate detection. The app allows citizens to submit and vote on political proposals, and we do not want twenty nearly identical versions of the same idea. When a user submits a proposal, we generate an embedding of the title and description, run a vector similarity search against existing proposals, and if anything scores above a set threshold, we show those matches to the user so they can vote on an existing item or an existing element instead of creating a duplicate.
The approach using Supabase Vector works really well for me. The app does not have a huge amount of users, but some of them have used that feature and avoided duplication. I'm really happy with that. Although it was a proof of concept at the beginning, when I launched that application in real life and saw users use that feature the way I was expecting, it was really encouraging.
The feature regarding duplicate detection is basic and simple, and I was expecting the user to avoid duplication in the database. It helps to reduce the number of elements that create noise and bad use cases or bad elements. It was really nice to use that implementation and that technology in my app.
What is most valuable?
I think the best feature Supabase Vector offers, or the most valuable thing I've noticed, is that pg_vector comes built in straight out of the box. I did not have to stand up or maintain a separate vector database. Getting one source of truth or one point that I can keep everything together is the main thing. The embeddings live in the same PostgreSQL as my relational data, so I can join them with metadata, apply row-level security, and keep one source of truth. I think that is the key part and most valuable for me in that regard.
Having everything in one place, embeddings and relational data together, gives me full control through SQL. I can write my own RPC functions from the similarity search using the cosine distance operator, all inside the same database. That gives me control over the threshold, the columns, the return data, and the queries I'm using. Getting all these things together in the same database is a huge advance and it was a very neat implementation of the feature I wanted to build.
I was using Supabase, so not only getting the database but also the authentication, the vectors, and the connections with webhooks to connect everything together, because the app natively used webhooks to connect with n8n. That flow was in charge of connecting with the database on Supabase. Being able to create that flow was amazing to get all that information running from one part to another and create that flow that connects everything. I was also able to launch Firebase notifications straight away to all users using n8n, so it was amazing to manage these complex features with those technologies.
What needs improvement?
I had problems integrating the vector directly into Supabase, so I had to use Google Vertex to generate the embeddings and the information I needed in the database. It would be nice if all of this could be integrated all in one place with Supabase. I would prefer not to have to use a different or external tool to create these embeddings. It would be nice to have everything integrated in the same way. Apart from that, I think that is one of the cons I found, but it is basic.
That was my main concern in that regard. My advice for others looking into using Supabase Vector is to take into account how you are going to create the embeddings, as it is not an option implemented straight away in Supabase. You will need to handle the embeddings with an external tool, so make sure to consider how these integrations are going to be made.
For how long have I used the solution?
I have used Supabase Vector for approximately six months.
What do I think about the stability of the solution?
From my experience, Supabase Vector is stable. There have been no failures, and the app is up and running, so I have no concerns in that regard.
What do I think about the scalability of the solution?
Regarding Supabase Vector's scalability, the app is still in a very basic stage, so scalability has not been an issue at the moment. The app is getting users, but it is not having thousands of users creating problems with scalability. Therefore, I do not have enough information to answer this question properly.
How are customer service and support?
Customer support is handled using emails at the moment, and since I am not using customer support from Supabase, I suppose it does not have any problem or concern in that regard.
Which solution did I use previously and why did I switch?
At the beginning, I was trying to build that part on my own in my VPS, trying to build the database and everything together. When I realized that this implementation was much more complex than I thought, that is when I decided to move to Supabase. The integration problem was how to connect this complex flow to detect duplicities between the app and Supabase. I decided to integrate n8n to control that part of the flow and determine when a user was creating a duplication and needed to return to the app, or if the proposal was new, go straight away to the database to create embeddings and store everything.
I have always worked on Firebase, but I was tired of using the Firestore database, which did not cover my needs for this project and the features I wanted to implement. I realized that due to the lack of implementation or technology in Firebase, I decided to move to Supabase and use this PostgreSQL database. It allowed me to create the structure for all the complex objects I wanted and needed and also create the vector and embeddings in the same tables. Additionally, I investigated the Datastore on Firebase, which I think has a similar approach, but my main concern with Firebase Datastore is the pricing. I think it is all implemented in cloud services, and I am not willing to pay that price, which is at least 10 pounds monthly. For now, I will stick with Supabase, but if that price changes in the future for Firebase, I would investigate it further.
How was the initial setup?
The integration and setup were complex, but the pricing is decent. I am using the Supabase free trial, which allows two databases, but it would be nice to have more than those two. The biggest complexity lies in the knowledge required to get all these pieces together. The app I have implemented uses several technologies including KMP for building Android and iOS apps, Firebase, Supabase, n8n, webhooks, and everything built on GitHub. You have to have decent knowledge of all those technologies and how to handle the Google API console to create the APKs for the embeddings. The knowledge requirement is the most complex part, but apart from that, the pricing is not a significant issue.
What about the implementation team?
I have not seen specific benefits in terms of time saved or improved efficiency yet because, as I said before, it was a proof of concept implemented in a basic app just to test it and be able to launch from the beginning to production. I was able to test it in production, and due to the good results and the positive feedback I got, I'm trying to increase the use of this technology in other apps and other parts of the software I have. I am definitely keen to keep exploring and making some research on how to implement this technology in other parts, and for sure, it was a great technology.
The most valuable part using Supabase Vector is how complex things I was able to build and deploy in a short period of time. Regarding the performance, I do not have enough data because, as I said, the app is still getting bigger and gaining more users. The number of users or the performance is not being a problem, or at least I did not have any issue in that regard. It is a technology I think is good and decent to be put in production. I am constantly looking for new problems or new features that I can implement and use this technology.
What was our ROI?
I have not seen a return on investment yet because I am not investigating those points. However, I can say that building these kinds of applications with so many complex components in less than a couple of months is amazing. The use of these technologies definitely impacts reducing the time and cost of implementation or deployment. It has a really good impact on companies, employees, and finances.
What's my experience with pricing, setup cost, and licensing?
In this basic implementation or proof of concept project, I use the basic Supabase project available in the free trial. I am not sure which one of those options it falls under, but I use the free Supabase options to create two different databases—one for debugging or testing and the second one for release. I tend not to mix both environments. Apart from that, I use it with the full functions I needed using the free tier, which was amazing to be able to create all this technology for free, without the need to pay additional costs to use those technologies, apart from the embeddings ones from Google.
Which other solutions did I evaluate?
It was amazing to be able to create this software using Supabase Vector. I really recommend it and hope to see more improvements of this tool in the future.
What other advice do I have?
My advice for others looking into using Supabase Vector is to take into account how you are going to create the embeddings, as it is not an option implemented straight away in Supabase. You will need to handle the embeddings with an external tool, so make sure to consider how these integrations are going to be made. I would rate this product an 8 out of 10.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Google