symfony/ai-meilisearch-store
Meilisearch Store integrates Meilisearch as a vector store for Symfony AI Store, enabling hybrid and vector/semantic search with semanticRatio support. Includes links to Meilisearch docs and points to the main Symfony AI repo for issues and PRs.
StoreInterface) allows Laravel integration via Composer and custom service bindings. This reduces friction for teams using Symfony components in Laravel.semanticRatio and hybrid search APIs are a strong fit for use cases needing both keyword and vector relevance (e.g., e-commerce filters + AI recommendations).StoreInterface can be wrapped in Laravel’s service container with minimal boilerplate.Route::post('/search/hybrid', [SearchController::class, 'hybrid'])).VectorStoreInterface, enabling use cases like document retrieval for LLMs, chatbot knowledge bases, or personalized content delivery.VectorStoreManager to handle these concerns.composer.json (e.g., symfony/ai-meilisearch-store:^0.8).meilisearch/meilisearch-php) suffice?laravel-ai-meilisearch).filterableAttributes, rankingRules).Laravel + Symfony AI Integration:
composer require symfony/ai-meilisearch-store
symfony/ai (v0.8+) for vector embeddings and AI orchestration.MeilisearchStore to Laravel’s container:
// app/Providers/MeilisearchServiceProvider.php
use Symfony\Component\AI\Store\MeilisearchStore;
use Meilisearch\Client;
public function register()
{
$this->app->singleton(MeilisearchStore::class, function ($app) {
$client = new Client(
env('MEILISEARCH_HOST'),
env('MEILISEARCH_API_KEY')
);
return new MeilisearchStore($client, 'your_index_name');
});
}
// app/Repositories/VectorStore.php
class VectorStore
{
public function __construct(private MeilisearchStore $store) {}
public function addEmbedding(array $embedding, array $metadata): void
{
$this->store->add($embedding, $metadata);
}
public function hybridSearch(string $query, array $embedding, float $semanticRatio = 0.5): array
{
return $this->store->search($query, $embedding, $semanticRatio);
}
}
// routes/web.php
Route::post('/search/hybrid', [SearchController::class, 'hybrid']);
// app/Http/Controllers/SearchController.php
public function hybrid(Request $request, VectorStore $vectorStore)
{
$query = $request->input('q');
$embedding = $request->input('embedding');
$results = $vectorStore->hybridSearch($query, $embedding);
return response()->json($results);
}
Meilisearch Infrastructure:
docker run -p 7700:7700 -e MEILI_MASTER_KEY=masterKey meilisearch/meilisearch{
"primaryKey": "id",
"fields": [
{ "name": "embedding", "type": "float[]", "dim": 384 },
{ "name": "content", "type": "text" },
{ "name": "category", "type": "string" }
]
}
{
"rankingRules": [
"semanticRatio",
"typo",
"words",
"proximity",
"attribute",
"sort",
"exactness"
]
}
Phase 1: Infrastructure Setup (1-2 days)
MEILISEARCH_HOST, MEILISEARCH_API_KEY).meilisearch-php CLI for initial index setup.Phase 2: Core Integration (2-3 days)
symfony/ai-meilisearch-store to composer.json.$vectorStore = app(VectorStore::class);
$vectorStore->addEmbedding($embedding, ['content' => 'Laravel AI']);
dd($vectorStore->search(...)) to inspect Meilisearch responses.Phase 3: Hybrid Search Implementation (2 days)
/search/hybrid endpoint.curl -X POST http://localhost/search/hybrid \
-H "Content-Type: application/json" \
-d '{"q": "Laravel", "embedding": [0.1, 0.2, ...], "semantic
How can I help you explore Laravel packages today?