OpenCrawling integra Qdrant para búsquedas vectoriales con filtrado ACL por debajo del milisegundo

Fuentes: Sub-Millisecond Vector Search & Payload ACL Pre-Filtering: Announcing the Qdrant Output Connector in OpenCrawling

OpenCrawling ha presentado el conector de salida para Qdrant (oc-qdrant-output-connector), disponible desde la versión 1.0.0-SNAPSHOT, que incorpora el motor vectorial en Rust al flujo de ingestión documental de la plataforma. El objetivo es habilitar canalizaciones RAG empresariales con búsquedas por similitud de baja latencia y filtrado previo de listas de control de acceso (ACL) a nivel de documento, de modo que un usuario solo recupere vectores correspondientes a contenidos sobre los que tenga derechos explícitos.

El conector se apoya en el motor de índices de payload de Qdrant, que admite índices de tipo KEYWORD junto a los puntos vectoriales. Esto permite a McpVectorServer inyectar filtros de seguridad (SIDs de usuario o grupo) antes de los cálculos de distancia, evitando filtraciones de información sin penalizar el rendimiento. Según el anuncio, la aceleración SIMD y el diseño en Rust de Qdrant posibilitan tiempos de respuesta inferiores al milisegundo.

La arquitectura sigue el patrón de microservicios desacoplados basado en eventos de OpenCrawling: conectores de repositorio (Filesystem, Alfresco, Flowable, Camunda, S3) publican mensajes ligeros de claim-check en Kafka; IngestionConsumer extrae texto con Apache Tika y genera fragmentos con sus ACL asociadas; el servicio oc-embedding-service calcula embeddings con Ollama u OpenAI; y QdrantStoreWriterConsumer realiza upserts por lotes mediante el SDK gRPC de Java de Qdrant sobre el puerto 6334.

Al arrancar, QdrantCollectionInitializer comprueba si existe la colección destino (por defecto enterprise_kb) y, si no, la aprovisiona con la dimensión y métrica de distancia configuradas (COSINE, DOT o EUCLID). Simultáneamente crea índices KEYWORD sobre los campos security_allowed_read y security_denied_read, cuyo deny tiene precedencia. La configuración se gestiona vía propiedades Spring Boot o variables de entorno (host, puerto, API key, colección, dimensiones, distancia y cuantización NONE/SCALAR/BINARY). El proyecto ofrece además un script de prueba integral (./scripts/test-qdrant-decoupled.sh) que levanta Qdrant, Ollama, Kafka y los microservicios de OpenCrawling para verificar el flujo extremo a extremo.