garden.engram.defs
Schema Diff
+158 -1
Compatibility Analysis
Breaking Changes Detected
13 breaking changes, 39 non-breaking changes.
Breaking Changes (13)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.kind", kind: "prop", name: Some("kind") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.term", kind: "prop", name: Some("term") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.field", kind: "prop", name: Some("field") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#byteSlice", src: "garden.engram.defs#byteSlice", tgt: "garden.engram.defs#byteSlice.byteEnd", kind: "prop", name: Some("byteEnd") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#byteSlice", src: "garden.engram.defs#byteSlice", tgt: "garden.engram.defs#byteSlice.byteStart", kind: "prop", name: Some("byteStart") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.text", kind: "prop", name: Some("text") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.field", kind: "prop", name: Some("field") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.highlights", kind: "prop", name: Some("highlights") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#vectorMatch", src: "garden.engram.defs#vectorMatch", tgt: "garden.engram.defs#vectorMatch.rank", kind: "prop", name: Some("rank") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#vectorMatch", src: "garden.engram.defs#vectorMatch", tgt: "garden.engram.defs#vectorMatch.similarity", kind: "prop", name: Some("similarity") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.score", kind: "prop", name: Some("score") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.terms", kind: "prop", name: Some("terms") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.rank", kind: "prop", name: Some("rank") }
Non-Breaking Changes (39)
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#byteSlice" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#byteSlice.byteEnd" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#byteSlice.byteStart" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.rank" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.score" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.terms" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.terms:items" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView.fusion" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView.keyword" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView.snippet" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#matchView.vector" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#memoryView.match" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView.field" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView.highlights" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView.highlights:items" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#snippetView.text" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#termMatch" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#termMatch.field" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#termMatch.kind" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#termMatch.term" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#vectorMatch" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#vectorMatch.rank" }
- AddedVertex AddedVertex { vertex_id: "garden.engram.defs#vectorMatch.similarity" }
- AddedEdge AddedEdge { src: "garden.engram.defs#keywordMatch.terms", tgt: "garden.engram.defs#keywordMatch.terms:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "garden.engram.defs#keywordMatch.terms:items", tgt: "garden.engram.defs#termMatch", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.fusion", kind: "prop", name: Some("fusion") }
- AddedEdge AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.keyword", kind: "prop", name: Some("keyword") }
- AddedEdge AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.snippet", kind: "prop", name: Some("snippet") }
- AddedEdge AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.vector", kind: "prop", name: Some("vector") }
- AddedEdge AddedEdge { src: "garden.engram.defs#matchView.keyword", tgt: "garden.engram.defs#keywordMatch", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "garden.engram.defs#matchView.snippet", tgt: "garden.engram.defs#snippetView", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "garden.engram.defs#matchView.vector", tgt: "garden.engram.defs#vectorMatch", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "garden.engram.defs#memoryView", tgt: "garden.engram.defs#memoryView.match", kind: "prop", name: Some("match") }
- AddedEdge AddedEdge { src: "garden.engram.defs#memoryView.match", tgt: "garden.engram.defs#matchView", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "garden.engram.defs#snippetView.highlights", tgt: "garden.engram.defs#snippetView.highlights:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "garden.engram.defs#snippetView.highlights:items", tgt: "garden.engram.defs#byteSlice", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "garden.engram.defs#byteSlice" }AddedVertex { vertex_id: "garden.engram.defs#byteSlice.byteEnd" }AddedVertex { vertex_id: "garden.engram.defs#byteSlice.byteStart" }AddedVertex { vertex_id: "garden.engram.defs#keywordMatch" }AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.rank" }AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.score" }AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.terms" }AddedVertex { vertex_id: "garden.engram.defs#keywordMatch.terms:items" }AddedVertex { vertex_id: "garden.engram.defs#matchView" }AddedVertex { vertex_id: "garden.engram.defs#matchView.fusion" }AddedVertex { vertex_id: "garden.engram.defs#matchView.keyword" }AddedVertex { vertex_id: "garden.engram.defs#matchView.snippet" }AddedVertex { vertex_id: "garden.engram.defs#matchView.vector" }AddedVertex { vertex_id: "garden.engram.defs#memoryView.match" }AddedVertex { vertex_id: "garden.engram.defs#snippetView" }AddedVertex { vertex_id: "garden.engram.defs#snippetView.field" }AddedVertex { vertex_id: "garden.engram.defs#snippetView.highlights" }AddedVertex { vertex_id: "garden.engram.defs#snippetView.highlights:items" }AddedVertex { vertex_id: "garden.engram.defs#snippetView.text" }AddedVertex { vertex_id: "garden.engram.defs#termMatch" }AddedVertex { vertex_id: "garden.engram.defs#termMatch.field" }AddedVertex { vertex_id: "garden.engram.defs#termMatch.kind" }AddedVertex { vertex_id: "garden.engram.defs#termMatch.term" }AddedVertex { vertex_id: "garden.engram.defs#vectorMatch" }AddedVertex { vertex_id: "garden.engram.defs#vectorMatch.rank" }AddedVertex { vertex_id: "garden.engram.defs#vectorMatch.similarity" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#vectorMatch", src: "garden.engram.defs#vectorMatch", tgt: "garden.engram.defs#vectorMatch.rank", kind: "prop", name: Some("rank") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#vectorMatch", src: "garden.engram.defs#vectorMatch", tgt: "garden.engram.defs#vectorMatch.similarity", kind: "prop", name: Some("similarity") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.text", kind: "prop", name: Some("text") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.field", kind: "prop", name: Some("field") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#snippetView", src: "garden.engram.defs#snippetView", tgt: "garden.engram.defs#snippetView.highlights", kind: "prop", name: Some("highlights") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.score", kind: "prop", name: Some("score") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.terms", kind: "prop", name: Some("terms") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#keywordMatch", src: "garden.engram.defs#keywordMatch", tgt: "garden.engram.defs#keywordMatch.rank", kind: "prop", name: Some("rank") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.kind", kind: "prop", name: Some("kind") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.term", kind: "prop", name: Some("term") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#termMatch", src: "garden.engram.defs#termMatch", tgt: "garden.engram.defs#termMatch.field", kind: "prop", name: Some("field") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#byteSlice", src: "garden.engram.defs#byteSlice", tgt: "garden.engram.defs#byteSlice.byteEnd", kind: "prop", name: Some("byteEnd") }
- Breaking: RequiredEdgeAdded { vertex_id: "garden.engram.defs#byteSlice", src: "garden.engram.defs#byteSlice", tgt: "garden.engram.defs#byteSlice.byteStart", kind: "prop", name: Some("byteStart") }
- Non-breaking: AddedEdge { src: "garden.engram.defs#keywordMatch.terms", tgt: "garden.engram.defs#keywordMatch.terms:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "garden.engram.defs#keywordMatch.terms:items", tgt: "garden.engram.defs#termMatch", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.fusion", kind: "prop", name: Some("fusion") }
- Non-breaking: AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.keyword", kind: "prop", name: Some("keyword") }
- Non-breaking: AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.snippet", kind: "prop", name: Some("snippet") }
- Non-breaking: AddedEdge { src: "garden.engram.defs#matchView", tgt: "garden.engram.defs#matchView.vector", kind: "prop", name: Some("vector") }
- Non-breaking: AddedEdge { src: "garden.engram.defs#matchView.keyword", tgt: "garden.engram.defs#keywordMatch", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "garden.engram.defs#matchView.snippet", tgt: "garden.engram.defs#snippetView", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "garden.engram.defs#matchView.vector", tgt: "garden.engram.defs#vectorMatch", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "garden.engram.defs#memoryView", tgt: "garden.engram.defs#memoryView.match", kind: "prop", name: Some("match") }
- Non-breaking: AddedEdge { src: "garden.engram.defs#memoryView.match", tgt: "garden.engram.defs#matchView", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "garden.engram.defs#snippetView.highlights", tgt: "garden.engram.defs#snippetView.highlights:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "garden.engram.defs#snippetView.highlights:items", tgt: "garden.engram.defs#byteSlice", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
+
"byteSlice": {
5
+
"description": "A UTF-8 byte range in a snippet's text, like a rich-text facet's index.",
6
+
"properties": {
7
+
"byteEnd": {
8
+
"minimum": 0,
9
+
"type": "integer"
10
+
},
11
+
"byteStart": {
12
+
"minimum": 0,
13
+
"type": "integer"
14
+
}
15
+
},
16
+
"required": [
17
+
"byteStart",
18
+
"byteEnd"
19
+
],
20
+
"type": "object"
21
+
},
4
22
"embedding": {
5
23
"description": "A vector for a memory, computed by its author from the memory's text and tags (with the space's document prefix).",
6
24
"properties": {
7
25
"dims": {
8
26
"maximum": 16000,
9
27
"minimum": 1,
10
28
"type": "integer"
11
29
},
12
30
"encoding": {
13
31
"description": "f16le: little-endian IEEE half precision, 2 bytes per dimension.",
14
32
"knownValues": [
15
33
"f16le"
16
34
],
17
35
"type": "string"
18
36
},
19
37
"model": {
20
38
"maxLength": 256,
21
39
"type": "string"
22
40
},
23
41
"modelDigest": {
24
42
"maxLength": 256,
25
43
"type": "string"
26
44
},
27
45
"vector": {
28
46
"maxLength": 32000,
29
47
"type": "bytes"
30
48
}
31
49
},
32
50
"required": [
33
51
"model",
34
52
"modelDigest",
35
53
"dims",
36
54
"encoding",
37
55
"vector"
38
56
],
39
57
"type": "object"
40
58
},
59
+
"keywordMatch": {
60
+
"properties": {
61
+
"rank": {
62
+
"description": "The result's rank by keyword score among the results.",
63
+
"minimum": 1,
64
+
"type": "integer"
65
+
},
66
+
"score": {
67
+
"description": "The BM25 keyword score × 100.",
68
+
"minimum": 0,
69
+
"type": "integer"
70
+
},
71
+
"terms": {
72
+
"description": "The query terms the memory contains: per query word, its exact form if present, else its stem, else an identifier's parts.",
73
+
"items": {
74
+
"ref": "#termMatch",
75
+
"type": "ref"
76
+
},
77
+
"type": "array"
78
+
}
79
+
},
80
+
"required": [
81
+
"rank",
82
+
"score",
83
+
"terms"
84
+
],
85
+
"type": "object"
86
+
},
87
+
"matchView": {
88
+
"description": "Why a search result matched.",
89
+
"properties": {
90
+
"fusion": {
91
+
"description": "Hybrid results: how the vector and keyword scores were combined.",
92
+
"knownValues": [
93
+
"convex",
94
+
"rrf"
95
+
],
96
+
"type": "string"
97
+
},
98
+
"keyword": {
99
+
"description": "Present when any query term occurs in the memory.",
100
+
"ref": "#keywordMatch",
101
+
"type": "ref"
102
+
},
103
+
"snippet": {
104
+
"ref": "#snippetView",
105
+
"type": "ref"
106
+
},
107
+
"vector": {
108
+
"ref": "#vectorMatch",
109
+
"type": "ref"
110
+
}
111
+
},
112
+
"type": "object"
113
+
},
41
114
"memoryView": {
42
115
"properties": {
43
116
"author": {
44
117
"format": "did",
45
118
"type": "string"
46
119
},
47
120
"cid": {
48
121
"format": "cid",
49
122
"type": "string"
50
123
},
51
124
"createdAt": {
52
125
"format": "datetime",
53
126
"type": "string"
54
127
},
55
128
"indexedAt": {
56
129
"format": "datetime",
57
130
"type": "string"
58
131
},
132
+
"match": {
133
+
"description": "Hybrid and keyword search results only: why the memory matched.",
134
+
"ref": "#matchView",
135
+
"type": "ref"
136
+
},
59
137
"similarity": {
60
-
"description": "Search results only: cosine similarity to the query, scaled to 0-1000.",
138
+
"description": "Search results only: cosine similarity to the query, scaled to 0-1000. Absent from keyword-only results.",
61
139
"maximum": 1000,
62
140
"minimum": 0,
63
141
"type": "integer"
64
142
},
65
143
"source": {
66
144
"type": "string"
67
145
},
68
146
"tags": {
69
147
"items": {
70
148
"type": "string"
71
149
},
72
150
"type": "array"
73
151
},
74
152
"text": {
75
153
"type": "string"
76
154
},
77
155
"uri": {
78
156
"description": "The memory's space record URI: at://{authority}/space/{spaceType}/{skey}/{author}/garden.engram.memory/{rkey}.",
79
157
"type": "string"
80
158
}
81
159
},
82
160
"required": [
83
161
"uri",
84
162
"cid",
85
163
"author",
86
164
"text",
87
165
"tags",
88
166
"createdAt",
89
167
"indexedAt"
90
168
],
91
169
"type": "object"
92
170
},
93
171
"model": {
94
172
"description": "An embedding model, identified exactly. Vectors are comparable only when all three fields match.",
95
173
"properties": {
96
174
"dims": {
97
175
"maximum": 16000,
98
176
"minimum": 1,
99
177
"type": "integer"
100
178
},
101
179
"model": {
102
180
"description": "The model's name, such as nomic-embed-text.",
103
181
"maxLength": 256,
104
182
"type": "string"
105
183
},
106
184
"modelDigest": {
107
185
"description": "Pins the exact model build, such as Ollama's sha256 digest of the model. A name can point to different weights over time.",
108
186
"maxLength": 256,
109
187
"type": "string"
110
188
}
111
189
},
112
190
"required": [
113
191
"model",
114
192
"modelDigest",
115
193
"dims"
116
194
],
117
195
"type": "object"
196
+
},
197
+
"snippetView": {
198
+
"properties": {
199
+
"field": {
200
+
"knownValues": [
201
+
"text",
202
+
"tags",
203
+
"source"
204
+
],
205
+
"type": "string"
206
+
},
207
+
"highlights": {
208
+
"items": {
209
+
"ref": "#byteSlice",
210
+
"type": "ref"
211
+
},
212
+
"type": "array"
213
+
},
214
+
"text": {
215
+
"description": "Up to about 200 characters of the field around the matches, with … where cut.",
216
+
"type": "string"
217
+
}
218
+
},
219
+
"required": [
220
+
"field",
221
+
"text",
222
+
"highlights"
223
+
],
224
+
"type": "object"
225
+
},
226
+
"termMatch": {
227
+
"properties": {
228
+
"field": {
229
+
"knownValues": [
230
+
"text",
231
+
"tags",
232
+
"source"
233
+
],
234
+
"type": "string"
235
+
},
236
+
"kind": {
237
+
"knownValues": [
238
+
"exact",
239
+
"stem",
240
+
"part"
241
+
],
242
+
"type": "string"
243
+
},
244
+
"term": {
245
+
"description": "The normalized term; stems start with ~.",
246
+
"type": "string"
247
+
}
248
+
},
249
+
"required": [
250
+
"term",
251
+
"kind",
252
+
"field"
253
+
],
254
+
"type": "object"
255
+
},
256
+
"vectorMatch": {
257
+
"properties": {
258
+
"rank": {
259
+
"description": "The result's rank by similarity among the results.",
260
+
"minimum": 1,
261
+
"type": "integer"
262
+
},
263
+
"similarity": {
264
+
"description": "Cosine similarity, scaled to 0-1000.",
265
+
"maximum": 1000,
266
+
"minimum": 0,
267
+
"type": "integer"
268
+
}
269
+
},
270
+
"required": [
271
+
"rank",
272
+
"similarity"
273
+
],
274
+
"type": "object"
118
275
}
119
276
},
120
277
"id": "garden.engram.defs",
121
278
"lexicon": 1
122
279
}