- How do I install esplora/lumos in a Laravel application?
- Install it with Composer using composer require esplora/lumos, then publish any package configuration and run the required migrations if the package provides them. Review the package's composer.json for Laravel and PHP version constraints before adopting it. Because Lumos is Laravel-native, setup should follow standard service provider and config publishing conventions.
- Which Laravel and PHP versions are supported by esplora/lumos?
- The package's Composer constraints are the source of truth, so check its composer.json and README before installing. Confirm compatibility with your application's Laravel and PHP versions, especially if you are on older or newly released Laravel releases. Test installation in a development branch before upgrading production.
- How does Lumos generate and store embeddings for Eloquent models?
- Lumos generates embeddings for your model data using a configurable provider and stores them so records can be searched by meaning. You configure the provider and indexing behavior through the package's Laravel configuration. The goal is to make existing Eloquent data searchable with minimal setup and no separate search infrastructure.
- Do I need a vector database or external search service to use Lumos?
- Lumos is positioned as a lightweight Laravel package that adds semantic search without complex search infrastructure. It stores generated embeddings and exposes a fluent query API, so you should verify the supported storage and scaling options in the documentation. For very large datasets, review how embeddings are stored and whether your database can handle the query load.
- How can I index a large dataset without slowing down requests?
- Lumos supports queued indexing, which lets you generate and store embeddings in background workers instead of during HTTP requests. Configure a queue connection and run workers in staging and production, then dispatch indexing jobs for existing records. Monitor queue depth and failures, and plan for reindexing when model data changes.
- How do I run a semantic search query with esplora/lumos?
- Lumos provides a fluent query API that lets you search Eloquent models using natural-language queries and retrieve records by meaning rather than exact keyword matches. You typically build the query from your model and pass a search phrase, then use the returned results like normal Eloquent models. Check the README for the exact method names and supported query options.
- Which embedding providers can I configure with Lumos?
- Lumos supports configurable embedding providers, so you can choose the provider that fits your application and environment. Provider credentials and model settings should be stored in environment variables and never committed to source control. Review the package config to confirm which providers are supported and how to switch between them.
- How should I test semantic search and embedding generation in Laravel?
- Test indexing jobs and search queries separately, using a fake or mocked embedding provider so tests do not call external APIs. Use a test database or in-memory SQLite where possible, and assert that indexed records are returned for relevant queries. Also cover failure cases such as provider errors and missing embeddings.
- What production concerns should I consider before using esplora/lumos?
- Plan for embedding API latency, rate limits, and cost, especially when indexing large datasets. Run queue workers reliably, monitor failed indexing jobs, and define a reindexing strategy when model content changes. Also consider embedding storage growth and how you will handle provider outages or configuration errors.
- How does Lumos compare to Laravel Scout or keyword search packages?
- Laravel Scout integrates full-text and keyword search drivers, while Lumos focuses on semantic search by meaning using embeddings. Keyword search is often better for exact matches and filters, whereas semantic search helps with natural-language or conceptual queries. You can evaluate both approaches or combine them depending on your search requirements.