A busca semântica com reconhecimento de palavras-chave combina correspondência de termos e compreensão semântica em uma única consulta do DashVector. Ao armazenar vetores esparsos (para frequência de termos) e vetores densos (para significado semântico) na mesma coleção, você obtém um recall mais robusto sem precisar executar dois sistemas de busca separados.
Conceitos principais
Vetores esparsos representam palavras-chave e a frequência dos termos. Eles contêm majoritariamente valores zero e alguns valores não nulos, um para cada palavra-chave presente no documento. No DashVector, o vetor esparso {1:0.4, 10000:0.6, 222222:0.8} possui três palavras-chave (elementos 1, 10000 e 222222), cujos valores indicam seus respectivos pesos.
Vetores densos capturam o significado semântico do conteúdo. Um modelo de embedding converte o texto em um array de comprimento fixo composto por números de ponto flutuante, identificando relações conceituais que a simples correspondência de palavras-chave não detecta.
|
Vetores esparsos |
Vetores densos |
|
|
Representação |
Palavras-chave e frequência de termos |
Significado semântico |
|
Estrutura |
Predominância de zeros, poucos valores não nulos |
Maioria de valores não nulos |
|
Tecnologia base |
Índices invertidos, TF-IDF, BM25 |
Modelos de embedding |
|
Ponto forte |
Correspondência exata de termos |
Similaridade conceitual |
|
Limitação típica |
Não associa "chuva forte" a "chovendo canivetes" |
Pode falhar ao relacionar "irrigação de arroz" com "arroz irrigado" se não treinado adequadamente |
A busca semântica com reconhecimento de palavras-chave supera ambas as limitações simultaneamente. A pontuação final de cada resultado corresponde ao produto escalar entre os vetores da consulta e os vetores do documento — as pontuações densas e esparsas são somadas.
Quando utilizar a busca semântica com reconhecimento de palavras-chave
Utilize este recurso nas seguintes situações:
As consultas misturam linguagem natural com termos específicos, como nomes de produtos, códigos de erro ou IDs
Os usuários pesquisam expressões idiomáticas, sinônimos ou conceitos parafraseados
Seu corpus exige tanto precisão no recall de palavras-chave quanto compreensão contextual
Pré-requisitos
Antes de começar, verifique se você possui:
Um cluster do DashVector (Crie um cluster)
Uma chave de API (Gerencie chaves de API)
A versão mais recente do SDK do DashVector instalada (Instale o SDK do DashVector)
Execute a busca semântica com reconhecimento de palavras-chave
Os passos a seguir criam uma coleção, inserem um documento com ambos os tipos de vetor e executam uma consulta híbrida.
Somente coleções configuradas com metric='dotproduct' oferecem suporte a vetores esparsos.
Passo 1: Crie uma coleção
import dashvector
# Replace YOUR_API_KEY with your API key (see Manage API keys).
# Replace YOUR_CLUSTER_ENDPOINT with your cluster endpoint (see the cluster details page).
client = dashvector.Client(
api_key='YOUR_API_KEY',
endpoint='YOUR_CLUSTER_ENDPOINT'
)
# dimension=4 is used here for simplicity.
# Set this to match your actual embedding model's output dimension.
ret = client.create('hybrid_collection', dimension=4, metric='dotproduct')
collection = client.get('hybrid_collection')
assert collection
Passo 2: Insira um documento com vetor esparso
from dashvector import Doc
collection.insert(Doc(
id='A',
vector=[0.1, 0.2, 0.3, 0.4],
sparse_vector={1: 0.3, 10: 0.4, 100: 0.3}
))
O campo sparse_vector mapeia os IDs das palavras-chave aos seus respectivos pesos. Utilize um codificador esparso como o DashText para gerá-los a partir do texto bruto — consulte Codificador de vetores esparsos.
Passo 3: Consulte com ambos os tipos de vetor
Forneça tanto um vector quanto um sparse_vector na mesma consulta. O DashVector calcula a pontuação de cada resultado somando os produtos escalares de ambos os tipos de vetor.
docs = collection.query(
vector=[0.1, 0.1, 0.1, 0.1],
sparse_vector={1: 0.3, 20: 0.7}
)
Os resultados são classificados pela pontuação combinada do produto escalar — valores mais altos indicam maior relevância.
Codificador de vetores esparsos
O DashText é o codificador de vetores esparsos recomendado para o DashVector. Ele converte texto bruto no formato sparse_vector demonstrado acima. Consulte o Guia de início rápido do DashText para obter instruções de configuração.
Próximos passos
Guia de início rápido do DashText — gere vetores esparsos a partir de texto
Crie um cluster — configure seu cluster do DashVector
Gerencie chaves de API — administre a autenticação