Saltar al contenido principal

Qdrant

1. Visión General​

El componente Qdrant (qdrant) conecta el flujo a una base de datos vectorial Qdrant, usada para almacenar y buscar embeddings (vectores numéricos generados a partir de texto, imágenes, etc.). Es la pieza que guarda y consulta los vectores generados, por ejemplo, por el componente Embedding.

Úsalo cuando el flujo necesita grabar vectores para búsqueda semántica (RAG, recomendación, similitud) o consultar vectores ya almacenados. Solo funciona como acción de salida.

2. Prerrequisitos​

  • Un servidor Qdrant accesible (host y puerto gRPC).
  • Una colección ya creada (o el propio flujo puede crearla con la operación CREATE_COLLECTION).

3. Autenticación y Conexión​

CampoObligatorioTipoDescripciónEjemplo
hostSíTextoDirección del servidor Qdrant."qdrant.ejemplo.com"
portSíNúmeroPuerto gRPC del servidor Qdrant.6334
apiKeyNoTextoClave de API de Qdrant, si el servidor la exige.Una clave de API
useTlsNoTexto ("true"/"false")Habilita la conexión cifrada. Valor por defecto: "false"."true"

4. Configuración / Operaciones Soportadas​

CampoObligatorioTipoDescripciónEjemplo
operationSíTextoUna de las operaciones: CREATE_COLLECTION, DELETE_COLLECTION, LIST_COLLECTIONS, GET_COLLECTION, UPSERT, UPDATE_PAYLOAD, DELETE_POINTS, SEARCH, SCROLL, QUERY, GET_POINT."UPSERT"
collectionNameSí, excepto en LIST_COLLECTIONSTextoNombre de la colección en Qdrant."documentos"

CREATE_COLLECTION​

CampoObligatorioTipoDescripción
vectorSizeSí, si no se usa vectorsConfigNúmeroDimensión de los vectores almacenados en la colección.
distanceNoTextoMétrica de distancia. Valor por defecto: "Cosine".
vectorsConfigNoTexto (JSON)Configuración avanzada para múltiples vectores con nombre en la misma colección.

UPSERT — grabar/actualizar un punto (vector + datos)​

CampoObligatorioTipoDescripción
pointIdSíTexto (UUID)Identificador único del punto.
denseVectorUno de los tresTexto (JSON, lista de números)El vector numérico del punto.
sparseVectorUno de los tresTexto (JSON)Vector disperso (índices + valores).
namedVectorsUno de los tresTexto (JSON)Mapa de múltiples vectores con nombre.
payloadNoTexto (JSON)Datos adicionales asociados al punto (ej.: el texto original, metadatos).

SEARCH — buscar puntos similares a un vector​

CampoObligatorioTipoDescripción
vectorSí, si no se usa searchRequestTexto (JSON, lista de números)Vector de referencia para la búsqueda.
limitNoNúmeroCantidad máxima de resultados. Valor por defecto: 10.
filterNoTexto (JSON)Filtro adicional sobre los metadatos de los puntos.

Demás operaciones​

  • DELETE_COLLECTION, GET_COLLECTION: solo collectionName.
  • UPDATE_PAYLOAD: pointId (obligatorio), payload (obligatorio).
  • DELETE_POINTS, GET_POINT: pointId (obligatorio).
  • SCROLL: limit (opcional), filter (opcional), offset (opcional).
  • QUERY: queryRequest (obligatorio, JSON con reglas avanzadas de consulta).

5. Ejemplos Prácticos​

Ejemplo simple: grabar el embedding de un documento en la colección, junto con el texto original.

Entrada (embedding generado por un paso anterior, con el componente Embedding):

{
"documentoId": "doc-123",
"embedding": [0.012, -0.045, 0.078],
"textoOriginal": "Manual de instalación del producto X"
}

Configuración del componente:

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

Respuesta:

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

Ejemplo avanzado: buscar los 5 documentos más parecidos a un vector de consulta.

Configuración del componente:

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

Respuesta:

{
"results": [
{ "id": "doc-123", "score": 0.94, "payload": { "texto": "Manual de instalación del producto X" } },
{ "id": "doc-456", "score": 0.87, "payload": { "texto": "Guía rápida del producto X" } }
],
"count": 2
}

6. Errores Comunes y Troubleshooting​

Error / SíntomaCausa probableCómo resolverlo
"host is required" / "port is required" / "operation is required"Campos básicos de conexión u operación no completados.Completar host, port y operation.
"collectionName is required for [operación]"El campo collectionName no fue completado para una operación que lo exige.Completar collectionName con el nombre de la colección.
"vectorSize or vectorsConfig is required for CREATE_COLLECTION"No se informó ninguno de los dos campos de configuración de vector al crear la colección.Informar vectorSize (uso simple) o vectorsConfig (múltiples vectores).
"At least one vector is required: 'denseVector', 'sparseVector', or 'namedVectors'"Se usó la operación UPSERT sin ningún vector.Completar al menos uno de los tres campos de vector.
"vector or searchRequest is required for SEARCH"Se usó la operación SEARCH sin vector de referencia.Completar vector (uso simple) o searchRequest (búsqueda avanzada).
"Point not found: [id]"El punto consultado no existe en la colección.Confirmar que el pointId sea correcto y que el punto ya haya sido grabado.
"Failed to parse ... JSON: ..."Algún campo JSON (vector, filtro, payload) está malformado.Revisar la sintaxis JSON del campo indicado en el error.