OstimGPT
A locally hosted Retrieval-Augmented Generation chatbot answering questions from university sources.
A personal AI project exploring retrieval quality for product recommendation: SQLite as the primary data source, Qdrant for vector storage, hybrid dense and sparse retrieval with BGE-M3 embeddings, reranking, product filtering, multilingual query support and evaluation datasets.
SmartShop is a personal project about a narrow question: what actually improves retrieval quality when the corpus is a product catalogue rather than prose?
Product queries break naive semantic search. They mix exact tokens that must match — a model number, a size — with fuzzy intent that only embeddings capture. The system combines both retrieval styles, reranks the result, and measures the outcome against evaluation datasets rather than against impressions.
Recommendation systems are usually judged by anecdote: a few queries are tried, the results look reasonable, and the system is declared to work.
This project takes the opposite approach — build the evaluation datasets alongside the retrieval, so a change can be shown to help rather than assumed to.
Dense retrieval alone misses exact matches; sparse retrieval alone misses intent. Neither is sufficient for product search, and choosing between them is the wrong question.
My Role
This is my own project. I built the retrieval pipeline: SQLite as the primary data source, Qdrant for vector storage, hybrid dense and sparse retrieval using BGE-M3 embeddings, a reranking stage, product filtering, multilingual query support, and the evaluation datasets used to assess retrieval changes.
Keep the catalogue in a relational store as the source of truth, index it for vector search, retrieve with both strategies at once, then spend the remaining effort on reranking and measurement.
The product catalogue is held in SQLite and embedded with BGE-M3 into Qdrant. A query runs dense and sparse retrieval in parallel; the combined candidates are reranked, then constrained by product filters over structured attributes. Evaluation datasets measure the effect of changes to any stage.
Dense and sparse strategies together, so exact tokens and intent both work.
Multilingual embeddings backing the dense side of retrieval.
A second stage that recovers precision after a recall-oriented first pass.
Structured attributes constrain results rather than merely influencing them.
Retrieval changes are measured rather than assumed to help.
Semantic search returns plausible-looking products that are the wrong model or the wrong size, because embeddings blur exactly the tokens that matter most.
Pairing sparse retrieval with dense retrieval keeps exact tokens addressable while intent-style queries still work.
Retrieval changes are easy to convince yourself about by trying a few queries.
Building evaluation datasets alongside the pipeline made the effect of a change something to measure instead of something to argue about.
| Decision | Alternative considered | Why |
|---|---|---|
| Keep SQLite as the primary data source with Qdrant as the vector index. | Treating the vector store as the system of record. | A relational store keeps structured attributes queryable and authoritative; the vector index stays a derived artefact that can be rebuilt. The cost is keeping the two in step. |
| Add a reranking stage. | Returning first-stage retrieval results directly. | Reranking costs latency on every query, but first-stage retrieval is tuned for recall — without a second stage, precision stays capped. |
A working prototype that retrieves products using hybrid dense and sparse strategies with reranking, constrained by structured product filters and evaluated against purpose-built datasets. It is an experimental personal project, not a deployed product.

The entry point: suggested analyses stand in for the empty state, and any of them can be typed as a free-form question instead.

An exported answer. The filters the query resolved to are shown alongside the results, and every recommendation cites the product record it came from.
Have a software, AI, RAG, or web application project in mind? Let’s discuss what you need and determine the right technical approach.