Modern search has evolved far beyond simple keyword matching. Today's users expect to express complex, nuanced preferences in natural language and receive precisely tailored results. A new collaboration between Superlinked and Qdrant demonstrates just how powerful this approach can be.
Deep dive: The full technical breakdown, including code examples and deployment instructions, is available in the complete article: Superlinked Multimodal Search
Consider this hotel search query: "Affordable luxury hotels near Eiffel Tower with lots of good reviews and free parking." This isn't just a search—it's a complex web of preferences spanning multiple data types: location (text), price (numerical), ratings (numerical), review count (numerical), and amenities (categorical).
Traditional search systems struggle with these multi-dimensional queries because they either:
Superlinked's breakthrough approach creates specialized "spaces" for different data types:
# Text data uses semantic language models description_space = sl.TextSimilaritySpace( text=hotel_schema.description, model="all-mpnet-base-v2" ) # Numerical data with appropriate scaling rating_space = sl.NumberSpace( hotel_schema.rating, min_value=0, max_value=10, mode=sl.Mode.MAXIMUM # Linear scale for ratings ) price_space = sl.NumberSpace( hotel_schema.price, min_value=0, max_value=1000, scale=sl.LogarithmicScale() # Log scale for wide price ranges )
These spaces combine into a unified search index:
# Create unified multimodal index index = sl.Index( spaces=[description_space, price_space, rating_space], fields=[hotel_schema.city, hotel_schema.amenities] # For filtering )
The magic happens in query processing, where natural language transforms into weighted vector operations:
query = ( sl.Query(index, weights={ price_space: sl.Param("price_weight"), rating_space: sl.Param("rating_weight"), }) .find(hotel_schema) .similar(description_space.text, sl.Param("description")) .filter(hotel_schema.city.in_(sl.Param("city"))) .with_natural_query(natural_query=sl.Param("natural_query")) )
This approach ensures that:
The hotel search demo showcases queries that feel intuitive and "just work":
Users can watch their natural language transform into precise search parameters in real-time, with dynamic weight adjustments that reflect the complexity of their actual preferences.
Built on Qdrant's vector database and Superlinked's embedding framework, this approach represents a new category of hybrid search that spans entire data domains rather than just retrieval methods. It solves fundamental limitations of current search architectures while maintaining the simplicity users expect.
Getting started is straightforward. Clone the demo and set up your environment:
git clone https://github.com/superlinked/hotel-search-recipe-qdrant.git # Backend setup python3.11 -m venv .venv . .venv/bin/activate pip install -r requirements.txt APP_MODULE_PATH=superlinked_app python -m superlinked.server # Ingest sample data curl -X 'POST' \ 'http://localhost:8080/data-loader/hotel/run' \ -H 'accept: application/json' \ -d ''
The complete implementation is available as an open-source demo, showing how modern vector databases and intelligent embedding frameworks can create search experiences that understand not just the words we use, but the complex, nuanced preferences they represent.
Stay updated with VectorHub
Continue Reading