Skip to content

Commit 06b63b0

Browse files
committed
[AiBundle][Store] Add support for MariaDB
1 parent f9da9c0 commit 06b63b0

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

src/ai-bundle/config/options.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,17 @@
581581
->end()
582582
->end()
583583
->end()
584+
->arrayNode('mariadb')
585+
->useAttributeAsKey('name')
586+
->arrayPrototype()
587+
->children()
588+
->stringNode('connection')->cannotBeEmpty()->end()
589+
->stringNode('table_name')->cannotBeEmpty()->end()
590+
->stringNode('index_name')->cannotBeEmpty()->end()
591+
->stringNode('vector_field_name')->cannotBeEmpty()->end()
592+
->end()
593+
->end()
594+
->end()
584595
->arrayNode('milvus')
585596
->useAttributeAsKey('name')
586597
->arrayPrototype()

src/ai-bundle/src/AiBundle.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
use Symfony\AI\Store\Bridge\Local\DistanceStrategy;
7979
use Symfony\AI\Store\Bridge\Local\InMemoryStore;
8080
use Symfony\AI\Store\Bridge\Manticore\Store as ManticoreStore;
81+
use Symfony\AI\Store\Bridge\MariaDb\Store as MariaDbStore;
8182
use Symfony\AI\Store\Bridge\Meilisearch\Store as MeilisearchStore;
8283
use Symfony\AI\Store\Bridge\Milvus\Store as MilvusStore;
8384
use Symfony\AI\Store\Bridge\MongoDb\Store as MongoDbStore;
@@ -1060,6 +1061,28 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde
10601061
}
10611062
}
10621063

1064+
if ('mariadb' === $type) {
1065+
foreach ($stores as $name => $store) {
1066+
$arguments = [
1067+
new Reference(\sprintf('doctrine.dbal.%s_connection', $store['connection'])),
1068+
$store['table_name'],
1069+
$store['index_name'],
1070+
$store['vector_field_name'],
1071+
];
1072+
1073+
$definition = new Definition(MariaDbStore::class);
1074+
$definition->setFactory([MariaDbStore::class, 'fromDbal']);
1075+
$definition
1076+
->addTag('ai.store')
1077+
->setArguments($arguments);
1078+
1079+
$serviceId = 'ai.store.'.$type.'.'.$name;
1080+
$container->setDefinition($serviceId, $definition);
1081+
$container->registerAliasForArgument($serviceId, StoreInterface::class, $name);
1082+
$container->registerAliasForArgument($serviceId, StoreInterface::class, $type.'_'.$name);
1083+
}
1084+
}
1085+
10631086
if ('meilisearch' === $type) {
10641087
foreach ($stores as $name => $store) {
10651088
$arguments = [

src/ai-bundle/tests/DependencyInjection/AiBundleTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3254,6 +3254,14 @@ private function getFullConfig(): array
32543254
'quantization' => '1bit',
32553255
],
32563256
],
3257+
'mariadb' => [
3258+
'my_mariadb_store' => [
3259+
'connection' => 'default',
3260+
'table_name' => 'vector_table',
3261+
'index_name' => 'vector_idx',
3262+
'vector_field_name' => 'vector',
3263+
],
3264+
],
32573265
'meilisearch' => [
32583266
'my_meilisearch_store' => [
32593267
'endpoint' => 'http://127.0.0.1:7700',

0 commit comments

Comments
 (0)