- What is symfony/ai-qdrant-store used for?
- It is the Qdrant vector store bridge for Symfony AI Store. It lets your application create collections, manage points, and run unified similarity searches with filters against a Qdrant instance. It implements the Symfony AI store abstraction, so your retrieval code can program against a store contract instead of Qdrant-specific calls.
- How do I install symfony/ai-qdrant-store with Composer?
- Install it with composer require symfony/ai-qdrant-store. It is part of the Symfony AI project and depends on the Symfony AI store contracts, so Composer will pull in the required abstractions. After installation, register the store in your framework's service container and point it at your Qdrant instance.
- Can I use symfony/ai-qdrant-store in a Laravel application?
- Yes. The store is framework-agnostic because it is built on the Symfony AI contracts, so you can bind it as a singleton in a Laravel service provider and inject it where needed. You will not get a Laravel-specific config file or facade from this package, but the underlying store API works the same. This makes it a reasonable choice when you want Qdrant-backed retrieval without coupling your domain code to Qdrant.
- Does symfony/ai-qdrant-store support Laravel 10 or 11?
- The package does not ship Laravel-specific version constraints; compatibility is determined by its PHP and Symfony AI contract requirements. Check the composer.json constraints and run composer update on your target Laravel version to confirm. Because it is used through a service provider binding, Laravel 10 or 11 support depends on your PHP version and the installed Symfony AI packages rather than a Laravel integration layer.
- How do I connect the Qdrant store to my Qdrant server?
- You configure the store with your Qdrant endpoint and any required API key or collection name, typically through your framework's service configuration. In Laravel, that usually means reading environment variables in a service provider and passing them to the store constructor. Keep credentials out of code and use separate collections per environment.
- What operations does the Qdrant store support?
- The bridge supports creating collections, managing points, and running unified similarity searches with filters. It also exposes count() in recent versions, which gives you first-class cardinality queries. These operations are exposed through the Symfony AI store abstraction rather than a raw Qdrant client.
- What is VectorDocumentInterface in symfony/ai-qdrant-store 0.14?
- VectorDocumentInterface was introduced to formalise the document contract between your domain objects and the store. It lets you define a canonical document type that any store implementation can consume, which reduces lock-in to Qdrant payload shapes and simplifies test doubles. Existing array-based document construction should continue to work, but new code should target the interface for cleaner boundaries.
- Is count() exact or approximate in the Qdrant store?
- The count() capability adds cardinality queries to the store contract, but you should verify Qdrant's exact-versus-approximate behaviour for your collection and filter before relying on it. Filtered counts on very large collections can be expensive, and eventual consistency between writes and counts may make a user-facing total disagree with search results. Characterise the cost profile before putting count() in a request path.
- Is symfony/ai-qdrant-store stable enough for production?
- The package is pre-1.0, so minor version bumps may include breaking changes even when a specific release is additive. Pin the version in composer.json and plan deliberate upgrades rather than using a floating constraint. For production, wrap the store behind your own thin interface and run contract tests against a real Qdrant instance.
- How should I test a Laravel app that uses symfony/ai-qdrant-store?
- Test against the store contract rather than Qdrant directly, using a test double or an in-memory store implementation for unit tests. For integration tests, run a disposable Qdrant container and exercise collection creation, point upserts, filtered search, and count(). If you adopt VectorDocumentInterface, keep your own domain DTO and adapt it at the boundary so interface changes do not break core domain objects.