Skip to content

Commit 95751b8

Browse files
committed
bug #1045 [AI Bundle] Configuration improvements (Guikingone)
This PR was merged into the main branch. Discussion ---------- [AI Bundle] Configuration improvements | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | Docs? | yes | Issues | -- | License | MIT As discussed with `@OskarStark`, a recent PR introduced a BC breaks when it comes to DX, this PR improves the current configuration with default values in the bundle and improve the definitions. Commits ------- 7cf98ef refactor(aibundle): configuration improved
2 parents c149ec9 + 7cf98ef commit 95751b8

File tree

3 files changed

+1082
-219
lines changed

3 files changed

+1082
-219
lines changed

src/ai-bundle/config/options.php

Lines changed: 98 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -577,13 +577,14 @@
577577
->children()
578578
->stringNode('account_id')->cannotBeEmpty()->end()
579579
->stringNode('api_key')->cannotBeEmpty()->end()
580-
->stringNode('index_name')->cannotBeEmpty()->end()
581-
->integerNode('dimensions')->isRequired()->end()
580+
->stringNode('index_name')->end()
581+
->integerNode('dimensions')
582+
->defaultValue(1536)
583+
->end()
582584
->stringNode('metric')
583-
->cannotBeEmpty()
584585
->defaultValue('cosine')
585586
->end()
586-
->stringNode('endpoint_url')->end()
587+
->stringNode('endpoint')->end()
587588
->end()
588589
->end()
589590
->end()
@@ -592,11 +593,19 @@
592593
->arrayPrototype()
593594
->children()
594595
->stringNode('endpoint')->cannotBeEmpty()->end()
595-
->stringNode('table')->cannotBeEmpty()->end()
596-
->stringNode('field')->isRequired()->end()
597-
->stringNode('type')->isRequired()->end()
598-
->stringNode('similarity')->isRequired()->end()
599-
->integerNode('dimensions')->isRequired()->end()
596+
->stringNode('table')->end()
597+
->stringNode('field')
598+
->defaultValue('_vectors')
599+
->end()
600+
->stringNode('type')
601+
->defaultValue('hnsw')
602+
->end()
603+
->stringNode('similarity')
604+
->defaultValue('cosine')
605+
->end()
606+
->integerNode('dimensions')
607+
->defaultValue(1536)
608+
->end()
600609
->stringNode('quantization')->end()
601610
->end()
602611
->end()
@@ -606,7 +615,7 @@
606615
->arrayPrototype()
607616
->children()
608617
->stringNode('connection')->cannotBeEmpty()->end()
609-
->stringNode('table_name')->cannotBeEmpty()->end()
618+
->stringNode('table_name')->end()
610619
->stringNode('index_name')->cannotBeEmpty()->end()
611620
->stringNode('vector_field_name')->cannotBeEmpty()->end()
612621
->arrayNode('setup_options')
@@ -623,10 +632,16 @@
623632
->children()
624633
->stringNode('endpoint')->cannotBeEmpty()->end()
625634
->stringNode('api_key')->cannotBeEmpty()->end()
626-
->stringNode('index_name')->cannotBeEmpty()->end()
627-
->stringNode('embedder')->isRequired()->end()
628-
->stringNode('vector_field')->isRequired()->end()
629-
->integerNode('dimensions')->isRequired()->end()
635+
->stringNode('index_name')->end()
636+
->stringNode('embedder')
637+
->defaultValue('default')
638+
->end()
639+
->stringNode('vector_field')
640+
->defaultValue('_vectors')
641+
->end()
642+
->integerNode('dimensions')
643+
->defaultValue(1536)
644+
->end()
630645
->floatNode('semantic_ratio')
631646
->info('The ratio between semantic (vector) and full-text search (0.0 to 1.0). Default: 1.0 (100% semantic)')
632647
->defaultValue(1.0)
@@ -650,11 +665,17 @@
650665
->children()
651666
->stringNode('endpoint')->cannotBeEmpty()->end()
652667
->stringNode('api_key')->isRequired()->end()
653-
->stringNode('database')->isRequired()->end()
668+
->stringNode('database')->end()
654669
->stringNode('collection')->isRequired()->end()
655-
->stringNode('vector_field')->isRequired()->end()
656-
->integerNode('dimensions')->isRequired()->end()
657-
->stringNode('metric_type')->end()
670+
->stringNode('vector_field')
671+
->defaultValue('_vectors')
672+
->end()
673+
->integerNode('dimensions')
674+
->defaultValue(1536)
675+
->end()
676+
->stringNode('metric_type')
677+
->defaultValue('COSINE')
678+
->end()
658679
->end()
659680
->end()
660681
->end()
@@ -667,10 +688,14 @@
667688
->defaultValue(MongoDbClient::class)
668689
->end()
669690
->stringNode('database')->isRequired()->end()
670-
->stringNode('collection')->isRequired()->end()
691+
->stringNode('collection')->end()
671692
->stringNode('index_name')->isRequired()->end()
672-
->stringNode('vector_field')->isRequired()->end()
673-
->booleanNode('bulk_write')->end()
693+
->stringNode('vector_field')
694+
->defaultValue('vector')
695+
->end()
696+
->booleanNode('bulk_write')
697+
->defaultValue(false)
698+
->end()
674699
->end()
675700
->end()
676701
->end()
@@ -681,12 +706,18 @@
681706
->stringNode('endpoint')->cannotBeEmpty()->end()
682707
->stringNode('username')->cannotBeEmpty()->end()
683708
->stringNode('password')->cannotBeEmpty()->end()
684-
->stringNode('database')->cannotBeEmpty()->end()
709+
->stringNode('database')->end()
685710
->stringNode('vector_index_name')->cannotBeEmpty()->end()
686711
->stringNode('node_name')->cannotBeEmpty()->end()
687-
->stringNode('vector_field')->isRequired()->end()
688-
->integerNode('dimensions')->isRequired()->end()
689-
->stringNode('distance')->isRequired()->end()
712+
->stringNode('vector_field')
713+
->defaultValue('embeddings')
714+
->end()
715+
->integerNode('dimensions')
716+
->defaultValue(1536)
717+
->end()
718+
->stringNode('distance')
719+
->defaultValue('cosine')
720+
->end()
690721
->booleanNode('quantization')->end()
691722
->end()
692723
->end()
@@ -716,8 +747,10 @@
716747
->stringNode('dsn')->cannotBeEmpty()->end()
717748
->stringNode('username')->end()
718749
->stringNode('password')->end()
719-
->stringNode('table_name')->isRequired()->end()
720-
->stringNode('vector_field')->isRequired()->end()
750+
->stringNode('table_name')->end()
751+
->stringNode('vector_field')
752+
->defaultValue('embedding')
753+
->end()
721754
->enumNode('distance')
722755
->info('Distance metric to use for vector similarity search')
723756
->enumFqcn(PostgresDistance::class)
@@ -741,9 +774,13 @@
741774
->children()
742775
->stringNode('endpoint')->cannotBeEmpty()->end()
743776
->stringNode('api_key')->cannotBeEmpty()->end()
744-
->stringNode('collection_name')->cannotBeEmpty()->end()
745-
->integerNode('dimensions')->isRequired()->end()
746-
->stringNode('distance')->isRequired()->end()
777+
->stringNode('collection_name')->end()
778+
->integerNode('dimensions')
779+
->defaultValue(1536)
780+
->end()
781+
->stringNode('distance')
782+
->defaultValue('Cosine')
783+
->end()
747784
->booleanNode('async')->end()
748785
->end()
749786
->end()
@@ -760,8 +797,10 @@
760797
->info('a service id of a Redis client')
761798
->cannotBeEmpty()
762799
->end()
763-
->stringNode('index_name')->isRequired()->cannotBeEmpty()->end()
764-
->stringNode('key_prefix')->defaultValue('vector:')->end()
800+
->stringNode('index_name')->end()
801+
->stringNode('key_prefix')
802+
->defaultValue('vector:')
803+
->end()
765804
->enumNode('distance')
766805
->info('Distance metric to use for vector similarity search')
767806
->values(Distance::cases())
@@ -790,9 +829,15 @@
790829
->stringNode('url')->isRequired()->cannotBeEmpty()->end()
791830
->stringNode('api_key')->isRequired()->cannotBeEmpty()->end()
792831
->stringNode('table')->end()
793-
->stringNode('vector_field')->end()
794-
->integerNode('vector_dimension')->end()
795-
->stringNode('function_name')->end()
832+
->stringNode('vector_field')
833+
->defaultValue('embedding')
834+
->end()
835+
->integerNode('vector_dimension')
836+
->defaultValue(1536)
837+
->end()
838+
->stringNode('function_name')
839+
->defaultValue('match_documents')
840+
->end()
796841
->end()
797842
->end()
798843
->end()
@@ -805,10 +850,16 @@
805850
->stringNode('password')->cannotBeEmpty()->end()
806851
->stringNode('namespace')->cannotBeEmpty()->end()
807852
->stringNode('database')->cannotBeEmpty()->end()
808-
->stringNode('table')->isRequired()->end()
809-
->stringNode('vector_field')->isRequired()->end()
810-
->stringNode('strategy')->isRequired()->end()
811-
->integerNode('dimensions')->isRequired()->end()
853+
->stringNode('table')->end()
854+
->stringNode('vector_field')
855+
->defaultValue('_vectors')
856+
->end()
857+
->stringNode('strategy')
858+
->defaultValue('cosine')
859+
->end()
860+
->integerNode('dimensions')
861+
->defaultValue(1536)
862+
->end()
812863
->booleanNode('namespaced_user')->end()
813864
->end()
814865
->end()
@@ -819,9 +870,13 @@
819870
->children()
820871
->stringNode('endpoint')->cannotBeEmpty()->end()
821872
->stringNode('api_key')->isRequired()->end()
822-
->stringNode('collection')->isRequired()->end()
823-
->stringNode('vector_field')->isRequired()->end()
824-
->integerNode('dimensions')->isRequired()->end()
873+
->stringNode('collection')->end()
874+
->stringNode('vector_field')
875+
->defaultValue('_vectors')
876+
->end()
877+
->integerNode('dimensions')
878+
->defaultValue(1536)
879+
->end()
825880
->end()
826881
->end()
827882
->end()
@@ -831,7 +886,7 @@
831886
->children()
832887
->stringNode('endpoint')->cannotBeEmpty()->end()
833888
->stringNode('api_key')->isRequired()->end()
834-
->stringNode('collection')->isRequired()->end()
889+
->stringNode('collection')->end()
835890
->end()
836891
->end()
837892
->end()

0 commit comments

Comments
 (0)