@@ -66,7 +66,7 @@ void LightningGraph::DropAllVertex() {
66
66
Transaction txn = CreateWriteTxn (false );
67
67
ScopedRef<SchemaInfo> curr_schema = schema_.GetScopedRef ();
68
68
// clear indexes
69
- auto [indexes, composite_indexes] = index_manager_->ListAllIndexes (txn.GetTxn ());
69
+ auto [indexes, composite_indexes, vector_indexes ] = index_manager_->ListAllIndexes (txn.GetTxn ());
70
70
for (auto & idx : indexes) {
71
71
auto v_schema = curr_schema->v_schema_manager .GetSchema (idx.label );
72
72
auto e_schema = curr_schema->e_schema_manager .GetSchema (idx.label );
@@ -89,6 +89,15 @@ void LightningGraph::DropAllVertex() {
89
89
v_schema->GetCompositeIndex (idx.fields )->Clear (txn.GetTxn ());
90
90
}
91
91
}
92
+ for (auto & idx : vector_indexes) {
93
+ auto v_schema = curr_schema->v_schema_manager .GetSchema (idx.label );
94
+ FMA_DBG_ASSERT (v_schema);
95
+ if (v_schema) {
96
+ auto ext = v_schema->GetFieldExtractor (idx.field );
97
+ FMA_DBG_ASSERT (ext);
98
+ ext->GetVectorIndex ()->Clear ();
99
+ }
100
+ }
92
101
// clear detached property data
93
102
for (auto & name : curr_schema->v_schema_manager .GetAllLabels ()) {
94
103
auto s = curr_schema->v_schema_manager .GetSchema (name);
@@ -2219,8 +2228,6 @@ bool LightningGraph::BlockingAddVectorIndex(bool is_vertex, const std::string& l
2219
2228
label, field);
2220
2229
VectorIndex* index = extractor->GetVectorIndex ();
2221
2230
uint64_t count = 0 ;
2222
- std::vector<std::vector<float >> floatvector;
2223
- std::vector<int64_t > vids;
2224
2231
auto dim = index ->GetVecDimension ();
2225
2232
auto kv_iter = schema->GetPropertyTable ().GetIterator (txn.GetTxn ());
2226
2233
for (kv_iter->GotoFirstKey (); kv_iter->IsValid (); kv_iter->Next ()) {
@@ -2234,13 +2241,13 @@ bool LightningGraph::BlockingAddVectorIndex(bool is_vertex, const std::string& l
2234
2241
THROW_CODE (VectorIndexException,
2235
2242
" vector size error, size:{}, dim:{}" , vector.size (), dim);
2236
2243
}
2237
- floatvector.emplace_back (std::move (vector));
2238
- vids.emplace_back (vid);
2244
+ index ->Add ({std::move (vector)}, {vid});
2239
2245
count++;
2246
+ if ((count % 10000 ) == 0 ) {
2247
+ LOG_INFO () << " vector index count: " << count;
2248
+ }
2240
2249
}
2241
- index ->Build ();
2242
- index ->Add (floatvector, vids, count);
2243
- LOG_INFO () << " index count: " << count;
2250
+ LOG_INFO () << " vector index count: " << count;
2244
2251
LOG_INFO () << FMA_FMT (" end building vertex vector index for {}:{} in detached model" ,
2245
2252
label, field);
2246
2253
kv_iter.reset ();
@@ -2809,7 +2816,7 @@ void LightningGraph::DropAllIndex() {
2809
2816
ScopedRef<SchemaInfo> curr_schema = schema_.GetScopedRef ();
2810
2817
std::unique_ptr<SchemaInfo> new_schema (new SchemaInfo (*curr_schema.Get ()));
2811
2818
std::unique_ptr<SchemaInfo> backup_schema (new SchemaInfo (*curr_schema.Get ()));
2812
- auto [indexes, composite_indexes] = index_manager_->ListAllIndexes (txn.GetTxn ());
2819
+ auto [indexes, composite_indexes, vector_indexes ] = index_manager_->ListAllIndexes (txn.GetTxn ());
2813
2820
2814
2821
bool success = true ;
2815
2822
for (auto & idx : indexes) {
@@ -2840,6 +2847,14 @@ void LightningGraph::DropAllIndex() {
2840
2847
}
2841
2848
v_schema->UnVertexCompositeIndex (idx.fields );
2842
2849
}
2850
+ for (auto & idx : vector_indexes) {
2851
+ auto v_schema = new_schema->v_schema_manager .GetSchema (idx.label );
2852
+ FMA_DBG_ASSERT (v_schema);
2853
+ auto ret = index_manager_->DeleteVectorIndex (txn.GetTxn (), idx.label , idx.field );
2854
+ FMA_DBG_ASSERT (ret);
2855
+ auto ext = v_schema->GetFieldExtractor (idx.field );
2856
+ v_schema->UnVectorIndex (ext->GetFieldId ());
2857
+ }
2843
2858
if (success) {
2844
2859
schema_.Assign (new_schema.release ());
2845
2860
AutoCleanupAction revert_assign_new_schema (
0 commit comments