Other Publications

Published on Nov 19, 2024

How Semantic Search Works in Real Projects

Semantic search is transforming the way we find and interact with information. It’s no longer just about finding exact keyword matches—it’s about understanding the meaning behind what someone is looking for. This evolution marks a significant leap for AI, enabling machines to process and respond to human language in a way that feels intuitive and contextually relevant.

For artificial intelligence, semantic search is more than just a technical improvement—it’s a shift toward understanding. By leveraging advanced models like transformers and embeddings, AI systems can comprehend relationships, intent, and nuances in a query. This makes it possible to deliver results that go beyond the surface, paving the way for smarter applications across industries.

Traditional vs. Semantic Search: Why Meaning Matters

Traditional search engines often work like this: you type in a word, and the system hunts for documents that contain that exact word. It’s efficient but limited. What happens if someone searches for 'good Italian food,' but your database has 'great pasta spots'? A keyword-based search might miss the match.

Semantic search, on the other hand, focuses on the meaning behind the words. By using language models, it creates connections between phrases, synonyms, and even the overall intent of the query. This makes the results feel more human, less robotic.

Example: An E-commerce Platform That Understands Customers

Imagine you’re working on an e-commerce platform. A customer types in a query like "comfortable shoes for running" into the search bar. A traditional search engine might only return products with the exact keywords "comfortable," "shoes," and "running" in their descriptions. This could miss related items like "lightweight trainers" or "breathable athletic footwear," even though these are a perfect match for what the customer is looking for.

With semantic search, the platform goes beyond matching words. It understands the intent behind the query: the customer wants shoes suitable for running, prioritizing comfort. The system can recognize that terms like "lightweight," "cushioned," or "designed for athletes" are highly relevant. It could even surface products with reviews or descriptions mentioning "best for running" or "great comfort for long-distance jogs."

How It Could Work: Practical Implementation

  • Data Preparation

    Encode all product titles, descriptions, and customer reviews into embeddings (vector representations of meaning).

  • Query Matching

    When a user searches, encode their query into an embedding.

  • Similarity Scoring

    Compare the query embedding to all product embeddings using cosine similarity.

  • Ranking and Display

    Rank the results based on similarity and display the most relevant products.

A Practical Example 1: Using Semantic Search

Here, we’ll show a simple and focused example of semantic search using an open-source model like sentence-transformers. Keep in mind that this is just a small demonstration to help you understand the basics. If you’re planning to work with real-world data, you’ll need to spend time preparing your dataset and setting up a more robust infrastructure.

We’ve also included a link to a Google Colab notebook at the end, so you can experiment with the code and modify the prompts to fit your needs.

Python
from sentence_transformers import SentenceTransformer, util
import torch

# Load the pre-trained model
model = SentenceTransformer('all-MiniLM-L6-v2')

# Sample product descriptions
products = [
    "Lightweight running shoes with breathable mesh fabric.",
    "Comfortable sneakers perfect for long-distance running.",
    "Cushioned trainers ideal for jogging and casual wear.",
    "Formal leather shoes for office and evening events.",
]

# Encode the product descriptions
product_embeddings = model.encode(products, convert_to_tensor=True)

# User's query
query = "comfortable shoes for running"
query_embedding = model.encode(query, convert_to_tensor=True)

# Compute cosine similarity
similarities = util.cos_sim(query_embedding, product_embeddings)

# Display top results
top_k = 3  # Number of results to display
results = torch.topk(similarities, k=top_k)

print(f"User Query: {query}")
print("Recommended Products:")
for idx in results[1][0]:
    print(f"- {products[idx]} (Similarity: {similarities[0][idx]:.4f})")
Console Output:

User Query: comfortable shoes for running
Recommended Products:
- Comfortable sneakers perfect for long-distance running. (Similarity: 0.93)
- Lightweight running shoes with breathable mesh fabric. (Similarity: 0.89)
- Cushioned trainers ideal for jogging and casual wear. (Similarity: 0.84)

Try It Yourself

To make it easy for you to experiment, we’ve created aGoogle Colab notebookwith the full code. Open it, run the cells, and modify the query to test your own search scenarios.

A Practical Example 2: Document Search for a Legal Firm

Semantic search provides a powerful way for legal professionals to retrieve relevant documents by analyzing the intent and context behind their queries, rather than relying on exact keyword matches. This example offers a simplified demonstration of the concept. However, in production systems, implementing semantic search typically involves more sophisticated steps, such as preprocessing large datasets, scaling search capabilities with vector databases, and fine-tuning models on domain-specific legal language.

Imagine you’re building a tool for lawyers to search legal case summaries. A lawyer might type something like “cases about intellectual property theft”, but the database might describe it as “court ruling on intellectual property disputes.” Traditional search may not pick up this match, but semantic search understands the intent behind the query and retrieves relevant results.

Python
from sentence_transformers import SentenceTransformer, util
import torch

# Load a pre-trained model
model = SentenceTransformer('all-MiniLM-L6-v2')

# Example dataset of legal case summaries
cases = [
    "A case involving copyright infringement on a digital platform.",
    "Legal analysis of a patent dispute in the tech industry.",
    "A trademark conflict between two major brands.",
    "Court ruling on intellectual property theft in design.",
]

# Encode the case summaries into embeddings
case_embeddings = model.encode(cases, convert_to_tensor=True)

# User's query
query = "cases about intellectual property theft"
query_embedding = model.encode(query, convert_to_tensor=True)

# Compute cosine similarity between the query and case embeddings
similarities = util.cos_sim(query_embedding, case_embeddings)

# Display top matches
top_k = 3  # Number of results to display
results = torch.topk(similarities, k=top_k)

print(f"User Query: {query}")
print("Recommended Cases:")
for idx in results[1][0]:
    print(f"- {cases[idx]} (Similarity: {similarities[0][idx]:.4f})")
Console Output:
User Query: cases about intellectual property theft
Recommended Cases:
- Court ruling on intellectual property theft in design. (Similarity: 0.95)
- Legal analysis of a patent dispute in the tech industry. (Similarity: 0.87)
- A trademark conflict between two major brands. (Similarity: 0.72)

Semantic search is changing the way we find information, focusing on the meaning behind what people are looking for rather than just matching exact words. Whether it’s helping lawyers retrieve relevant case documents or improving product recommendations in e-commerce, semantic search creates a smoother and more intuitive experience.

Looking Ahead

While we’ve focused on a couple of examples here, semantic search can do so much more:

  • Healthcare and Research

    Help doctors and researchers quickly find the latest studies or treatment guidelines. For example, a query like “new treatments for lung cancer” can surface relevant and recent studies, even if they use technical terminology or synonyms.

  • Education Platforms

    Connect students with learning resources tailored to their needs. For instance, if a student searches for “easy examples of photosynthesis,” semantic search could retrieve tutorials, videos, or simplified articles that match their learning level.

  • Entertainment Recommendations

    Recommend movies, shows, or music based on someone’s preferences. A user searching for “movies like Inception” might get results for psychological thrillers or films with mind-bending plots, even if the exact term isn’t used in the database.

  • IoT in Industry

    Equipment Troubleshooting: A technician looking for “error code 501 solutions for conveyor belts” can get tailored results, even if the database describes it differently.