@@ -24,6 +24,7 @@ class DescribeTableResult;
24
24
class ExplicitPartitions ;
25
25
class GlobalIndexSettings ;
26
26
class VectorIndexSettings ;
27
+ class KMeansTreeSettings ;
27
28
class PartitioningSettings ;
28
29
class DateTypeColumnModeSettings ;
29
30
class TtlSettings ;
@@ -187,8 +188,7 @@ struct TExplicitPartitions {
187
188
188
189
FLUENT_SETTING_VECTOR (TValue, SplitPoints);
189
190
190
- template <typename TProto>
191
- static TExplicitPartitions FromProto (const TProto& proto);
191
+ static TExplicitPartitions FromProto (const Ydb::Table::ExplicitPartitions& proto);
192
192
193
193
void SerializeTo (Ydb::Table::ExplicitPartitions& proto) const ;
194
194
};
@@ -199,47 +199,67 @@ struct TGlobalIndexSettings {
199
199
TPartitioningSettings PartitioningSettings;
200
200
TUniformOrExplicitPartitions Partitions;
201
201
202
- template <typename TProto>
203
- static TGlobalIndexSettings FromProto (const TProto& proto);
202
+ static TGlobalIndexSettings FromProto (const Ydb::Table::GlobalIndexSettings& proto);
204
203
205
204
void SerializeTo (Ydb::Table::GlobalIndexSettings& proto) const ;
206
205
};
207
206
208
207
struct TVectorIndexSettings {
209
208
public:
210
- enum class EDistance {
211
- Cosine,
209
+ enum class EMetric {
210
+ Unspecified = 0 ,
211
+ InnerProduct,
212
+ CosineSimilarity,
213
+ CosineDistance,
212
214
Manhattan,
213
215
Euclidean,
216
+ };
214
217
215
- Unknown = std::numeric_limits<int >::max()
218
+ enum class EVectorType {
219
+ Unspecified = 0 ,
220
+ Float,
221
+ Uint8,
222
+ Int8,
223
+ Bit,
216
224
};
217
225
218
- enum class ESimilarity {
219
- Cosine,
220
- InnerProduct,
226
+ EMetric Metric = EMetric::Unspecified;
227
+ EVectorType VectorType = EVectorType::Unspecified;
228
+ uint32_t VectorDimension = 0 ;
221
229
222
- Unknown = std::numeric_limits<int >::max()
230
+ static TVectorIndexSettings FromProto (const Ydb::Table::VectorIndexSettings& proto);
231
+
232
+ void SerializeTo (Ydb::Table::VectorIndexSettings& settings) const ;
233
+
234
+ void Out (IOutputStream &o) const ;
235
+ };
236
+
237
+ struct TKMeansTreeSettings {
238
+ public:
239
+ enum class EMetric {
240
+ Unspecified = 0 ,
241
+ InnerProduct,
242
+ CosineSimilarity,
243
+ CosineDistance,
244
+ Manhattan,
245
+ Euclidean,
223
246
};
224
247
225
248
enum class EVectorType {
249
+ Unspecified = 0 ,
226
250
Float,
227
251
Uint8,
228
252
Int8,
229
253
Bit,
230
-
231
- Unknown = std::numeric_limits<int >::max()
232
254
};
233
- using TMetric = std::variant<std::monostate, EDistance, ESimilarity>;
234
255
235
- TMetric Metric ;
236
- EVectorType VectorType ;
237
- uint32_t VectorDimension ;
256
+ TVectorIndexSettings Settings ;
257
+ uint32_t Clusters = 0 ;
258
+ uint32_t Levels = 0 ;
238
259
239
- template <typename TProto>
240
- static TVectorIndexSettings FromProto (const TProto& proto);
260
+ static TKMeansTreeSettings FromProto (const Ydb::Table::KMeansTreeSettings& proto);
241
261
242
- void SerializeTo (Ydb::Table::VectorIndexSettings & settings) const ;
262
+ void SerializeTo (Ydb::Table::KMeansTreeSettings & settings) const ;
243
263
244
264
void Out (IOutputStream &o) const ;
245
265
};
@@ -255,7 +275,7 @@ class TIndexDescription {
255
275
const std::vector<std::string>& indexColumns,
256
276
const std::vector<std::string>& dataColumns = {},
257
277
const std::vector<TGlobalIndexSettings>& globalIndexSettings = {},
258
- const std::optional<TVectorIndexSettings >& vectorIndexSettings = {}
278
+ const std::variant<std::monostate, TKMeansTreeSettings >& specializedIndexSettings = {}
259
279
);
260
280
261
281
TIndexDescription (
@@ -269,7 +289,7 @@ class TIndexDescription {
269
289
EIndexType GetIndexType () const ;
270
290
const std::vector<std::string>& GetIndexColumns () const ;
271
291
const std::vector<std::string>& GetDataColumns () const ;
272
- const std::optional<TVectorIndexSettings >& GetVectorIndexSettings () const ;
292
+ const std::variant<std::monostate, TKMeansTreeSettings >& GetVectorIndexSettings () const ;
273
293
uint64_t GetSizeBytes () const ;
274
294
275
295
void SerializeTo (Ydb::Table::TableIndex& proto) const ;
@@ -289,8 +309,8 @@ class TIndexDescription {
289
309
std::vector<std::string> IndexColumns_;
290
310
std::vector<std::string> DataColumns_;
291
311
std::vector<TGlobalIndexSettings> GlobalIndexSettings_;
292
- std::optional<TVectorIndexSettings> VectorIndexSettings_ ;
293
- uint64_t SizeBytes = 0 ;
312
+ std::variant<std::monostate, TKMeansTreeSettings> SpecializedIndexSettings_ ;
313
+ uint64_t SizeBytes_ = 0 ;
294
314
};
295
315
296
316
struct TRenameIndex {
@@ -665,8 +685,8 @@ class TTableDescription {
665
685
void AddUniqueSecondaryIndex (const std::string& indexName, const std::vector<std::string>& indexColumns);
666
686
void AddUniqueSecondaryIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns);
667
687
// vector KMeansTree
668
- void AddVectorKMeansTreeSecondaryIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const TVectorIndexSettings& vectorIndexSettings );
669
- void AddVectorKMeansTreeSecondaryIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns, const TVectorIndexSettings& vectorIndexSettings );
688
+ void AddVectorKMeansTreeIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const TKMeansTreeSettings& indexSettings );
689
+ void AddVectorKMeansTreeIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns, const TKMeansTreeSettings& indexSettings );
670
690
671
691
// default
672
692
void AddSecondaryIndex (const std::string& indexName, const std::vector<std::string>& indexColumns);
@@ -889,8 +909,8 @@ class TTableBuilder {
889
909
TTableBuilder& AddUniqueSecondaryIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns);
890
910
891
911
// vector KMeansTree
892
- TTableBuilder& AddVectorKMeansTreeSecondaryIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const TVectorIndexSettings& vectorIndexSettings );
893
- TTableBuilder& AddVectorKMeansTreeSecondaryIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns, const TVectorIndexSettings& vectorIndexSettings );
912
+ TTableBuilder& AddVectorKMeansTreeIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const TKMeansTreeSettings& indexSettings );
913
+ TTableBuilder& AddVectorKMeansTreeIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns, const TKMeansTreeSettings& indexSettings );
894
914
895
915
// default
896
916
TTableBuilder& AddSecondaryIndex (const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns);
0 commit comments