Show HN: I built an AI-powered search engine for a fashion and homeware store (meepo.shop)

5 points by wasimlorgat ↗ HN
I built Meepo – a smarter search engine for a local (South African) fashion and homeware store.

I have no affiliation with said store. I built this for myself, because I was frustrated at how difficult it was to find what I wanted with the existing search engine + I was curious how well CLIP (a relatively new AI technique with open source code and models) would work here.

I think it works quite well! It's much more forgiving than the original search engine. I don't have to guess what exactly they decided to label a particular item. But what I like even more is that it works quite well for abstract things like "colourful shoes".

Here's the full stack:

- Hardware: Deployed on a 2CPU 4GB RAM VPS w/ docker

- Storage: SQLite + object storage (for images)

- Search: CLIP text/image neural networks + faiss similarity search index

- Pipeline: Python scripts + cron

- Web: Django serving HTML/Tailwind/daisyUI

- IDE: Developed in notebooks w/ nbdev (I'm trying to develop all of my software in Jupyter notebooks - a separate discussion)

I tried to keep the implementation as simple as possible and I'm happy with the result! It took ~2 weeks to build and has been running seamlessly without my input for a few weeks now. I'm more familiar with ML than web so very happy with that timeline.

6 comments

[ 0.26 ms ] story [ 666 ms ] thread
Great work! Instead of faiss, you could use a standalone vector search engine like Qdrant https://github.com/qdrant/qdrant It would bring some advantages like, for example, filtering support.
Qdrant looks great, thanks for sharing! I'll definitely play around with it and do some benchmarks :) Have you used it / compared it with faiss yourself?
Hey, I wrote an article describing the difference between FAISS, which is a library, and Qdrant - a proper database: https://lukawskikacper.medium.com/i-used-faiss-so-you-dont-h...

TLDR: using a vector database for production systems really pays off, as library is hard to maintain in a long run

Thanks for sharing! Hmm, it isn’t clear to me from your post why a library would be harder to maintain. Could you share more? The database seems to add quite a bit of complexity at a system-level and I’m still not sure the benefit.
Sure thing! If you decide to use a library that other processes or machines will communicate with, you need to build a whole service around it. The library also doesn't scale well if you need to go beyond a single-machine setup. With a proper database, the distributed deployment is already built-in, so you can scale it up on demand.