node-type-registry 0.18.1 → 0.20.0
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.
- package/authz/authz-allow-all.js +10 -10
- package/authz/authz-composite.js +28 -28
- package/authz/authz-deny-all.js +10 -10
- package/authz/authz-direct-owner-any.js +19 -18
- package/authz/authz-direct-owner.js +17 -16
- package/authz/authz-entity-membership.js +39 -38
- package/authz/authz-member-list.js +17 -16
- package/authz/authz-membership-check.js +34 -34
- package/authz/authz-not-read-only.js +23 -22
- package/authz/authz-org-hierarchy.js +33 -31
- package/authz/authz-peer-ownership.js +40 -39
- package/authz/authz-publishable.js +26 -24
- package/authz/authz-related-entity-membership.js +57 -55
- package/authz/authz-related-member-list.js +35 -32
- package/authz/authz-related-peer-ownership.js +62 -59
- package/authz/authz-temporal.js +32 -30
- package/authz/index.d.ts +9 -9
- package/authz/index.js +19 -19
- package/blueprint-types.generated.d.ts +10 -17
- package/blueprint-types.generated.js +1 -1
- package/codegen/generate-types.js +10 -21
- package/data/data-composite-field.js +27 -25
- package/data/data-direct-owner.js +24 -23
- package/data/data-entity-membership.js +24 -23
- package/data/data-force-current-user.js +17 -16
- package/data/data-id.js +16 -15
- package/data/data-immutable-fields.js +20 -19
- package/data/data-inflection.js +33 -32
- package/data/data-inherit-from-parent.js +31 -29
- package/data/data-job-trigger.js +87 -84
- package/data/data-jsonb.js +27 -26
- package/data/data-owned-fields.js +25 -23
- package/data/data-ownership-in-entity.js +21 -21
- package/data/data-peoplestamps.js +19 -19
- package/data/data-publishable.js +16 -16
- package/data/data-slug.js +21 -19
- package/data/data-soft-delete.js +14 -14
- package/data/data-status-field.js +32 -31
- package/data/data-tags.js +23 -22
- package/data/data-timestamps.js +15 -15
- package/data/index.d.ts +17 -17
- package/data/index.js +35 -35
- package/data/search-bm25.js +34 -33
- package/data/search-full-text.js +49 -47
- package/data/search-spatial-aggregate.js +77 -74
- package/data/search-spatial.js +51 -50
- package/data/search-trgm.js +20 -19
- package/data/search-unified.js +170 -162
- package/data/search-vector.js +104 -101
- package/data/table-organization-settings.js +13 -13
- package/data/table-user-profiles.js +13 -13
- package/data/table-user-settings.js +13 -13
- package/esm/authz/authz-allow-all.js +10 -10
- package/esm/authz/authz-composite.js +28 -28
- package/esm/authz/authz-deny-all.js +10 -10
- package/esm/authz/authz-direct-owner-any.js +19 -18
- package/esm/authz/authz-direct-owner.js +17 -16
- package/esm/authz/authz-entity-membership.js +39 -38
- package/esm/authz/authz-member-list.js +17 -16
- package/esm/authz/authz-membership-check.js +34 -34
- package/esm/authz/authz-not-read-only.js +23 -22
- package/esm/authz/authz-org-hierarchy.js +33 -31
- package/esm/authz/authz-peer-ownership.js +40 -39
- package/esm/authz/authz-publishable.js +26 -24
- package/esm/authz/authz-related-entity-membership.js +57 -55
- package/esm/authz/authz-related-member-list.js +35 -32
- package/esm/authz/authz-related-peer-ownership.js +62 -59
- package/esm/authz/authz-temporal.js +32 -30
- package/esm/authz/index.d.ts +9 -9
- package/esm/authz/index.js +9 -9
- package/esm/blueprint-types.generated.d.ts +10 -17
- package/esm/blueprint-types.generated.js +1 -1
- package/esm/codegen/generate-types.js +10 -21
- package/esm/data/data-composite-field.js +27 -25
- package/esm/data/data-direct-owner.js +24 -23
- package/esm/data/data-entity-membership.js +24 -23
- package/esm/data/data-force-current-user.js +17 -16
- package/esm/data/data-id.js +16 -15
- package/esm/data/data-immutable-fields.js +20 -19
- package/esm/data/data-inflection.js +33 -32
- package/esm/data/data-inherit-from-parent.js +31 -29
- package/esm/data/data-job-trigger.js +87 -84
- package/esm/data/data-jsonb.js +27 -26
- package/esm/data/data-owned-fields.js +25 -23
- package/esm/data/data-ownership-in-entity.js +21 -21
- package/esm/data/data-peoplestamps.js +19 -19
- package/esm/data/data-publishable.js +16 -16
- package/esm/data/data-slug.js +21 -19
- package/esm/data/data-soft-delete.js +14 -14
- package/esm/data/data-status-field.js +32 -31
- package/esm/data/data-tags.js +23 -22
- package/esm/data/data-timestamps.js +15 -15
- package/esm/data/index.d.ts +17 -17
- package/esm/data/index.js +17 -17
- package/esm/data/search-bm25.js +34 -33
- package/esm/data/search-full-text.js +49 -47
- package/esm/data/search-spatial-aggregate.js +77 -74
- package/esm/data/search-spatial.js +51 -50
- package/esm/data/search-trgm.js +20 -19
- package/esm/data/search-unified.js +170 -162
- package/esm/data/search-vector.js +104 -101
- package/esm/data/table-organization-settings.js +13 -13
- package/esm/data/table-user-profiles.js +13 -13
- package/esm/data/table-user-settings.js +13 -13
- package/esm/index.d.ts +3 -3
- package/esm/index.js +3 -3
- package/esm/module-presets/auth-email-magic.js +2 -2
- package/esm/module-presets/auth-email.js +8 -8
- package/esm/module-presets/auth-passkey.js +4 -4
- package/esm/module-presets/auth-sso.js +7 -7
- package/esm/module-presets/full.js +1 -1
- package/esm/module-presets/index.d.ts +5 -5
- package/esm/module-presets/index.js +4 -4
- package/esm/relation/index.d.ts +1 -1
- package/esm/relation/index.js +1 -1
- package/esm/relation/relation-belongs-to.js +41 -40
- package/esm/relation/relation-has-many.js +42 -41
- package/esm/relation/relation-has-one.js +42 -41
- package/esm/relation/relation-many-to-many.js +70 -68
- package/esm/relation/relation-spatial.js +54 -54
- package/esm/view/index.d.ts +3 -3
- package/esm/view/index.js +3 -3
- package/esm/view/view-aggregated.js +50 -48
- package/esm/view/view-composite.js +18 -18
- package/esm/view/view-filtered-table.js +37 -36
- package/esm/view/view-joined-tables.js +65 -61
- package/esm/view/view-table-projection.js +29 -28
- package/index.d.ts +3 -3
- package/index.js +3 -3
- package/module-presets/auth-email-magic.js +2 -2
- package/module-presets/auth-email.js +8 -8
- package/module-presets/auth-passkey.js +4 -4
- package/module-presets/auth-sso.js +7 -7
- package/module-presets/full.js +1 -1
- package/module-presets/index.d.ts +5 -5
- package/module-presets/index.js +7 -7
- package/package.json +2 -2
- package/relation/index.d.ts +1 -1
- package/relation/index.js +3 -3
- package/relation/relation-belongs-to.js +41 -40
- package/relation/relation-has-many.js +42 -41
- package/relation/relation-has-one.js +42 -41
- package/relation/relation-many-to-many.js +70 -68
- package/relation/relation-spatial.js +54 -54
- package/view/index.d.ts +3 -3
- package/view/index.js +7 -7
- package/view/view-aggregated.js +50 -48
- package/view/view-composite.js +18 -18
- package/view/view-filtered-table.js +37 -36
- package/view/view-joined-tables.js +65 -61
- package/view/view-table-projection.js +29 -28
|
@@ -1,205 +1,213 @@
|
|
|
1
1
|
export const SearchUnified = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
2
|
+
name: 'SearchUnified',
|
|
3
|
+
slug: 'search_unified',
|
|
4
|
+
category: 'search',
|
|
5
|
+
display_name: 'Unified Search',
|
|
6
|
+
description: 'Composite node type that orchestrates multiple search modalities (full-text search, BM25, embeddings, trigram) on a single table. Configures per-table search score weights, normalization strategy, and recency boost via the @searchConfig smart tag.',
|
|
7
|
+
parameter_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
full_text_search: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
description: 'SearchFullText parameters. Omit to skip FTS setup.',
|
|
13
|
+
properties: {
|
|
14
|
+
field_name: {
|
|
15
|
+
type: 'string',
|
|
16
|
+
format: 'column-ref',
|
|
17
|
+
default: 'search'
|
|
18
|
+
},
|
|
19
|
+
source_fields: {
|
|
20
|
+
type: 'array',
|
|
21
|
+
items: {
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
field: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
format: 'column-ref'
|
|
25
27
|
},
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
weight: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
enum: [
|
|
31
|
+
'A',
|
|
32
|
+
'B',
|
|
33
|
+
'C',
|
|
34
|
+
'D'
|
|
33
35
|
]
|
|
34
36
|
},
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
lang: {
|
|
38
|
+
type: 'string'
|
|
37
39
|
}
|
|
38
40
|
},
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
required: [
|
|
42
|
+
'field'
|
|
41
43
|
]
|
|
42
44
|
}
|
|
43
45
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
search_score_weight: {
|
|
47
|
+
type: 'number',
|
|
48
|
+
default: 1
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
},
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
bm25: {
|
|
53
|
+
type: 'object',
|
|
54
|
+
description: 'SearchBm25 parameters. Omit to skip BM25 setup.',
|
|
55
|
+
properties: {
|
|
56
|
+
field_name: {
|
|
57
|
+
type: 'string',
|
|
58
|
+
format: 'column-ref'
|
|
59
|
+
},
|
|
60
|
+
text_config: {
|
|
61
|
+
type: 'string',
|
|
62
|
+
default: 'english'
|
|
63
|
+
},
|
|
64
|
+
k1: {
|
|
65
|
+
type: 'number'
|
|
66
|
+
},
|
|
67
|
+
b: {
|
|
68
|
+
type: 'number'
|
|
69
|
+
},
|
|
70
|
+
search_score_weight: {
|
|
71
|
+
type: 'number',
|
|
72
|
+
default: 1
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
75
|
},
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
76
|
+
embedding: {
|
|
77
|
+
type: 'object',
|
|
78
|
+
description: 'SearchVector parameters. Omit to skip embedding setup.',
|
|
79
|
+
properties: {
|
|
80
|
+
field_name: {
|
|
81
|
+
type: 'string',
|
|
82
|
+
format: 'column-ref',
|
|
83
|
+
default: 'embedding'
|
|
84
|
+
},
|
|
85
|
+
dimensions: {
|
|
86
|
+
type: 'integer',
|
|
87
|
+
default: 768
|
|
88
|
+
},
|
|
89
|
+
index_method: {
|
|
90
|
+
type: 'string',
|
|
91
|
+
enum: [
|
|
92
|
+
'hnsw',
|
|
93
|
+
'ivfflat'
|
|
90
94
|
]
|
|
91
95
|
},
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
metric: {
|
|
97
|
+
type: 'string',
|
|
98
|
+
enum: [
|
|
99
|
+
'cosine',
|
|
100
|
+
'l2',
|
|
101
|
+
'ip'
|
|
98
102
|
]
|
|
99
103
|
},
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
source_fields: {
|
|
105
|
+
type: 'array',
|
|
106
|
+
items: {
|
|
107
|
+
type: 'string',
|
|
108
|
+
format: 'column-ref'
|
|
104
109
|
}
|
|
105
110
|
},
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
},
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
111
|
+
search_score_weight: {
|
|
112
|
+
type: 'number',
|
|
113
|
+
default: 1
|
|
114
|
+
},
|
|
115
|
+
chunks: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
description: 'Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.',
|
|
118
|
+
properties: {
|
|
119
|
+
content_field_name: {
|
|
120
|
+
type: 'string',
|
|
121
|
+
format: 'column-ref',
|
|
122
|
+
description: 'Name of the text content column in the chunks table',
|
|
123
|
+
default: 'content'
|
|
118
124
|
},
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
125
|
+
chunk_size: {
|
|
126
|
+
type: 'integer',
|
|
127
|
+
description: 'Maximum number of characters per chunk',
|
|
128
|
+
default: 1000
|
|
123
129
|
},
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
130
|
+
chunk_overlap: {
|
|
131
|
+
type: 'integer',
|
|
132
|
+
description: 'Number of overlapping characters between consecutive chunks',
|
|
133
|
+
default: 200
|
|
128
134
|
},
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
135
|
+
chunk_strategy: {
|
|
136
|
+
type: 'string',
|
|
137
|
+
enum: [
|
|
138
|
+
'fixed',
|
|
139
|
+
'sentence',
|
|
140
|
+
'paragraph',
|
|
141
|
+
'semantic'
|
|
136
142
|
],
|
|
137
|
-
|
|
138
|
-
|
|
143
|
+
description: 'Strategy for splitting text into chunks',
|
|
144
|
+
default: 'fixed'
|
|
139
145
|
},
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
146
|
+
metadata_fields: {
|
|
147
|
+
type: 'object',
|
|
148
|
+
description: 'Metadata fields from parent to copy into chunks'
|
|
143
149
|
},
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
150
|
+
enqueue_chunking_job: {
|
|
151
|
+
type: 'boolean',
|
|
152
|
+
description: 'Whether to auto-enqueue a chunking job on insert/update',
|
|
153
|
+
default: true
|
|
148
154
|
},
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
155
|
+
chunking_task_name: {
|
|
156
|
+
type: 'string',
|
|
157
|
+
description: 'Task identifier for the chunking job queue',
|
|
158
|
+
default: 'generate_chunks'
|
|
153
159
|
}
|
|
154
160
|
}
|
|
155
161
|
}
|
|
156
162
|
}
|
|
157
163
|
},
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
164
|
+
trgm_fields: {
|
|
165
|
+
type: 'array',
|
|
166
|
+
items: {
|
|
167
|
+
type: 'string',
|
|
168
|
+
format: 'column-ref'
|
|
162
169
|
},
|
|
163
|
-
|
|
170
|
+
description: 'Field names to tag with @trgmSearch for fuzzy/typo-tolerant matching'
|
|
164
171
|
},
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
},
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
172
|
+
search_config: {
|
|
173
|
+
type: 'object',
|
|
174
|
+
description: 'Unified search score configuration written to @searchConfig smart tag',
|
|
175
|
+
properties: {
|
|
176
|
+
weights: {
|
|
177
|
+
type: 'object',
|
|
178
|
+
description: 'Per-algorithm weights: {tsv: 1.5, bm25: 1.0, pgvector: 0.8, trgm: 0.3}'
|
|
179
|
+
},
|
|
180
|
+
normalization: {
|
|
181
|
+
type: 'string',
|
|
182
|
+
enum: [
|
|
183
|
+
'linear',
|
|
184
|
+
'sigmoid'
|
|
178
185
|
],
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
},
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
},
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
186
|
+
description: 'Score normalization strategy',
|
|
187
|
+
default: 'linear'
|
|
188
|
+
},
|
|
189
|
+
boost_recent: {
|
|
190
|
+
type: 'boolean',
|
|
191
|
+
description: 'Enable recency boost for search results',
|
|
192
|
+
default: false
|
|
193
|
+
},
|
|
194
|
+
boost_recency_field: {
|
|
195
|
+
type: 'string',
|
|
196
|
+
format: 'column-ref',
|
|
197
|
+
description: 'Timestamp field for recency boost (e.g. created_at, updated_at)'
|
|
198
|
+
},
|
|
199
|
+
boost_recency_decay: {
|
|
200
|
+
type: 'number',
|
|
201
|
+
description: 'Decay rate for recency boost (0-1, lower = faster decay)',
|
|
202
|
+
default: 0.5
|
|
195
203
|
}
|
|
196
204
|
}
|
|
197
205
|
}
|
|
198
206
|
}
|
|
199
207
|
},
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
208
|
+
tags: [
|
|
209
|
+
'search',
|
|
210
|
+
'composite',
|
|
211
|
+
'schema'
|
|
204
212
|
]
|
|
205
213
|
};
|
|
@@ -1,130 +1,133 @@
|
|
|
1
1
|
export const SearchVector = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
name: 'SearchVector',
|
|
3
|
+
slug: 'search_vector',
|
|
4
|
+
category: 'search',
|
|
5
|
+
display_name: 'Vector Search',
|
|
6
|
+
description: 'Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip), stale tracking strategies (column, null, hash), and automatic job enqueue triggers for embedding generation.',
|
|
7
|
+
parameter_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
field_name: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
format: 'column-ref',
|
|
13
|
+
description: 'Name of the vector column',
|
|
14
|
+
default: 'embedding'
|
|
14
15
|
},
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
dimensions: {
|
|
17
|
+
type: 'integer',
|
|
18
|
+
description: 'Vector dimensions (e.g. 384, 768, 1536, 3072)',
|
|
19
|
+
default: 768
|
|
19
20
|
},
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
index_method: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
enum: [
|
|
24
|
+
'hnsw',
|
|
25
|
+
'ivfflat'
|
|
25
26
|
],
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
description: 'Index type for similarity search',
|
|
28
|
+
default: 'hnsw'
|
|
28
29
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
metric: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
enum: [
|
|
33
|
+
'cosine',
|
|
34
|
+
'l2',
|
|
35
|
+
'ip'
|
|
35
36
|
],
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
description: 'Distance metric (cosine, l2, ip)',
|
|
38
|
+
default: 'cosine'
|
|
38
39
|
},
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
index_options: {
|
|
41
|
+
type: 'object',
|
|
42
|
+
description: 'Index-specific options. HNSW: {m, ef_construction}. IVFFlat: {lists}.',
|
|
43
|
+
default: {}
|
|
43
44
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
include_stale_field: {
|
|
46
|
+
type: 'boolean',
|
|
47
|
+
description: 'When stale_strategy is column, adds an embedding_stale boolean field',
|
|
48
|
+
default: true
|
|
48
49
|
},
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
source_fields: {
|
|
51
|
+
type: 'array',
|
|
52
|
+
items: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
format: 'column-ref'
|
|
53
55
|
},
|
|
54
|
-
|
|
56
|
+
description: 'Column names that feed the embedding. Used by stale trigger to detect content changes.'
|
|
55
57
|
},
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
enqueue_job: {
|
|
59
|
+
type: 'boolean',
|
|
60
|
+
description: 'Auto-create trigger that enqueues embedding generation jobs',
|
|
61
|
+
default: true
|
|
60
62
|
},
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
job_task_name: {
|
|
64
|
+
type: 'string',
|
|
65
|
+
description: 'Task identifier for the job queue',
|
|
66
|
+
default: 'generate_embedding'
|
|
65
67
|
},
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
stale_strategy: {
|
|
69
|
+
type: 'string',
|
|
70
|
+
enum: [
|
|
71
|
+
'column',
|
|
72
|
+
'null',
|
|
73
|
+
'hash'
|
|
72
74
|
],
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
description: 'Strategy for tracking embedding staleness. column: embedding_stale boolean. null: set embedding to NULL. hash: md5 hash of source fields.',
|
|
76
|
+
default: 'column'
|
|
75
77
|
},
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
78
|
+
chunks: {
|
|
79
|
+
type: 'object',
|
|
80
|
+
description: 'Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.',
|
|
81
|
+
properties: {
|
|
82
|
+
content_field_name: {
|
|
83
|
+
type: 'string',
|
|
84
|
+
format: 'column-ref',
|
|
85
|
+
description: 'Name of the text content column in the chunks table',
|
|
86
|
+
default: 'content'
|
|
84
87
|
},
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
chunk_size: {
|
|
89
|
+
type: 'integer',
|
|
90
|
+
description: 'Maximum number of characters per chunk',
|
|
91
|
+
default: 1000
|
|
89
92
|
},
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
chunk_overlap: {
|
|
94
|
+
type: 'integer',
|
|
95
|
+
description: 'Number of overlapping characters between consecutive chunks',
|
|
96
|
+
default: 200
|
|
94
97
|
},
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
chunk_strategy: {
|
|
99
|
+
type: 'string',
|
|
100
|
+
enum: [
|
|
101
|
+
'fixed',
|
|
102
|
+
'sentence',
|
|
103
|
+
'paragraph',
|
|
104
|
+
'semantic'
|
|
102
105
|
],
|
|
103
|
-
|
|
104
|
-
|
|
106
|
+
description: 'Strategy for splitting text into chunks',
|
|
107
|
+
default: 'fixed'
|
|
105
108
|
},
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
metadata_fields: {
|
|
110
|
+
type: 'object',
|
|
111
|
+
description: 'Metadata fields from parent to copy into chunks'
|
|
109
112
|
},
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
113
|
+
enqueue_chunking_job: {
|
|
114
|
+
type: 'boolean',
|
|
115
|
+
description: 'Whether to auto-enqueue a chunking job on insert/update',
|
|
116
|
+
default: true
|
|
114
117
|
},
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
118
|
+
chunking_task_name: {
|
|
119
|
+
type: 'string',
|
|
120
|
+
description: 'Task identifier for the chunking job queue',
|
|
121
|
+
default: 'generate_chunks'
|
|
119
122
|
}
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
125
|
}
|
|
123
126
|
},
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
tags: [
|
|
128
|
+
'embedding',
|
|
129
|
+
'vector',
|
|
130
|
+
'ai',
|
|
131
|
+
'schema'
|
|
129
132
|
]
|
|
130
133
|
};
|