Feature Release July 29, 2026 • 5 min read

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

We are thrilled to announce the official release of the Qdrant Output Connector (oc-qdrant-output-connector)! OpenCrawling now natively connects enterprise document repositories to Qdrant—the open-source, Rust-based vector search engine—delivering high-speed binary gRPC upserts, automated collection auto-provisioning, scalar quantization, and sub-millisecond ACL payload pre-filtering for secure RAG.


01. Why Qdrant for Enterprise Vector Search?

As AI applications expand across enterprise ecosystems, vector storage demands extreme query throughput, low memory footprint, and strict security guarantees. While vector databases excel at similarity search, enterprise content repositories (like SharePoint, Alfresco, and Iceberg) require document-level Access Control Lists (ACLs) to ensure users only retrieve information they have explicit rights to see.

Qdrant is engineered in Rust with SIMD hardware acceleration, making it one of the fastest vector engines in existence. But what truly sets Qdrant apart for enterprise RAG is its Payload Index Engine. By supporting KEYWORD payload indexes directly alongside vector points, Qdrant allows filtering by payload attributes (such as user security SIDs) before distance calculations occur, preventing security leaks without sacrificing search performance.

Sub-Millisecond ACL Pre-Filtering: Qdrant's payload index allows OpenCrawling's McpVectorServer to inject document ACL filters directly into similarity queries, ensuring zero unauthorized vector returns.

02. Architecture & Decoupled Data Flow

The oc-qdrant-output-connector integrates directly into OpenCrawling's event-driven decoupled microservice architecture:

Decoupled Ingestion Pipeline → Qdrant Collection
Repository Connector
Apache Kafka
Tika & Token Splitter
oc-embedding-service
Qdrant Output Connector (gRPC)
  1. Repository Ingestion: Repository connectors (Filesystem, Alfresco, Flowable, Camunda, S3) discover documents and publish lightweight claim-check messages to Kafka.
  2. Text Extraction & Chunking: IngestionConsumer extracts clean text via Apache Tika and generates chunked payloads with associated document ACL security SIDs.
  3. Scalable Embedding: oc-embedding-service dynamically computes vector embeddings (via Ollama or OpenAI) and pushes embedded chunks to Kafka.
  4. High-Speed Binary Upsert: QdrantStoreWriterConsumer receives the embedded chunks and uses the gRPC Java SDK (io.qdrant:client) to upsert PointStruct batches into Qdrant over port 6334.

03. Automated Collection Provisioning & Payload ACL Indexing

Upon startup, QdrantCollectionInitializer verifies whether the configured target collection (e.g. enterprise_kb) exists. If not, it automatically provisions the collection with the desired vector dimensions and distance metric (COSINE, DOT, or EUCLID).

Simultaneously, the connector creates KEYWORD payload indexes on the security payload fields:

// Example Qdrant Point Payload Structure generated by oc-qdrant-output-connector
{
  "id": "c8a912e4-712d-4b92-b2fa-1092a9f1a091",
  "vector": [0.0142, -0.0521, 0.0892, ...],
  "payload": {
    "text": "Enterprise quarterly financial report and forecasts...",
    "uri": "file:///data/finance/q3_report.pdf",
    "security_allowed_read": ["ROLE_FINANCE", "USER_S-1-5-21-3623811015"],
    "security_denied_read": ["ROLE_EXTERN"],
    "lastModified": "2026-07-29T18:00:00Z"
  }
}

04. Configuration & Deployment

The Qdrant Output Connector is fully configurable via standard Spring Boot YAML properties or environment variables:

Property Environment Variable Default Description
spring.opencrawling.output.qdrant.host SPRING_OPENCRAWLING_OUTPUT_QDRANT_HOST localhost Hostname of self-hosted Qdrant or Qdrant Cloud instance
spring.opencrawling.output.qdrant.port SPRING_OPENCRAWLING_OUTPUT_QDRANT_PORT 6334 High-performance gRPC port (default: 6334)
spring.opencrawling.output.qdrant.api-key SPRING_OPENCRAWLING_OUTPUT_QDRANT_API_KEY "" Optional API key for Qdrant Cloud or Enterprise cluster
spring.opencrawling.output.qdrant.collection-name SPRING_OPENCRAWLING_OUTPUT_QDRANT_COLLECTION_NAME enterprise_kb Target Qdrant vector collection name
spring.opencrawling.output.qdrant.dimensions SPRING_OPENCRAWLING_OUTPUT_QDRANT_DIMENSIONS 1024 Vector dimension size (e.g. 1024 for mxbai-embed-large)
spring.opencrawling.output.qdrant.distance SPRING_OPENCRAWLING_OUTPUT_QDRANT_DISTANCE COSINE Vector distance metric (COSINE, DOT, EUCLID)
spring.opencrawling.output.qdrant.quantization SPRING_OPENCRAWLING_OUTPUT_QDRANT_QUANTIZATION NONE Quantization mode (NONE, SCALAR, BINARY)
🧪

Automated Integration Test: You can test the end-to-end Qdrant pipeline locally with one command: ./scripts/test-qdrant-decoupled.sh. The script spins up Qdrant, Ollama, Kafka, and OpenCrawling microservices, injects a test document, and verifies point count in Qdrant.

05. Get Started Today

The Qdrant Output Connector is available starting in OpenCrawling 1.0.0-SNAPSHOT. Check out the documentation or run the Docker Compose environment to start building secure, low-latency RAG pipelines with Qdrant!

Ready to Supercharge Your RAG Architecture with Qdrant?

Explore the source code on GitHub, read the Wiki configuration guide, or join our community discussions.