Pular para o conteúdo principal

Qdrant

1. Visão Geral

O componente Qdrant (qdrant) conecta o fluxo a um banco de dados vetorial Qdrant, usado para armazenar e buscar embeddings (vetores numéricos gerados a partir de texto, imagens, etc.). É a peça que guarda e consulta os vetores gerados, por exemplo, pelo componente Embedding.

Use quando o fluxo precisa gravar vetores para busca semântica (RAG, recomendação, similaridade) ou consultar vetores já armazenados. Só funciona como ação de saída.

2. Pré-requisitos

  • Um servidor Qdrant acessível (host e porta gRPC).
  • Uma coleção já criada (ou o próprio fluxo pode criá-la com a operação CREATE_COLLECTION).

3. Autenticação e Conexão

CampoObrigatórioTipoDescriçãoExemplo
hostSimTextoEndereço do servidor Qdrant."qdrant.exemplo.com"
portSimNúmeroPorta gRPC do servidor Qdrant.6334
apiKeyNãoTextoChave de API do Qdrant, se exigida pelo servidor.Uma chave de API
useTlsNãoTexto ("true"/"false")Habilita conexão criptografada. Valor padrão: "false"."true"

4. Configuração / Operações Suportadas

CampoObrigatórioTipoDescriçãoExemplo
operationSimTextoUma das operações: CREATE_COLLECTION, DELETE_COLLECTION, LIST_COLLECTIONS, GET_COLLECTION, UPSERT, UPDATE_PAYLOAD, DELETE_POINTS, SEARCH, SCROLL, QUERY, GET_POINT."UPSERT"
collectionNameSim, exceto em LIST_COLLECTIONSTextoNome da coleção no Qdrant."documentos"

CREATE_COLLECTION

CampoObrigatórioTipoDescrição
vectorSizeSim, se vectorsConfig não for usadoNúmeroDimensão dos vetores armazenados na coleção.
distanceNãoTextoMétrica de distância. Valor padrão: "Cosine".
vectorsConfigNãoTexto (JSON)Configuração avançada para múltiplos vetores nomeados na mesma coleção.

UPSERT — gravar/atualizar um ponto (vetor + dados)

CampoObrigatórioTipoDescrição
pointIdSimTexto (UUID)Identificador único do ponto.
denseVectorUm dos trêsTexto (JSON, lista de números)O vetor numérico do ponto.
sparseVectorUm dos trêsTexto (JSON)Vetor esparso (índices + valores).
namedVectorsUm dos trêsTexto (JSON)Mapa de múltiplos vetores nomeados.
payloadNãoTexto (JSON)Dados adicionais associados ao ponto (ex.: o texto original, metadados).

SEARCH — buscar pontos semelhantes a um vetor

CampoObrigatórioTipoDescrição
vectorSim, se searchRequest não for usadoTexto (JSON, lista de números)Vetor de referência para a busca.
limitNãoNúmeroQuantidade máxima de resultados. Valor padrão: 10.
filterNãoTexto (JSON)Filtro adicional sobre os metadados dos pontos.

Demais operações

  • DELETE_COLLECTION, GET_COLLECTION: apenas collectionName.
  • UPDATE_PAYLOAD: pointId (obrigatório), payload (obrigatório).
  • DELETE_POINTS, GET_POINT: pointId (obrigatório).
  • SCROLL: limit (opcional), filter (opcional), offset (opcional).
  • QUERY: queryRequest (obrigatório, JSON com regras avançadas de consulta).

5. Exemplos Práticos

Exemplo simples: gravar o embedding de um documento na coleção, junto com o texto original.

Entrada (embedding gerado por um passo anterior, com o componente Embedding):

{
"documentoId": "doc-123",
"embedding": [0.012, -0.045, 0.078],
"textoOriginal": "Manual de instalação do produto X"
}

Configuração do componente:

{
"componentName": "qdrant",
"configurations": {
"host": "qdrant.exemplo.com",
"port": "6334",
"apiKey": "{$.secrets.qdrantApiKey}",
"operation": "UPSERT",
"collectionName": "documentos",
"pointId": "{$.body.documentoId}",
"denseVector": "{$.body.embedding}",
"payload": "{\"texto\": \"{$.body.textoOriginal}\"}"
}
}

Resposta:

{
"status": "completed",
"pointId": "doc-123"
}

Exemplo avançado: buscar os 5 documentos mais parecidos com um vetor de consulta.

Configuração do componente:

{
"componentName": "qdrant",
"configurations": {
"host": "qdrant.exemplo.com",
"port": "6334",
"apiKey": "{$.secrets.qdrantApiKey}",
"operation": "SEARCH",
"collectionName": "documentos",
"vector": "{$.body.embeddingConsulta}",
"limit": "5"
}
}

Resposta:

{
"results": [
{ "id": "doc-123", "score": 0.94, "payload": { "texto": "Manual de instalação do produto X" } },
{ "id": "doc-456", "score": 0.87, "payload": { "texto": "Guia rápido do produto X" } }
],
"count": 2
}

6. Erros Comuns e Troubleshooting

Erro / SintomaCausa provávelComo resolver
"host is required" / "port is required" / "operation is required"Campos básicos de conexão ou operação não preenchidos.Preencher host, port e operation.
"collectionName is required for [operação]"O campo collectionName não foi preenchido para uma operação que exige.Preencher collectionName com o nome da coleção.
"vectorSize or vectorsConfig is required for CREATE_COLLECTION"Nenhum dos dois campos de configuração de vetor foi informado ao criar a coleção.Informar vectorSize (uso simples) ou vectorsConfig (múltiplos vetores).
"At least one vector is required: 'denseVector', 'sparseVector', or 'namedVectors'"A operação UPSERT foi usada sem nenhum vetor.Preencher pelo menos um dos três campos de vetor.
"vector or searchRequest is required for SEARCH"A operação SEARCH foi usada sem vetor de referência.Preencher vector (uso simples) ou searchRequest (busca avançada).
"Point not found: [id]"O ponto consultado não existe na coleção.Confirmar se o pointId está correto e se o ponto já foi gravado.
"Failed to parse ... JSON: ..."Algum campo JSON (vetor, filtro, payload) está malformado.Revisar a sintaxe JSON do campo indicado no erro.