static_embeddings 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@
8
8
 
9
9
  #define SE_MAGIC "SEMBv1\0\0"
10
10
  #define SE_MAGIC_LEN 8
11
- #define SE_FORMAT_VERSION 2u
11
+ #define SE_FORMAT_VERSION 3u
12
12
  #define SE_HEADER_SIZE 320u
13
13
  #define SE_ALIGNMENT 64u
14
14
 
@@ -18,7 +18,7 @@
18
18
  #define SE_NORMALIZATION_NONE 0u
19
19
  #define SE_NORMALIZATION_L2 1u
20
20
 
21
- #define SE_TRUNCATE_IDS_BEFORE_POOLING 1u
21
+ #define SE_TRUNCATE_USABLE_IDS_BEFORE_POOLING 2u
22
22
 
23
23
  #define SE_UNK_INCLUDE 0u
24
24
  #define SE_UNK_DROP 1u
@@ -26,6 +26,14 @@
26
26
  #define SE_EMPTY_ZERO_VECTOR 0u
27
27
  #define SE_EMPTY_RAISE 1u
28
28
 
29
+ #define SE_ADDED_PAD (1u << 0)
30
+ #define SE_ADDED_UNK (1u << 1)
31
+ #define SE_ADDED_CLS (1u << 2)
32
+ #define SE_ADDED_SEP (1u << 3)
33
+ #define SE_ADDED_MASK (1u << 4)
34
+ #define SE_ADDED_TOKEN_MASK_ALL \
35
+ (SE_ADDED_PAD | SE_ADDED_UNK | SE_ADDED_CLS | SE_ADDED_SEP | SE_ADDED_MASK)
36
+
29
37
  #define SE_SLOT_EMPTY 0xFFFFFFFFu
30
38
  #define SE_SIZE_MAX ((size_t)-1)
31
39
 
@@ -83,7 +91,8 @@ enum {
83
91
  SE_OFF_SEC_ROOT_TRIE = 208,
84
92
  SE_OFF_SEC_CONT_TRIE = 224,
85
93
  SE_OFF_CHECKSUM = 240,
86
- SE_OFF_MAX_PROBE = 304
94
+ SE_OFF_MAX_PROBE = 304,
95
+ SE_OFF_ADDED_TOKEN_MASK = 308
87
96
  };
88
97
 
89
98
  typedef struct {
@@ -136,6 +145,12 @@ typedef struct {
136
145
  uint32_t control_count;
137
146
  const se_range_t *whitespace;
138
147
  uint32_t whitespace_count;
148
+ const se_map_entry_t *lower256[256];
149
+ const se_map_entry_t *nfd256[256];
150
+ uint8_t mn256[256];
151
+ uint8_t punct256[256];
152
+ uint8_t control256[256];
153
+ uint8_t whitespace256[256];
139
154
  } se_norm_tables_t;
140
155
 
141
156
  typedef struct {
@@ -157,6 +172,7 @@ typedef struct {
157
172
  uint32_t max_input_chars_per_word;
158
173
  uint32_t max_token_chars;
159
174
  uint32_t max_probe;
175
+ uint32_t added_token_mask;
160
176
  uint32_t pad_id;
161
177
  uint32_t unk_id;
162
178
  uint32_t cls_id;
@@ -382,6 +398,9 @@ static inline int se_is_ascii_boundary(uint32_t cp) {
382
398
  void se_scratch_init(se_scratch_t *s);
383
399
  void se_scratch_free(se_scratch_t *s);
384
400
  int se_scratch_reserve(se_scratch_t *s, uint32_t dim);
401
+ se_scratch_t *se_scratch_acquire(uint32_t dim);
402
+ void se_scratch_release(se_scratch_t *s);
403
+ void se_scratch_drop_thread(void);
385
404
 
386
405
  size_t se_prefix_boundary_len(const se_model_t *model, const uint8_t *input, size_t input_len,
387
406
  size_t target, size_t backscan);
@@ -392,9 +411,11 @@ typedef struct {
392
411
  uint32_t truncated;
393
412
  } se_token_stats_t;
394
413
 
414
+ typedef enum { SE_TOKEN_LIMIT_RAW = 0, SE_TOKEN_LIMIT_USABLE = 1 } se_token_limit_t;
415
+
395
416
  se_status_t se_tokenize(const se_model_t *model, se_scratch_t *scratch, const uint8_t *input,
396
- size_t input_len, uint32_t max_tokens, se_token_stats_t *stats,
397
- se_error_t *err, volatile sig_atomic_t *cancelled);
417
+ size_t input_len, uint32_t max_tokens, se_token_limit_t limit_mode,
418
+ se_token_stats_t *stats, se_error_t *err, volatile sig_atomic_t *cancelled);
398
419
 
399
420
  se_status_t se_embed_one(const se_model_t *model, se_scratch_t *scratch, const uint8_t *input,
400
421
  size_t input_len, uint32_t max_tokens, float *out, se_token_stats_t *stats,