Todos os produtos
Search
Central de documentação

Tair (Redis® OSS-Compatible):Implemente a busca híbrida usando o TairVector

Última atualização: Sep 24, 2026

Nenhum método de busca isolado atende a todos os cenários. O TairVector permite combinar filtragem condicional, busca de texto completo e busca vetorial em uma única consulta e, em seguida, ponderar os resultados com um único parâmetro. Este guia apresenta um exemplo prático com um conjunto de dados de imagens de product para mostrar o comportamento de cada combinação e como ajustar o parâmetro hybrid_ratio.

Por que combinar métodos de busca

Os modelos de linguagem de grande porte (LLMs) codificam dados não estruturados — texto, imagens, áudio e vídeo — como vetores, o que possibilita a busca por similaridade semântica. Cada método de busca possui pontos fortes e limitações específicas:

Método

Ponto forte

Limitação

Busca vetorial

Processa vários tipos de dados e encontra resultados semanticamente similares

Depende muito da qualidade do LLM e pode não encontrar correspondências exatas para termos específicos do domínio

Busca de texto completo

Encontra palavras-chave e frases exatas

Não captura sinônimos, paráfrases e termos semanticamente relacionados, além de ser sensível a erros de digitação

Filtragem condicional

Aplica restrições booleanas rigorosas em campos estruturados

Limita-se a dados estruturados e não classifica por relevância

O TairVector combina esses três métodos em uma única instrução. Os resultados de cada método recebem uma pontuação, são ponderados e mesclados em um conjunto final de candidatos. Use o parâmetro hybrid_ratio para controlar o peso de cada método.

Como o hybrid_ratio funciona

O hybrid_ratio define o peso da busca vetorial. O peso da busca de texto completo é 1 - hybrid_ratio.

**Valor do hybrid_ratio**

Efeito

0.9999

Busca vetorial quase pura

0.5

Peso igual entre busca vetorial e de texto completo

0.0001

Busca de texto completo quase pura

Quando a busca vetorial e a busca de texto completo recuperam o mesmo item, esse item recebe uma classificação mais alta nos resultados mesclados.

Conjunto de dados de exemplo

Os exemplos deste guia usam o conjunto de dados de open source fashion-product-images-small, que contém 44.000 registros de product.

Ao usar conjuntos de dados de open source, cumpra as licenças associadas e as leis aplicáveis.

Esquema de dados

Campo

Tipo

id

int64

gender

string

masterCategory

string

subCategory

string

articleType

string

baseColour

string

season

string

year

float64

usage

string

productDisplayName

string

image

dict

Mapeie os campos do conjunto de dados para o TairVector

O TairVector usa uma estrutura de armazenamento Tair vector index Key-Key-(Key-Value). Antes de importar os dados, crie um índice vetorial (por exemplo, hybrid_index) e mapeie cada campo do conjunto de dados para a função apropriada do TairVector:

Campo do conjunto de dados

Função no TairVector

Finalidade

id

Chave primária

Consultas por ponto e varredura de uma pequena quantidade de dados

image

Vetor

Embeddings de imagens codificados por LLM para busca vetorial

productDisplayName

Descrição de texto completo

Texto usado para busca de texto completo

Todos os outros campos

Pares chave-valor

Atributos para filtragem condicional (sem limite de quantidade)

A figura a seguir mostra a estrutura de dados resultante no TairVector.

1.jpg

Pré-requisitos

Antes de começar, gerencie sua instância do Tair e verifique se você:

  • Carregou o conjunto de dados fashion-product-images-small

  • Configurou uma instância do Tair

  • Importou o conjunto de dados para o Tair usando o mapeamento de campos acima

Para obter o código completo de configuração e importação, baixe o arquivo hybrid_search_demo.ipynb. Para preparar o ambiente, instale as dependências necessárias executando pip install jupyter antes de abrir o arquivo.

Execute consultas de busca híbrida

