Recherche sémantique et recherche hybride
Mettez en œuvre des techniques de recherche avancées combinant la similarité vectorielle et la correspondance de mots-clés pour obtenir de meilleurs résultats.
Recherche sémantique et recherche hybride est une leçon Vector Databases: Pinecone, Weaviate & pgvector gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Vector Databases: Pinecone, Weaviate & pgvector, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Vector Databases: Pinecone, Weaviate & pgvector comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Beyond Basic Searches
Welcome! In this lesson, we'll dive into advanced search techniques in Weaviate. Moving past simple vector searches, we'll explore how to combine different methods for incredibly precise results.
We'll cover:
- Pure semantic search
- Traditional keyword (BM25) search
- The power of hybrid search
Semantic Search: Meaning First
Semantic search finds items based on their meaning, not just exact words. It uses vector embeddings to represent data, measuring "distance" to find similar concepts. Weaviate uses .with_near_text() for this.
Try this example:
import weaviate
import os
# Connect to your Weaviate instance
# Ensure WEAVIATE_URL is set (e.g., "http://localhost:8080")
client = weaviate.Client(
url=os.getenv("WEAVIATE_URL", "http://localhost:8080")
)
# Make sure you have an 'Article' class with 'title' and 'content' properties
# and some data imported for this to work!
query_concept = "latest advancements in technology"
response = client.query.get(
"Article", # Your class name
["title", "content"]
).with_near_text(
{"concepts": [query_concept]}
).with_limit(2).do()
print("Semantic Search Results:")
for item in response["data"]["Get"]["Article"]:
print(f"- {item['title']}")Keyword Search Fundamentals
While semantic search is powerful, sometimes you need to find exact keywords. This is where traditional keyword search comes in. Weaviate supports this using the BM25 algorithm.
BM25 (Best Match 25) is a ranking function used by search engines to estimate the relevance of documents to a given search query. It's great for precision when you know exactly what words you're looking for.
Keyword Search with BM25
You can perform keyword searches in Weaviate by combining a .with_where() filter with a text search, and asking for the _additional {score} to see BM25 relevance.
Here's how to search for articles containing specific keywords:
import weaviate
import os
# Connect to your Weaviate instance
client = weaviate.Client(
url=os.getenv("WEAVIATE_URL", "http://localhost:8080")
)
# Make sure you have an 'Article' class with 'title' and 'content' properties
# and some data imported for this to work!
keyword_query = "AI" # Search for articles containing "AI"
response = client.query.get(
"Article",
["title", "content", "_additional {score}"] # Request BM25 score
).with_where({
"path": ["content"], # Search in the 'content' field
"operator": "Like",
"valueText": f"*{keyword_query}*" # Wildcard search
}).with_limit(2).do()
print("Keyword Search Results:")
for item in response["data"]["Get"]["Article"]:
print(f"- {item['title']} (BM25 Score: {item['_additional']['score']:.2f})")Why Hybrid? Limitations
Both semantic and keyword searches have strengths and weaknesses:
- Semantic: Great for conceptual understanding, but can miss exact terms.
- Keyword: Excellent for exact matches, but struggles with synonyms or nuanced meaning.
Imagine searching for "best car for family trips." Semantic search might show SUVs, while keyword search might only show articles with "family" and "trip." What if you want both?
Introducing Hybrid Search
Hybrid search combines the strengths of semantic (vector) search and keyword (BM25) search. It retrieves results based on both conceptual similarity and exact term matching, then intelligently fuses them.
This leads to more comprehensive and relevant results, especially for complex or ambiguous queries.
Weaviate's `with_hybrid`
Hybrid search combines semantic and keyword strengths. Weaviate's .with_hybrid() operator makes this easy. It takes both a query and an alpha parameter to control the blend:
alpha = 0: Pure keywordalpha = 1: Pure semanticalpha = 0.5: Equal blend (default)
Experiment with this:
import weaviate
import os
# Connect to your Weaviate instance
client = weaviate.Client(
url=os.getenv("WEAVIATE_URL", "http://localhost:8080")
)
# Make sure you have an 'Article' class with 'title' and 'content' properties
# and some data imported for this to work!
query = "AI tools for data analysis" # Hybrid query text
alpha_value = 0.7 # 0.7 for more semantic weighting
response = client.query.get(
"Article",
["title", "content", "_additional {score, id}"] # Request score & ID
).with_hybrid(
query=query,
alpha=alpha_value
).with_limit(3).do()
print(f"Hybrid Search Results (alpha={alpha_value}):")
for item in response["data"]["Get"]["Article"]:
# The 'score' here is the hybrid score
print(f"- {item['title']} (Score: {item['_additional']['score']:.2f})")Understanding Result Fusion (RRF)
When you perform a hybrid search, Weaviate needs a way to combine the rankings from both the semantic and keyword searches into a single, unified list. This is often done using an algorithm like Reciprocal Rank Fusion (RRF).
RRF is a clever method that assigns a score to each document based on its rank in the individual search results. Documents that rank highly in both semantic and keyword searches will get a significantly boosted final score.
Benefits of Hybrid Search
Hybrid search offers several advantages:
- Improved Relevance: Catches both exact matches and conceptually similar items.
- Robustness: Performs well even with short, ambiguous, or rare queries.
- User Satisfaction: Leads to more comprehensive and helpful search results.
It's a crucial technique for building advanced search experiences in AI applications.
Test Your Knowledge
Hybrid search combines semantic and keyword search. Which parameter in Weaviate's .with_hybrid() operator controls the balance between these two search types?
Summary of Advanced Search
Great job! You've mastered advanced search techniques in Weaviate. We explored:
- Semantic Search: Based on meaning and vector similarity.
- Keyword Search: Using BM25 for exact term matching.
- Hybrid Search: Combining both for superior relevance, controlled by the
alphaparameter.
These powerful tools will help you build more intelligent and robust search applications. Keep experimenting with different query types and alpha values!
Questions Fréquemment Posées
La leçon « Recherche sémantique et recherche hybride » est-elle gratuite ?
Oui — le texte complet de « Recherche sémantique et recherche hybride » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Vector Databases: Pinecone, Weaviate & pgvector, passe à CoddyKit PRO. Le cours Vector Databases: Pinecone, Weaviate & pgvector comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Recherche sémantique et recherche hybride » ?
Mettez en œuvre des techniques de recherche avancées combinant la similarité vectorielle et la correspondance de mots-clés pour obtenir de meilleurs résultats. Tu pratiques Vector Databases: Pinecone, Weaviate & pgvector avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Vector Databases: Pinecone, Weaviate & pgvector ?
Aucune expérience préalable n'est requise. Vector Databases: Pinecone, Weaviate & pgvector sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Recherche sémantique et recherche hybride » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Vector Databases: Pinecone, Weaviate & pgvector ?
Oui. Chaque leçon Vector Databases: Pinecone, Weaviate & pgvector inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Recherche sémantique et recherche hybride
- Utiliser les modules Weaviate
- Stratégies de sauvegarde et de restauration
- Multi-location dans Weaviate