Vector Databases: Pinecone, Weaviate & pgvector · Aula

Busca Semântica e Busca Híbrida

Implemente técnicas avançadas de busca que combinem similaridade vetorial e correspondência de palavras-chave para obter resultados superiores.

Aula 1 de 411 etapas

Busca Semântica e Busca Híbrida é uma aula grátis de Vector Databases: Pinecone, Weaviate & pgvector no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Vector Databases: Pinecone, Weaviate & pgvector, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Vector Databases: Pinecone, Weaviate & pgvector inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

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 keyword
  • alpha = 1: Pure semantic
  • alpha = 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 alpha parameter.

These powerful tools will help you build more intelligent and robust search applications. Keep experimenting with different query types and alpha values!

Grátis para começar

Aprenda Vector Databases: Pinecone, Weaviate & pgvector com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
12
Aulas
48

Perguntas Frequentes

A aula “Busca Semântica e Busca Híbrida” é grátis?

Sim — o texto completo de “Busca Semântica e Busca Híbrida” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Vector Databases: Pinecone, Weaviate & pgvector, atualize para CoddyKit PRO. O curso de Vector Databases: Pinecone, Weaviate & pgvector inclui 4 aulas no total.

O que vou aprender em “Busca Semântica e Busca Híbrida”?

Implemente técnicas avançadas de busca que combinem similaridade vetorial e correspondência de palavras-chave para obter resultados superiores. Você pratica Vector Databases: Pinecone, Weaviate & pgvector com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Vector Databases: Pinecone, Weaviate & pgvector?

Nenhuma experiência prévia é necessária. Vector Databases: Pinecone, Weaviate & pgvector no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Busca Semântica e Busca Híbrida”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Vector Databases: Pinecone, Weaviate & pgvector?

Sim. Cada aula de Vector Databases: Pinecone, Weaviate & pgvector inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Busca Semântica e Busca Híbrida
  2. Usando Módulos do Weaviate
  3. Estratégias de Backup e Restauração
  4. Multilocação no Weaviate
← Voltar para Vector Databases: Pinecone, Weaviate & pgvector