@@ -112,24 +112,51 @@ def to_problem_model_list(self):
112112 ], problem_paragraph_mapping_list
113113 return result
114114
115+ def get_embedding_model_default_params (model ):
116+ def convert_to_int (value ):
117+ if isinstance (value , str ):
118+ try :
119+ return int (value )
120+ except ValueError :
121+ return value
122+ return value
123+
124+ return {
125+ p .get ('field' ): convert_to_int (p .get ('default_value' ))
126+ for p in model .model_params_form
127+ if p .get ('default_value' ) is not None
128+ }
129+
115130
116131def get_embedding_model_by_knowledge_id_list (knowledge_id_list : List ):
117132 knowledge_list = QuerySet (Knowledge ).filter (id__in = knowledge_id_list )
118133 if len (set ([knowledge .embedding_model_id for knowledge in knowledge_list ])) > 1 :
119134 raise Exception (_ ('The knowledge base is inconsistent with the vector model' ))
120135 if len (knowledge_list ) == 0 :
121136 raise Exception (_ ('Knowledge base setting error, please reset the knowledge base' ))
122- return ModelManage .get_model (str (knowledge_list [0 ].embedding_model_id ),
123- lambda _id : get_model (knowledge_list [0 ].embedding_model ))
137+
138+ default_params = get_embedding_model_default_params (knowledge_list [0 ].embedding_model )
139+
140+ return ModelManage .get_model (
141+ str (knowledge_list [0 ].embedding_model_id ),
142+ lambda _id : get_model (knowledge_list [0 ].embedding_model , ** {** default_params })
143+ )
124144
125145
126146def get_embedding_model_by_knowledge_id (knowledge_id : str ):
127147 knowledge = QuerySet (Knowledge ).select_related ('embedding_model' ).filter (id = knowledge_id ).first ()
128- return ModelManage .get_model (str (knowledge .embedding_model_id ), lambda _id : get_model (knowledge .embedding_model ))
148+
149+ default_params = get_embedding_model_default_params (knowledge .embedding_model )
150+
151+ return ModelManage .get_model (str (knowledge .embedding_model_id ),
152+ lambda _id : get_model (knowledge .embedding_model , ** {** default_params }))
129153
130154
131155def get_embedding_model_by_knowledge (knowledge ):
132- return ModelManage .get_model (str (knowledge .embedding_model_id ), lambda _id : get_model (knowledge .embedding_model ))
156+ default_params = get_embedding_model_default_params (knowledge .embedding_model )
157+
158+ return ModelManage .get_model (str (knowledge .embedding_model_id ),
159+ lambda _id : get_model (knowledge .embedding_model , ** {** default_params }))
133160
134161
135162def get_embedding_model_id_by_knowledge_id (knowledge_id ):
@@ -241,7 +268,7 @@ def create_knowledge_index(knowledge_id=None, document_id=None):
241268 result = sql_execute (sql , [])
242269 if len (result ) == 0 :
243270 return
244- dims = result [0 ]['dims' ]
271+ dims = result [0 ]['dims' ]
245272 sql = f"""CREATE INDEX "embedding_hnsw_idx_{ k_id } " ON embedding USING hnsw ((embedding::vector({ dims } )) vector_cosine_ops) WHERE knowledge_id = '{ k_id } '"""
246273 update_execute (sql , [])
247274 maxkb_logger .info (f'Created index for knowledge ID: { k_id } ' )
0 commit comments