@@ -42,6 +42,8 @@ public class RedisEmbeddingStore implements EmbeddingStore<TextSegment> {
4242 private final ReactiveRedisDataSource ds ;
4343 private final RedisSchema schema ;
4444 private final Logger LOG = Logger .getLogger (RedisEmbeddingStore .class );
45+ private final boolean indexCreated ;
46+ private boolean warnedAboutWrongDimension = false ;
4547
4648 private static final String SCORE_FIELD_NAME = "vector_score" ;
4749
@@ -52,10 +54,10 @@ public static Builder builder() {
5254 public RedisEmbeddingStore (ReactiveRedisDataSource ds , RedisSchema schema ) {
5355 this .ds = ds ;
5456 this .schema = schema ;
55- createIndexIfDoesNotExist ();
57+ this . indexCreated = createIndexIfDoesNotExist ();
5658 }
5759
58- private void createIndexIfDoesNotExist () {
60+ private boolean createIndexIfDoesNotExist () {
5961 List <String > indexes = ds .search ().ft_list ()
6062 .onFailure ().invoke (t -> {
6163 if (t .getMessage ().contains ("unknown command" )) {
@@ -71,8 +73,10 @@ private void createIndexIfDoesNotExist() {
7173 schema .defineFields (indexCreateArgs );
7274 LOG .debug ("Creating Redis index " + schema .getIndexName ());
7375 ds .search ().ftCreate (schema .getIndexName (), indexCreateArgs ).await ().indefinitely ();
76+ return true ;
7477 } else {
7578 LOG .debug ("Index in Redis already exists: " + schema .getIndexName ());
79+ return false ;
7680 }
7781 }
7882
@@ -130,6 +134,14 @@ private void addAllInternal(List<String> ids, List<Embedding> embeddings, List<T
130134 TextSegment textSegment = embedded == null ? null : embedded .get (i );
131135 Map <String , Object > fields = new HashMap <>();
132136 fields .put (schema .getVectorFieldName (), embedding .vector ());
137+ if (!warnedAboutWrongDimension && indexCreated && embedding .vector ().length != schema .getDimension ()) {
138+ LOG .warn ("Creating an embedding with dimension " + embedding .vector ().length + " but the index was " +
139+ "created with dimension " + schema .getDimension () + ". " +
140+ "This may result in embeddings not being found when they should be. " +
141+ "Please check the quarkus.langchain4j.redis.dimension property. " +
142+ "This warning will be shown only once." );
143+ warnedAboutWrongDimension = true ;
144+ }
133145 if (textSegment != null ) {
134146 fields .put (schema .getScalarFieldName (), textSegment .text ());
135147 fields .putAll (textSegment .metadata ().asMap ());
0 commit comments