@@ -117,7 +117,7 @@ def is_db_configured() -> bool:
117117 (
118118 config .get ("connected" )
119119 for config in state .database_configs
120- if config .get ("name" ) == state .client_settings [ "database" ][ "alias" ]
120+ if config .get ("name" ) == state .client_settings . get ( "database" , {}). get ( "alias" )
121121 ),
122122 False ,
123123 )
@@ -274,7 +274,7 @@ def _update_set_tool():
274274 switch_prompt ("sys" , "Basic Example" )
275275 else :
276276 # Client Settings
277- db_alias = state .client_settings [ "database" ][ "alias" ]
277+ db_alias = state .client_settings . get ( "database" , {}). get ( "alias" )
278278 oci_auth_profile = state .client_settings ["oci" ]["auth_profile" ]
279279
280280 # Lookups
@@ -346,7 +346,7 @@ def _disable_vector_search(reason):
346346#####################################################
347347def selectai_sidebar () -> None :
348348 """SelectAI Sidebar Settings, conditional if Database/SelectAI are configured"""
349- db_alias = state .client_settings [ "database" ][ "alias" ]
349+ db_alias = state .client_settings . get ( "database" , {}). get ( "alias" )
350350 database_lookup = state_configs_lookup ("database_configs" , "name" )
351351 if state .client_settings ["selectai" ]["enabled" ]:
352352 st .sidebar .subheader ("SelectAI" , divider = "red" )
@@ -418,22 +418,6 @@ def _render_vector_search_options(vector_search_type: str) -> None:
418418 )
419419
420420
421- def _vs_reset () -> None :
422- """Reset Vector Store Selections"""
423- for key in state .client_settings ["vector_search" ]:
424- if key in (
425- "model" ,
426- "chunk_size" ,
427- "chunk_overlap" ,
428- "distance_metric" ,
429- "vector_store" ,
430- "alias" ,
431- "index_type" ,
432- ):
433- clear_state_key (f"selected_vector_search_{ key } " )
434- state .client_settings ["vector_search" ][key ] = ""
435-
436-
437421def _vs_gen_selectbox (label : str , options : list , key : str ):
438422 """Handle selectbox with auto-setting for a single unique value"""
439423 valid_options = [option for option in options if option != "" ]
@@ -461,7 +445,7 @@ def _vs_gen_selectbox(label: str, options: list, key: str):
461445 )
462446
463447
464- def _update_filtered_df (vs_df : pd .DataFrame ) -> pd .DataFrame :
448+ def update_filtered_vector_store (vs_df : pd .DataFrame ) -> pd .DataFrame :
465449 """Dynamically update filtered_df based on selected filters"""
466450 embed_models_enabled = enabled_models_lookup ("embed" )
467451 filtered = vs_df .copy ()
@@ -482,17 +466,36 @@ def _update_filtered_df(vs_df: pd.DataFrame) -> pd.DataFrame:
482466 return filtered
483467
484468
485- def _render_vector_store_selection (vs_df : pd .DataFrame ) -> None :
469+ def render_vector_store_selection (vs_df : pd .DataFrame ) -> None :
486470 """Render vector store selection controls and handle state updates."""
487- filtered_df = _update_filtered_df (vs_df )
471+ st .sidebar .subheader ("Vector Store" , divider = "red" )
472+
473+ def reset () -> None :
474+ """Reset Vector Store Selections"""
475+ for key in state .client_settings ["vector_search" ]:
476+ if key in (
477+ "model" ,
478+ "chunk_size" ,
479+ "chunk_overlap" ,
480+ "distance_metric" ,
481+ "vector_store" ,
482+ "alias" ,
483+ "index_type" ,
484+ ):
485+ clear_state_key (f"selected_vector_search_{ key } " )
486+ state .client_settings ["vector_search" ][key ] = ""
487+
488+ filtered_df = update_filtered_vector_store (vs_df )
488489
489490 # Render selectbox with updated options
490491 alias = _vs_gen_selectbox ("Select Alias:" , filtered_df ["alias" ].unique ().tolist (), "selected_vector_search_alias" )
491492 embed_model = _vs_gen_selectbox (
492493 "Select Model:" , filtered_df ["model" ].unique ().tolist (), "selected_vector_search_model"
493494 )
494495 chunk_size = _vs_gen_selectbox (
495- "Select Chunk Size:" , filtered_df ["chunk_size" ].unique ().tolist (), "selected_vector_search_chunk_size"
496+ "Select Chunk Size:" ,
497+ filtered_df ["chunk_size" ].unique ().tolist (),
498+ "selected_vector_search_chunk_size" ,
496499 )
497500 chunk_overlap = _vs_gen_selectbox (
498501 "Select Chunk Overlap:" ,
@@ -505,7 +508,9 @@ def _render_vector_store_selection(vs_df: pd.DataFrame) -> None:
505508 "selected_vector_search_distance_metric" ,
506509 )
507510 index_type = _vs_gen_selectbox (
508- "Select Index Type:" , filtered_df ["index_type" ].unique ().tolist (), "selected_vector_search_index_type"
511+ "Select Index Type:" ,
512+ filtered_df ["index_type" ].unique ().tolist (),
513+ "selected_vector_search_index_type" ,
509514 )
510515
511516 if all ([alias , embed_model , chunk_size , chunk_overlap , distance_metric , index_type ]):
@@ -518,11 +523,11 @@ def _render_vector_store_selection(vs_df: pd.DataFrame) -> None:
518523 state .client_settings ["vector_search" ]["distance_metric" ] = distance_metric
519524 state .client_settings ["vector_search" ]["index_type" ] = index_type
520525 else :
521- st .error ("Please select Vector Store options or disable Vector Search to continue." , icon = "❌ " )
526+ st .info ("Please select existing Vector Store options to continue." , icon = "⬅️ " )
522527 state .enable_client = False
523528
524529 # Reset button
525- st .sidebar .button ("Reset" , type = "primary" , on_click = _vs_reset )
530+ st .sidebar .button ("Reset" , type = "primary" , on_click = reset )
526531
527532
528533def vector_search_sidebar () -> None :
@@ -545,10 +550,9 @@ def vector_search_sidebar() -> None:
545550 _render_vector_search_options (vector_search_type )
546551
547552 # Vector Store Section
548- st .sidebar .subheader ("Vector Store" , divider = "red" )
549- db_alias = state .client_settings ["database" ]["alias" ]
553+ db_alias = state .client_settings .get ("database" , {}).get ("alias" )
550554 database_lookup = state_configs_lookup ("database_configs" , "name" )
551- vs_df = pd .DataFrame (database_lookup [ db_alias ] .get ("vector_stores" ))
555+ vs_df = pd .DataFrame (database_lookup . get ( db_alias , {}) .get ("vector_stores" , [] ))
552556
553557 # Render vector store selection controls
554- _render_vector_store_selection (vs_df )
558+ render_vector_store_selection (vs_df )
0 commit comments