@@ -16,31 +16,37 @@ impl SqliteManager {
16
16
let model_type = self . get_default_embedding_model ( )
17
17
. unwrap_or_else ( |_| EmbeddingModelType :: default ( ) ) ;
18
18
19
- let embedding = match tool. get_embedding ( ) {
19
+ let ( updated_tool , embedding) = match tool. get_embedding ( ) {
20
20
Some ( existing_embedding) => {
21
21
// Check if existing embedding has correct dimensions (skip check for custom models)
22
22
match model_type. vector_dimensions ( ) {
23
23
Ok ( expected_dimensions) => {
24
24
if existing_embedding. len ( ) == expected_dimensions {
25
- existing_embedding
25
+ ( tool , existing_embedding)
26
26
} else {
27
27
// Dimension mismatch - regenerate with current model
28
- self . generate_embeddings ( & tool. format_embedding_string ( ) ) . await ?
28
+ let new_embedding = self . generate_embeddings ( & tool. format_embedding_string ( ) ) . await ?;
29
+ let mut updated_tool = tool;
30
+ updated_tool. set_embedding ( new_embedding. clone ( ) ) ;
31
+ ( updated_tool, new_embedding)
29
32
}
30
33
}
31
34
Err ( _) => {
32
35
// Unknown dimensions for custom models - use existing embedding
33
- existing_embedding
36
+ ( tool , existing_embedding)
34
37
}
35
38
}
36
39
}
37
40
None => {
38
41
// No embedding - generate one
39
- self . generate_embeddings ( & tool. format_embedding_string ( ) ) . await ?
42
+ let new_embedding = self . generate_embeddings ( & tool. format_embedding_string ( ) ) . await ?;
43
+ let mut updated_tool = tool;
44
+ updated_tool. set_embedding ( new_embedding. clone ( ) ) ;
45
+ ( updated_tool, new_embedding)
40
46
}
41
47
} ;
42
48
43
- self . add_tool_with_vector ( tool , embedding)
49
+ self . add_tool_with_vector ( updated_tool , embedding)
44
50
}
45
51
46
52
pub fn add_tool_with_vector (
@@ -596,31 +602,37 @@ impl SqliteManager {
596
602
let model_type = self . get_default_embedding_model ( )
597
603
. unwrap_or_else ( |_| EmbeddingModelType :: default ( ) ) ;
598
604
599
- let embedding = match tool. get_embedding ( ) {
605
+ let ( updated_tool , embedding) = match tool. get_embedding ( ) {
600
606
Some ( existing_embedding) => {
601
607
// Check if existing embedding has correct dimensions (skip check for custom models)
602
608
match model_type. vector_dimensions ( ) {
603
609
Ok ( expected_dimensions) => {
604
610
if existing_embedding. len ( ) == expected_dimensions {
605
- existing_embedding
611
+ ( tool , existing_embedding)
606
612
} else {
607
613
// Dimension mismatch - regenerate with current model
608
- self . generate_embeddings ( & tool. format_embedding_string ( ) ) . await ?
614
+ let new_embedding = self . generate_embeddings ( & tool. format_embedding_string ( ) ) . await ?;
615
+ let mut updated_tool = tool;
616
+ updated_tool. set_embedding ( new_embedding. clone ( ) ) ;
617
+ ( updated_tool, new_embedding)
609
618
}
610
619
}
611
620
Err ( _) => {
612
621
// Unknown dimensions for custom models - use existing embedding
613
- existing_embedding
622
+ ( tool , existing_embedding)
614
623
}
615
624
}
616
625
}
617
626
None => {
618
627
// No embedding - generate one
619
- self . generate_embeddings ( & tool. format_embedding_string ( ) ) . await ?
628
+ let new_embedding = self . generate_embeddings ( & tool. format_embedding_string ( ) ) . await ?;
629
+ let mut updated_tool = tool;
630
+ updated_tool. set_embedding ( new_embedding. clone ( ) ) ;
631
+ ( updated_tool, new_embedding)
620
632
}
621
633
} ;
622
634
623
- self . update_tool_with_vector ( tool , embedding)
635
+ self . update_tool_with_vector ( updated_tool , embedding)
624
636
}
625
637
626
638
/// Retrieves all ShinkaiToolHeader entries from the shinkai_tools table
0 commit comments