symfony/ai-cloudflare-store
Integrates Cloudflare Vectorize as a vector store for Symfony AI Store. Supports indexing and querying embeddings plus upserts and deletions via the Vectorize APIs, making it easy to connect Symfony AI apps to Cloudflare’s managed vector database.
symfony/ai as a Composer dependency.Store interface be integrated into Laravel’s existing DI system without conflicts?composer require symfony/ai) and integrated into Laravel’s service container. This involves:
StoreInterface.$this->app->bind(\Symfony\Component\AI\Store\StoreInterface::class, function ($app) {
return new \Symfony\AI\CloudflareStore\CloudflareVectorizeStore(
config('services.cloudflare.api_token'),
config('services.cloudflare.vectorize_index')
);
});
Vectorize permissions.upsert vectors asynchronously) or jobs for background processing.Phase 1: Dependency Setup
symfony/ai and symfony/ai-cloudflare-store to composer.json..env:
CLOUDFLARE_API_TOKEN=your_api_token_here
CLOUDFLARE_VECTORIZE_INDEX=your_index_name
config/services.php.Phase 2: Interface Integration
Store interface:
use Symfony\Component\AI\Store\StoreInterface;
public function __construct(private StoreInterface $store) {}
public function indexEmbedding(array $embedding, string $id) {
$this->store->upsert([$embedding], [$id]);
}
SimilaritySearchService).Phase 3: Data Migration
use Symfony\Component\AI\Store\StoreInterface;
public function migrateVectors(StoreInterface $store) {
$vectors = VectorModel::query()->get(['embedding', 'id']);
$embeddings = $vectors->pluck('embedding')->toArray();
$ids = $vectors->pluck('id')->toArray();
$store->upsert($embeddings, $ids);
}
Phase 4: Query Replacement
query() method:
$results = $this->store->query($queryEmbedding, limit: 5, filter: ['metadata' => ['category' => 'tech']]);
Phase 5: Testing and Validation
symfony/ai (check Symfony AI docs).How can I help you explore Laravel packages today?