Todos os exemplos usam o tvs_knnsearch para consultar o hybrid_index com topk=20. O texto da consulta é "Green Kidswear". O valor do hybrid_ratio é a única variável entre os cenários. Para testar, execute os códigos abaixo.

Busca vetorial

Para usar a busca vetorial quase pura, defina o hybrid_ratio como 0.9999.

topk = 20
text = "Green Kidswear"
vector = model.encode([text])[0]
filter_str = None
kwargs = {"TEXT": text, "hybrid_ratio": 0.9999}
result = client.tvs_knnsearch(index_name, topk, vector, False, filter_str, **kwargs)
top_img = [images[id_pos[int(item[0])]] for item in result]
display_result(top_img)

Resultado:

image.png

Busca de texto completo

Para usar a busca de texto completo quase pura, defina o hybrid_ratio como 0.0001.

topk = 20
text = "Green Kidswear"
vector = model.encode([text])[0]
filter_str = None
kwargs = {"TEXT": text, "hybrid_ratio": 0.0001}
result = client.tvs_knnsearch(index_name, topk, vector, False, filter_str, **kwargs)
top_img = [images[id_pos[int(item[0])]] for item in result]
display_result(top_img)

Resultado:

image.png

Busca híbrida (vetorial + texto completo)

Para equilibrar igualmente a busca vetorial e a de texto completo, defina o hybrid_ratio como 0.5.

topk = 20
text = "Green Kidswear"
vector = model.encode([text])[0]
filter_str = None
kwargs = {"TEXT": text, "hybrid_ratio": 0.5}
result = client.tvs_knnsearch(index_name, topk, vector, False, filter_str, **kwargs)
top_img = [images[id_pos[int(item[0])]] for item in result]
display_result(top_img)

Resultado:

image.png

Busca híbrida com filtragem condicional

Adicione um filter_str para restringir os resultados a um atributo específico. Este exemplo filtra por subCategory == "Topwear" e mantém o hybrid_ratio em 0.5.

topk = 20
text = "Green Kidswear"
vector = model.encode([text])[0]
filter_str = "subCategory == \"Topwear\""
kwargs = {"TEXT": text, "hybrid_ratio": 0.5}
result = client.tvs_knnsearch(index_name, topk, vector, False, filter_str, **kwargs)
print(result)
top_img = [images[id_pos[int(item[0])]] for item in result]
display_result(top_img)

Resultado:

image.png

Escolha uma estratégia de busca

Use a tabela a seguir para escolher a combinação ideal para o seu cenário.

Estratégia

**hybrid_ratio**

Ideal para

Busca vetorial

~1 (ex.: 0.9999)

Similaridade semântica e consultas multimodais (imagem, áudio, vídeo)

Busca de texto completo

~0 (ex.: 0.0001)

Correspondências exatas de palavras-chave e terminologia específica do domínio

Híbrida (vetorial + texto completo)

0.5 (peso igual)

Busca de uso geral e equilíbrio entre recall e precisão

Híbrida + filtro condicional

Qualquer valor, com filter_str

Busca delimitada por um atributo específico (categoria, cor, estação)

Principais observações sobre os resultados do exemplo:

  • Tanto a busca vetorial quanto a de texto completo retornam resultados relevantes para "Green Kidswear". A busca de texto completo apresenta uma precisão ligeiramente maior no conjunto de candidatos mais bem classificados.

  • No modo híbrido, os itens recuperados por ambos os métodos recebem uma classificação mais alta do que os itens recuperados por apenas um. Esse efeito de reclassificação melhora a qualidade dos resultados sem a necessidade de ajuste manual de pontuação.

  • A filtragem condicional reduz o conjunto de candidatos para melhorar a taxa de acerto da busca vetorial quando o atributo alvo é conhecido.

Próximos passos

  • Para obter a referência completa da API tvs_knnsearch e os parâmetros suportados, consulte TairVector.