htm 0.0.1

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.
Files changed (155) hide show
  1. checksums.yaml +7 -0
  2. data/.architecture/decisions/adrs/001-use-postgresql-timescaledb-storage.md +227 -0
  3. data/.architecture/decisions/adrs/002-two-tier-memory-architecture.md +322 -0
  4. data/.architecture/decisions/adrs/003-ollama-default-embedding-provider.md +339 -0
  5. data/.architecture/decisions/adrs/004-multi-robot-shared-memory-hive-mind.md +374 -0
  6. data/.architecture/decisions/adrs/005-rag-based-retrieval-with-hybrid-search.md +443 -0
  7. data/.architecture/decisions/adrs/006-context-assembly-strategies.md +444 -0
  8. data/.architecture/decisions/adrs/007-working-memory-eviction-strategy.md +461 -0
  9. data/.architecture/decisions/adrs/008-robot-identification-system.md +550 -0
  10. data/.architecture/decisions/adrs/009-never-forget-explicit-deletion-only.md +570 -0
  11. data/.architecture/decisions/adrs/010-redis-working-memory-rejected.md +323 -0
  12. data/.architecture/decisions/adrs/011-database-side-embedding-generation-with-pgai.md +585 -0
  13. data/.architecture/decisions/adrs/012-llm-driven-ontology-topic-extraction.md +583 -0
  14. data/.architecture/decisions/adrs/013-activerecord-orm-and-many-to-many-tagging.md +299 -0
  15. data/.architecture/decisions/adrs/014-client-side-embedding-generation-workflow.md +569 -0
  16. data/.architecture/decisions/adrs/015-hierarchical-tag-ontology-and-llm-extraction.md +701 -0
  17. data/.architecture/decisions/adrs/016-async-embedding-and-tag-generation.md +694 -0
  18. data/.architecture/members.yml +144 -0
  19. data/.architecture/reviews/2025-10-29-llm-configuration-and-async-processing-review.md +1137 -0
  20. data/.architecture/reviews/initial-system-analysis.md +330 -0
  21. data/.envrc +32 -0
  22. data/.irbrc +145 -0
  23. data/CHANGELOG.md +150 -0
  24. data/COMMITS.md +196 -0
  25. data/LICENSE +21 -0
  26. data/README.md +1347 -0
  27. data/Rakefile +51 -0
  28. data/SETUP.md +268 -0
  29. data/config/database.yml +67 -0
  30. data/db/migrate/20250101000001_enable_extensions.rb +14 -0
  31. data/db/migrate/20250101000002_create_robots.rb +14 -0
  32. data/db/migrate/20250101000003_create_nodes.rb +42 -0
  33. data/db/migrate/20250101000005_create_tags.rb +38 -0
  34. data/db/migrate/20250101000007_add_node_vector_indexes.rb +30 -0
  35. data/db/schema.sql +473 -0
  36. data/db/seed_data/README.md +100 -0
  37. data/db/seed_data/presidents.md +136 -0
  38. data/db/seed_data/states.md +151 -0
  39. data/db/seeds.rb +208 -0
  40. data/dbdoc/README.md +173 -0
  41. data/dbdoc/public.node_stats.md +48 -0
  42. data/dbdoc/public.node_stats.svg +41 -0
  43. data/dbdoc/public.node_tags.md +40 -0
  44. data/dbdoc/public.node_tags.svg +112 -0
  45. data/dbdoc/public.nodes.md +54 -0
  46. data/dbdoc/public.nodes.svg +118 -0
  47. data/dbdoc/public.nodes_tags.md +39 -0
  48. data/dbdoc/public.nodes_tags.svg +112 -0
  49. data/dbdoc/public.ontology_structure.md +48 -0
  50. data/dbdoc/public.ontology_structure.svg +38 -0
  51. data/dbdoc/public.operations_log.md +42 -0
  52. data/dbdoc/public.operations_log.svg +130 -0
  53. data/dbdoc/public.relationships.md +39 -0
  54. data/dbdoc/public.relationships.svg +41 -0
  55. data/dbdoc/public.robot_activity.md +46 -0
  56. data/dbdoc/public.robot_activity.svg +35 -0
  57. data/dbdoc/public.robots.md +35 -0
  58. data/dbdoc/public.robots.svg +90 -0
  59. data/dbdoc/public.schema_migrations.md +29 -0
  60. data/dbdoc/public.schema_migrations.svg +26 -0
  61. data/dbdoc/public.tags.md +35 -0
  62. data/dbdoc/public.tags.svg +60 -0
  63. data/dbdoc/public.topic_relationships.md +45 -0
  64. data/dbdoc/public.topic_relationships.svg +32 -0
  65. data/dbdoc/schema.json +1437 -0
  66. data/dbdoc/schema.svg +154 -0
  67. data/docs/api/database.md +806 -0
  68. data/docs/api/embedding-service.md +532 -0
  69. data/docs/api/htm.md +797 -0
  70. data/docs/api/index.md +259 -0
  71. data/docs/api/long-term-memory.md +1096 -0
  72. data/docs/api/working-memory.md +665 -0
  73. data/docs/architecture/adrs/001-postgresql-timescaledb.md +314 -0
  74. data/docs/architecture/adrs/002-two-tier-memory.md +411 -0
  75. data/docs/architecture/adrs/003-ollama-embeddings.md +421 -0
  76. data/docs/architecture/adrs/004-hive-mind.md +437 -0
  77. data/docs/architecture/adrs/005-rag-retrieval.md +531 -0
  78. data/docs/architecture/adrs/006-context-assembly.md +496 -0
  79. data/docs/architecture/adrs/007-eviction-strategy.md +645 -0
  80. data/docs/architecture/adrs/008-robot-identification.md +625 -0
  81. data/docs/architecture/adrs/009-never-forget.md +648 -0
  82. data/docs/architecture/adrs/010-redis-working-memory-rejected.md +323 -0
  83. data/docs/architecture/adrs/011-pgai-integration.md +494 -0
  84. data/docs/architecture/adrs/index.md +215 -0
  85. data/docs/architecture/hive-mind.md +736 -0
  86. data/docs/architecture/index.md +351 -0
  87. data/docs/architecture/overview.md +538 -0
  88. data/docs/architecture/two-tier-memory.md +873 -0
  89. data/docs/assets/css/custom.css +83 -0
  90. data/docs/assets/images/htm-core-components.svg +63 -0
  91. data/docs/assets/images/htm-database-schema.svg +93 -0
  92. data/docs/assets/images/htm-hive-mind-architecture.svg +125 -0
  93. data/docs/assets/images/htm-importance-scoring-framework.svg +83 -0
  94. data/docs/assets/images/htm-layered-architecture.svg +71 -0
  95. data/docs/assets/images/htm-long-term-memory-architecture.svg +115 -0
  96. data/docs/assets/images/htm-working-memory-architecture.svg +120 -0
  97. data/docs/assets/images/htm.jpg +0 -0
  98. data/docs/assets/images/htm_demo.gif +0 -0
  99. data/docs/assets/js/mathjax.js +18 -0
  100. data/docs/assets/videos/htm_video.mp4 +0 -0
  101. data/docs/database_rake_tasks.md +322 -0
  102. data/docs/development/contributing.md +787 -0
  103. data/docs/development/index.md +336 -0
  104. data/docs/development/schema.md +596 -0
  105. data/docs/development/setup.md +719 -0
  106. data/docs/development/testing.md +819 -0
  107. data/docs/guides/adding-memories.md +824 -0
  108. data/docs/guides/context-assembly.md +1009 -0
  109. data/docs/guides/getting-started.md +577 -0
  110. data/docs/guides/index.md +118 -0
  111. data/docs/guides/long-term-memory.md +941 -0
  112. data/docs/guides/multi-robot.md +866 -0
  113. data/docs/guides/recalling-memories.md +927 -0
  114. data/docs/guides/search-strategies.md +953 -0
  115. data/docs/guides/working-memory.md +717 -0
  116. data/docs/index.md +214 -0
  117. data/docs/installation.md +477 -0
  118. data/docs/multi_framework_support.md +519 -0
  119. data/docs/quick-start.md +655 -0
  120. data/docs/setup_local_database.md +302 -0
  121. data/docs/using_rake_tasks_in_your_app.md +383 -0
  122. data/examples/basic_usage.rb +93 -0
  123. data/examples/cli_app/README.md +317 -0
  124. data/examples/cli_app/htm_cli.rb +270 -0
  125. data/examples/custom_llm_configuration.rb +183 -0
  126. data/examples/example_app/Rakefile +71 -0
  127. data/examples/example_app/app.rb +206 -0
  128. data/examples/sinatra_app/Gemfile +21 -0
  129. data/examples/sinatra_app/app.rb +335 -0
  130. data/lib/htm/active_record_config.rb +113 -0
  131. data/lib/htm/configuration.rb +342 -0
  132. data/lib/htm/database.rb +594 -0
  133. data/lib/htm/embedding_service.rb +115 -0
  134. data/lib/htm/errors.rb +34 -0
  135. data/lib/htm/job_adapter.rb +154 -0
  136. data/lib/htm/jobs/generate_embedding_job.rb +65 -0
  137. data/lib/htm/jobs/generate_tags_job.rb +82 -0
  138. data/lib/htm/long_term_memory.rb +965 -0
  139. data/lib/htm/models/node.rb +109 -0
  140. data/lib/htm/models/node_tag.rb +33 -0
  141. data/lib/htm/models/robot.rb +52 -0
  142. data/lib/htm/models/tag.rb +76 -0
  143. data/lib/htm/railtie.rb +76 -0
  144. data/lib/htm/sinatra.rb +157 -0
  145. data/lib/htm/tag_service.rb +135 -0
  146. data/lib/htm/tasks.rb +38 -0
  147. data/lib/htm/version.rb +5 -0
  148. data/lib/htm/working_memory.rb +182 -0
  149. data/lib/htm.rb +400 -0
  150. data/lib/tasks/db.rake +19 -0
  151. data/lib/tasks/htm.rake +147 -0
  152. data/lib/tasks/jobs.rake +312 -0
  153. data/mkdocs.yml +190 -0
  154. data/scripts/install_local_database.sh +309 -0
  155. metadata +341 -0
data/dbdoc/schema.json ADDED
@@ -0,0 +1,1437 @@
1
+ {
2
+ "name": "htm_development",
3
+ "tables": [
4
+ {
5
+ "name": "public.node_tags",
6
+ "type": "BASE TABLE",
7
+ "comment": "Join table connecting nodes to tags (many-to-many)",
8
+ "columns": [
9
+ {
10
+ "name": "id",
11
+ "type": "bigint",
12
+ "nullable": false,
13
+ "default": "nextval('node_tags_id_seq'::regclass)"
14
+ },
15
+ {
16
+ "name": "node_id",
17
+ "type": "bigint",
18
+ "nullable": false
19
+ },
20
+ {
21
+ "name": "tag_id",
22
+ "type": "bigint",
23
+ "nullable": false
24
+ },
25
+ {
26
+ "name": "created_at",
27
+ "type": "timestamp with time zone",
28
+ "nullable": true,
29
+ "default": "CURRENT_TIMESTAMP"
30
+ }
31
+ ],
32
+ "indexes": [
33
+ {
34
+ "name": "node_tags_pkey",
35
+ "def": "CREATE UNIQUE INDEX node_tags_pkey ON public.node_tags USING btree (id)",
36
+ "table": "public.node_tags",
37
+ "columns": [
38
+ "id"
39
+ ]
40
+ },
41
+ {
42
+ "name": "idx_node_tags_unique",
43
+ "def": "CREATE UNIQUE INDEX idx_node_tags_unique ON public.node_tags USING btree (node_id, tag_id)",
44
+ "table": "public.node_tags",
45
+ "columns": [
46
+ "node_id",
47
+ "tag_id"
48
+ ]
49
+ },
50
+ {
51
+ "name": "idx_node_tags_node_id",
52
+ "def": "CREATE INDEX idx_node_tags_node_id ON public.node_tags USING btree (node_id)",
53
+ "table": "public.node_tags",
54
+ "columns": [
55
+ "node_id"
56
+ ]
57
+ },
58
+ {
59
+ "name": "idx_node_tags_tag_id",
60
+ "def": "CREATE INDEX idx_node_tags_tag_id ON public.node_tags USING btree (tag_id)",
61
+ "table": "public.node_tags",
62
+ "columns": [
63
+ "tag_id"
64
+ ]
65
+ }
66
+ ],
67
+ "constraints": [
68
+ {
69
+ "name": "node_tags_pkey",
70
+ "type": "PRIMARY KEY",
71
+ "def": "PRIMARY KEY (id)",
72
+ "table": "public.node_tags",
73
+ "referenced_table": "",
74
+ "columns": [
75
+ "id"
76
+ ]
77
+ },
78
+ {
79
+ "name": "idx_node_tags_unique",
80
+ "type": "UNIQUE",
81
+ "def": "UNIQUE (node_id, tag_id)",
82
+ "table": "public.node_tags",
83
+ "referenced_table": "",
84
+ "columns": [
85
+ "node_id",
86
+ "tag_id"
87
+ ]
88
+ },
89
+ {
90
+ "name": "fk_rails_ebc9aafd9f",
91
+ "type": "FOREIGN KEY",
92
+ "def": "FOREIGN KEY (node_id) REFERENCES nodes(id) ON DELETE CASCADE",
93
+ "table": "public.node_tags",
94
+ "referenced_table": "nodes",
95
+ "columns": [
96
+ "node_id"
97
+ ],
98
+ "referenced_columns": [
99
+ "id"
100
+ ]
101
+ },
102
+ {
103
+ "name": "fk_rails_b51cdcc57f",
104
+ "type": "FOREIGN KEY",
105
+ "def": "FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE",
106
+ "table": "public.node_tags",
107
+ "referenced_table": "tags",
108
+ "columns": [
109
+ "tag_id"
110
+ ],
111
+ "referenced_columns": [
112
+ "id"
113
+ ]
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "name": "public.schema_migrations",
119
+ "type": "BASE TABLE",
120
+ "columns": [
121
+ {
122
+ "name": "version",
123
+ "type": "varchar",
124
+ "nullable": false
125
+ }
126
+ ],
127
+ "indexes": [
128
+ {
129
+ "name": "schema_migrations_pkey",
130
+ "def": "CREATE UNIQUE INDEX schema_migrations_pkey ON public.schema_migrations USING btree (version)",
131
+ "table": "public.schema_migrations",
132
+ "columns": [
133
+ "version"
134
+ ]
135
+ }
136
+ ],
137
+ "constraints": [
138
+ {
139
+ "name": "schema_migrations_pkey",
140
+ "type": "PRIMARY KEY",
141
+ "def": "PRIMARY KEY (version)",
142
+ "table": "public.schema_migrations",
143
+ "referenced_table": "",
144
+ "columns": [
145
+ "version"
146
+ ]
147
+ }
148
+ ]
149
+ },
150
+ {
151
+ "name": "public.robots",
152
+ "type": "BASE TABLE",
153
+ "comment": "Registry of all LLM robots using the HTM system",
154
+ "columns": [
155
+ {
156
+ "name": "id",
157
+ "type": "bigint",
158
+ "nullable": false,
159
+ "default": "nextval('robots_id_seq'::regclass)"
160
+ },
161
+ {
162
+ "name": "name",
163
+ "type": "text",
164
+ "nullable": true,
165
+ "comment": "Human-readable name for the robot"
166
+ },
167
+ {
168
+ "name": "created_at",
169
+ "type": "timestamp with time zone",
170
+ "nullable": true,
171
+ "default": "CURRENT_TIMESTAMP",
172
+ "comment": "When the robot was first registered"
173
+ },
174
+ {
175
+ "name": "last_active",
176
+ "type": "timestamp with time zone",
177
+ "nullable": true,
178
+ "default": "CURRENT_TIMESTAMP",
179
+ "comment": "Last time the robot accessed the system"
180
+ },
181
+ {
182
+ "name": "metadata",
183
+ "type": "jsonb",
184
+ "nullable": true,
185
+ "comment": "Robot-specific configuration and metadata"
186
+ }
187
+ ],
188
+ "indexes": [
189
+ {
190
+ "name": "robots_pkey",
191
+ "def": "CREATE UNIQUE INDEX robots_pkey ON public.robots USING btree (id)",
192
+ "table": "public.robots",
193
+ "columns": [
194
+ "id"
195
+ ]
196
+ }
197
+ ],
198
+ "constraints": [
199
+ {
200
+ "name": "robots_pkey",
201
+ "type": "PRIMARY KEY",
202
+ "def": "PRIMARY KEY (id)",
203
+ "table": "public.robots",
204
+ "referenced_table": "",
205
+ "columns": [
206
+ "id"
207
+ ]
208
+ }
209
+ ]
210
+ },
211
+ {
212
+ "name": "public.nodes",
213
+ "type": "BASE TABLE",
214
+ "comment": "Core memory storage for conversation messages and context",
215
+ "columns": [
216
+ {
217
+ "name": "id",
218
+ "type": "bigint",
219
+ "nullable": false,
220
+ "default": "nextval('nodes_id_seq'::regclass)"
221
+ },
222
+ {
223
+ "name": "content",
224
+ "type": "text",
225
+ "nullable": false,
226
+ "comment": "The conversation message/utterance content"
227
+ },
228
+ {
229
+ "name": "source",
230
+ "type": "text",
231
+ "nullable": true,
232
+ "default": "''::text",
233
+ "comment": "From where the content came (empty string if unknown)"
234
+ },
235
+ {
236
+ "name": "access_count",
237
+ "type": "integer",
238
+ "nullable": false,
239
+ "default": "0",
240
+ "comment": "Number of times this node has been accessed/retrieved"
241
+ },
242
+ {
243
+ "name": "created_at",
244
+ "type": "timestamp with time zone",
245
+ "nullable": true,
246
+ "default": "CURRENT_TIMESTAMP",
247
+ "comment": "When this memory was created"
248
+ },
249
+ {
250
+ "name": "updated_at",
251
+ "type": "timestamp with time zone",
252
+ "nullable": true,
253
+ "default": "CURRENT_TIMESTAMP",
254
+ "comment": "When this memory was last modified"
255
+ },
256
+ {
257
+ "name": "last_accessed",
258
+ "type": "timestamp with time zone",
259
+ "nullable": true,
260
+ "default": "CURRENT_TIMESTAMP",
261
+ "comment": "When this memory was last accessed"
262
+ },
263
+ {
264
+ "name": "token_count",
265
+ "type": "integer",
266
+ "nullable": true,
267
+ "comment": "Number of tokens in the content (for context budget management)"
268
+ },
269
+ {
270
+ "name": "in_working_memory",
271
+ "type": "boolean",
272
+ "nullable": true,
273
+ "default": "false",
274
+ "comment": "Whether this memory is currently in working memory"
275
+ },
276
+ {
277
+ "name": "robot_id",
278
+ "type": "bigint",
279
+ "nullable": false,
280
+ "comment": "ID of the robot that owns this memory"
281
+ },
282
+ {
283
+ "name": "embedding",
284
+ "type": "vector(2000)",
285
+ "nullable": true,
286
+ "comment": "Vector embedding (max 2000 dimensions) for semantic search"
287
+ },
288
+ {
289
+ "name": "embedding_dimension",
290
+ "type": "integer",
291
+ "nullable": true,
292
+ "comment": "Actual number of dimensions used in the embedding vector (max 2000)"
293
+ }
294
+ ],
295
+ "indexes": [
296
+ {
297
+ "name": "nodes_pkey",
298
+ "def": "CREATE UNIQUE INDEX nodes_pkey ON public.nodes USING btree (id)",
299
+ "table": "public.nodes",
300
+ "columns": [
301
+ "id"
302
+ ]
303
+ },
304
+ {
305
+ "name": "idx_nodes_created_at",
306
+ "def": "CREATE INDEX idx_nodes_created_at ON public.nodes USING btree (created_at)",
307
+ "table": "public.nodes",
308
+ "columns": [
309
+ "created_at"
310
+ ]
311
+ },
312
+ {
313
+ "name": "idx_nodes_updated_at",
314
+ "def": "CREATE INDEX idx_nodes_updated_at ON public.nodes USING btree (updated_at)",
315
+ "table": "public.nodes",
316
+ "columns": [
317
+ "updated_at"
318
+ ]
319
+ },
320
+ {
321
+ "name": "idx_nodes_last_accessed",
322
+ "def": "CREATE INDEX idx_nodes_last_accessed ON public.nodes USING btree (last_accessed)",
323
+ "table": "public.nodes",
324
+ "columns": [
325
+ "last_accessed"
326
+ ]
327
+ },
328
+ {
329
+ "name": "idx_nodes_access_count",
330
+ "def": "CREATE INDEX idx_nodes_access_count ON public.nodes USING btree (access_count)",
331
+ "table": "public.nodes",
332
+ "columns": [
333
+ "access_count"
334
+ ]
335
+ },
336
+ {
337
+ "name": "idx_nodes_robot_id",
338
+ "def": "CREATE INDEX idx_nodes_robot_id ON public.nodes USING btree (robot_id)",
339
+ "table": "public.nodes",
340
+ "columns": [
341
+ "robot_id"
342
+ ]
343
+ },
344
+ {
345
+ "name": "idx_nodes_source",
346
+ "def": "CREATE INDEX idx_nodes_source ON public.nodes USING btree (source)",
347
+ "table": "public.nodes",
348
+ "columns": [
349
+ "source"
350
+ ]
351
+ },
352
+ {
353
+ "name": "idx_nodes_in_working_memory",
354
+ "def": "CREATE INDEX idx_nodes_in_working_memory ON public.nodes USING btree (in_working_memory)",
355
+ "table": "public.nodes",
356
+ "columns": [
357
+ "in_working_memory"
358
+ ]
359
+ },
360
+ {
361
+ "name": "idx_nodes_embedding",
362
+ "def": "CREATE INDEX idx_nodes_embedding ON public.nodes USING hnsw (embedding vector_cosine_ops) WITH (m='16', ef_construction='64')",
363
+ "table": "public.nodes",
364
+ "columns": [
365
+ "embedding"
366
+ ]
367
+ },
368
+ {
369
+ "name": "idx_nodes_content_gin",
370
+ "def": "CREATE INDEX idx_nodes_content_gin ON public.nodes USING gin (to_tsvector('english'::regconfig, content))",
371
+ "table": "public.nodes",
372
+ "columns": [
373
+ "to_tsvector"
374
+ ]
375
+ },
376
+ {
377
+ "name": "idx_nodes_content_trgm",
378
+ "def": "CREATE INDEX idx_nodes_content_trgm ON public.nodes USING gin (content gin_trgm_ops)",
379
+ "table": "public.nodes",
380
+ "columns": [
381
+ "content"
382
+ ]
383
+ }
384
+ ],
385
+ "constraints": [
386
+ {
387
+ "name": "check_embedding_dimension",
388
+ "type": "CHECK",
389
+ "def": "CHECK (((embedding_dimension IS NULL) OR ((embedding_dimension \u003e 0) AND (embedding_dimension \u003c= 2000))))",
390
+ "table": "public.nodes",
391
+ "referenced_table": "",
392
+ "columns": [
393
+ "embedding_dimension"
394
+ ]
395
+ },
396
+ {
397
+ "name": "fk_rails_60162e9d3a",
398
+ "type": "FOREIGN KEY",
399
+ "def": "FOREIGN KEY (robot_id) REFERENCES robots(id) ON DELETE CASCADE",
400
+ "table": "public.nodes",
401
+ "referenced_table": "robots",
402
+ "columns": [
403
+ "robot_id"
404
+ ],
405
+ "referenced_columns": [
406
+ "id"
407
+ ]
408
+ },
409
+ {
410
+ "name": "nodes_pkey",
411
+ "type": "PRIMARY KEY",
412
+ "def": "PRIMARY KEY (id)",
413
+ "table": "public.nodes",
414
+ "referenced_table": "",
415
+ "columns": [
416
+ "id"
417
+ ]
418
+ }
419
+ ]
420
+ },
421
+ {
422
+ "name": "public.tags",
423
+ "type": "BASE TABLE",
424
+ "comment": "Unique tag names for categorization",
425
+ "columns": [
426
+ {
427
+ "name": "id",
428
+ "type": "bigint",
429
+ "nullable": false,
430
+ "default": "nextval('tags_id_seq'::regclass)"
431
+ },
432
+ {
433
+ "name": "name",
434
+ "type": "text",
435
+ "nullable": false,
436
+ "comment": "Hierarchical tag in format: root:level1:level2 (e.g., database:postgresql:timescaledb)"
437
+ },
438
+ {
439
+ "name": "created_at",
440
+ "type": "timestamp with time zone",
441
+ "nullable": true,
442
+ "default": "CURRENT_TIMESTAMP",
443
+ "comment": "When this tag was created"
444
+ }
445
+ ],
446
+ "indexes": [
447
+ {
448
+ "name": "tags_pkey",
449
+ "def": "CREATE UNIQUE INDEX tags_pkey ON public.tags USING btree (id)",
450
+ "table": "public.tags",
451
+ "columns": [
452
+ "id"
453
+ ]
454
+ },
455
+ {
456
+ "name": "idx_tags_name_unique",
457
+ "def": "CREATE UNIQUE INDEX idx_tags_name_unique ON public.tags USING btree (name)",
458
+ "table": "public.tags",
459
+ "columns": [
460
+ "name"
461
+ ]
462
+ },
463
+ {
464
+ "name": "idx_tags_name_pattern",
465
+ "def": "CREATE INDEX idx_tags_name_pattern ON public.tags USING btree (name text_pattern_ops)",
466
+ "table": "public.tags",
467
+ "columns": [
468
+ "name"
469
+ ]
470
+ }
471
+ ],
472
+ "constraints": [
473
+ {
474
+ "name": "tags_pkey",
475
+ "type": "PRIMARY KEY",
476
+ "def": "PRIMARY KEY (id)",
477
+ "table": "public.tags",
478
+ "referenced_table": "",
479
+ "columns": [
480
+ "id"
481
+ ]
482
+ }
483
+ ]
484
+ }
485
+ ],
486
+ "relations": [
487
+ {
488
+ "table": "public.node_tags",
489
+ "columns": [
490
+ "node_id"
491
+ ],
492
+ "cardinality": "zero_or_more",
493
+ "parent_table": "public.nodes",
494
+ "parent_columns": [
495
+ "id"
496
+ ],
497
+ "parent_cardinality": "exactly_one",
498
+ "def": "FOREIGN KEY (node_id) REFERENCES nodes(id) ON DELETE CASCADE"
499
+ },
500
+ {
501
+ "table": "public.node_tags",
502
+ "columns": [
503
+ "tag_id"
504
+ ],
505
+ "cardinality": "zero_or_more",
506
+ "parent_table": "public.tags",
507
+ "parent_columns": [
508
+ "id"
509
+ ],
510
+ "parent_cardinality": "exactly_one",
511
+ "def": "FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE"
512
+ },
513
+ {
514
+ "table": "public.nodes",
515
+ "columns": [
516
+ "robot_id"
517
+ ],
518
+ "cardinality": "zero_or_more",
519
+ "parent_table": "public.robots",
520
+ "parent_columns": [
521
+ "id"
522
+ ],
523
+ "parent_cardinality": "exactly_one",
524
+ "def": "FOREIGN KEY (robot_id) REFERENCES robots(id) ON DELETE CASCADE"
525
+ }
526
+ ],
527
+ "functions": [
528
+ {
529
+ "name": "public.vector_in",
530
+ "return_type": "vector",
531
+ "arguments": "cstring, oid, integer",
532
+ "type": "FUNCTION"
533
+ },
534
+ {
535
+ "name": "public.vector_out",
536
+ "return_type": "cstring",
537
+ "arguments": "vector",
538
+ "type": "FUNCTION"
539
+ },
540
+ {
541
+ "name": "public.vector_typmod_in",
542
+ "return_type": "int4",
543
+ "arguments": "cstring[]",
544
+ "type": "FUNCTION"
545
+ },
546
+ {
547
+ "name": "public.vector_recv",
548
+ "return_type": "vector",
549
+ "arguments": "internal, oid, integer",
550
+ "type": "FUNCTION"
551
+ },
552
+ {
553
+ "name": "public.vector_send",
554
+ "return_type": "bytea",
555
+ "arguments": "vector",
556
+ "type": "FUNCTION"
557
+ },
558
+ {
559
+ "name": "public.l2_distance",
560
+ "return_type": "float8",
561
+ "arguments": "vector, vector",
562
+ "type": "FUNCTION"
563
+ },
564
+ {
565
+ "name": "public.inner_product",
566
+ "return_type": "float8",
567
+ "arguments": "vector, vector",
568
+ "type": "FUNCTION"
569
+ },
570
+ {
571
+ "name": "public.cosine_distance",
572
+ "return_type": "float8",
573
+ "arguments": "vector, vector",
574
+ "type": "FUNCTION"
575
+ },
576
+ {
577
+ "name": "public.l1_distance",
578
+ "return_type": "float8",
579
+ "arguments": "vector, vector",
580
+ "type": "FUNCTION"
581
+ },
582
+ {
583
+ "name": "public.vector_dims",
584
+ "return_type": "int4",
585
+ "arguments": "vector",
586
+ "type": "FUNCTION"
587
+ },
588
+ {
589
+ "name": "public.vector_norm",
590
+ "return_type": "float8",
591
+ "arguments": "vector",
592
+ "type": "FUNCTION"
593
+ },
594
+ {
595
+ "name": "public.l2_normalize",
596
+ "return_type": "vector",
597
+ "arguments": "vector",
598
+ "type": "FUNCTION"
599
+ },
600
+ {
601
+ "name": "public.binary_quantize",
602
+ "return_type": "bit",
603
+ "arguments": "vector",
604
+ "type": "FUNCTION"
605
+ },
606
+ {
607
+ "name": "public.subvector",
608
+ "return_type": "vector",
609
+ "arguments": "vector, integer, integer",
610
+ "type": "FUNCTION"
611
+ },
612
+ {
613
+ "name": "public.vector_add",
614
+ "return_type": "vector",
615
+ "arguments": "vector, vector",
616
+ "type": "FUNCTION"
617
+ },
618
+ {
619
+ "name": "public.vector_sub",
620
+ "return_type": "vector",
621
+ "arguments": "vector, vector",
622
+ "type": "FUNCTION"
623
+ },
624
+ {
625
+ "name": "public.vector_mul",
626
+ "return_type": "vector",
627
+ "arguments": "vector, vector",
628
+ "type": "FUNCTION"
629
+ },
630
+ {
631
+ "name": "public.vector_concat",
632
+ "return_type": "vector",
633
+ "arguments": "vector, vector",
634
+ "type": "FUNCTION"
635
+ },
636
+ {
637
+ "name": "public.vector_lt",
638
+ "return_type": "bool",
639
+ "arguments": "vector, vector",
640
+ "type": "FUNCTION"
641
+ },
642
+ {
643
+ "name": "public.vector_le",
644
+ "return_type": "bool",
645
+ "arguments": "vector, vector",
646
+ "type": "FUNCTION"
647
+ },
648
+ {
649
+ "name": "public.vector_eq",
650
+ "return_type": "bool",
651
+ "arguments": "vector, vector",
652
+ "type": "FUNCTION"
653
+ },
654
+ {
655
+ "name": "public.vector_ne",
656
+ "return_type": "bool",
657
+ "arguments": "vector, vector",
658
+ "type": "FUNCTION"
659
+ },
660
+ {
661
+ "name": "public.vector_ge",
662
+ "return_type": "bool",
663
+ "arguments": "vector, vector",
664
+ "type": "FUNCTION"
665
+ },
666
+ {
667
+ "name": "public.vector_gt",
668
+ "return_type": "bool",
669
+ "arguments": "vector, vector",
670
+ "type": "FUNCTION"
671
+ },
672
+ {
673
+ "name": "public.vector_cmp",
674
+ "return_type": "int4",
675
+ "arguments": "vector, vector",
676
+ "type": "FUNCTION"
677
+ },
678
+ {
679
+ "name": "public.vector_l2_squared_distance",
680
+ "return_type": "float8",
681
+ "arguments": "vector, vector",
682
+ "type": "FUNCTION"
683
+ },
684
+ {
685
+ "name": "public.vector_negative_inner_product",
686
+ "return_type": "float8",
687
+ "arguments": "vector, vector",
688
+ "type": "FUNCTION"
689
+ },
690
+ {
691
+ "name": "public.vector_spherical_distance",
692
+ "return_type": "float8",
693
+ "arguments": "vector, vector",
694
+ "type": "FUNCTION"
695
+ },
696
+ {
697
+ "name": "public.vector_accum",
698
+ "return_type": "_float8",
699
+ "arguments": "double precision[], vector",
700
+ "type": "FUNCTION"
701
+ },
702
+ {
703
+ "name": "public.vector_avg",
704
+ "return_type": "vector",
705
+ "arguments": "double precision[]",
706
+ "type": "FUNCTION"
707
+ },
708
+ {
709
+ "name": "public.vector_combine",
710
+ "return_type": "_float8",
711
+ "arguments": "double precision[], double precision[]",
712
+ "type": "FUNCTION"
713
+ },
714
+ {
715
+ "name": "public.avg",
716
+ "return_type": "vector",
717
+ "arguments": "vector",
718
+ "type": "a"
719
+ },
720
+ {
721
+ "name": "public.sum",
722
+ "return_type": "vector",
723
+ "arguments": "vector",
724
+ "type": "a"
725
+ },
726
+ {
727
+ "name": "public.vector",
728
+ "return_type": "vector",
729
+ "arguments": "vector, integer, boolean",
730
+ "type": "FUNCTION"
731
+ },
732
+ {
733
+ "name": "public.array_to_vector",
734
+ "return_type": "vector",
735
+ "arguments": "integer[], integer, boolean",
736
+ "type": "FUNCTION"
737
+ },
738
+ {
739
+ "name": "public.array_to_vector",
740
+ "return_type": "vector",
741
+ "arguments": "real[], integer, boolean",
742
+ "type": "FUNCTION"
743
+ },
744
+ {
745
+ "name": "public.array_to_vector",
746
+ "return_type": "vector",
747
+ "arguments": "double precision[], integer, boolean",
748
+ "type": "FUNCTION"
749
+ },
750
+ {
751
+ "name": "public.array_to_vector",
752
+ "return_type": "vector",
753
+ "arguments": "numeric[], integer, boolean",
754
+ "type": "FUNCTION"
755
+ },
756
+ {
757
+ "name": "public.vector_to_float4",
758
+ "return_type": "_float4",
759
+ "arguments": "vector, integer, boolean",
760
+ "type": "FUNCTION"
761
+ },
762
+ {
763
+ "name": "public.ivfflathandler",
764
+ "return_type": "index_am_handler",
765
+ "arguments": "internal",
766
+ "type": "FUNCTION"
767
+ },
768
+ {
769
+ "name": "public.hnswhandler",
770
+ "return_type": "index_am_handler",
771
+ "arguments": "internal",
772
+ "type": "FUNCTION"
773
+ },
774
+ {
775
+ "name": "public.ivfflat_halfvec_support",
776
+ "return_type": "internal",
777
+ "arguments": "internal",
778
+ "type": "FUNCTION"
779
+ },
780
+ {
781
+ "name": "public.ivfflat_bit_support",
782
+ "return_type": "internal",
783
+ "arguments": "internal",
784
+ "type": "FUNCTION"
785
+ },
786
+ {
787
+ "name": "public.hnsw_halfvec_support",
788
+ "return_type": "internal",
789
+ "arguments": "internal",
790
+ "type": "FUNCTION"
791
+ },
792
+ {
793
+ "name": "public.hnsw_bit_support",
794
+ "return_type": "internal",
795
+ "arguments": "internal",
796
+ "type": "FUNCTION"
797
+ },
798
+ {
799
+ "name": "public.hnsw_sparsevec_support",
800
+ "return_type": "internal",
801
+ "arguments": "internal",
802
+ "type": "FUNCTION"
803
+ },
804
+ {
805
+ "name": "public.halfvec_in",
806
+ "return_type": "halfvec",
807
+ "arguments": "cstring, oid, integer",
808
+ "type": "FUNCTION"
809
+ },
810
+ {
811
+ "name": "public.halfvec_out",
812
+ "return_type": "cstring",
813
+ "arguments": "halfvec",
814
+ "type": "FUNCTION"
815
+ },
816
+ {
817
+ "name": "public.halfvec_typmod_in",
818
+ "return_type": "int4",
819
+ "arguments": "cstring[]",
820
+ "type": "FUNCTION"
821
+ },
822
+ {
823
+ "name": "public.halfvec_recv",
824
+ "return_type": "halfvec",
825
+ "arguments": "internal, oid, integer",
826
+ "type": "FUNCTION"
827
+ },
828
+ {
829
+ "name": "public.halfvec_send",
830
+ "return_type": "bytea",
831
+ "arguments": "halfvec",
832
+ "type": "FUNCTION"
833
+ },
834
+ {
835
+ "name": "public.l2_distance",
836
+ "return_type": "float8",
837
+ "arguments": "halfvec, halfvec",
838
+ "type": "FUNCTION"
839
+ },
840
+ {
841
+ "name": "public.inner_product",
842
+ "return_type": "float8",
843
+ "arguments": "halfvec, halfvec",
844
+ "type": "FUNCTION"
845
+ },
846
+ {
847
+ "name": "public.cosine_distance",
848
+ "return_type": "float8",
849
+ "arguments": "halfvec, halfvec",
850
+ "type": "FUNCTION"
851
+ },
852
+ {
853
+ "name": "public.l1_distance",
854
+ "return_type": "float8",
855
+ "arguments": "halfvec, halfvec",
856
+ "type": "FUNCTION"
857
+ },
858
+ {
859
+ "name": "public.vector_dims",
860
+ "return_type": "int4",
861
+ "arguments": "halfvec",
862
+ "type": "FUNCTION"
863
+ },
864
+ {
865
+ "name": "public.l2_norm",
866
+ "return_type": "float8",
867
+ "arguments": "halfvec",
868
+ "type": "FUNCTION"
869
+ },
870
+ {
871
+ "name": "public.l2_normalize",
872
+ "return_type": "halfvec",
873
+ "arguments": "halfvec",
874
+ "type": "FUNCTION"
875
+ },
876
+ {
877
+ "name": "public.binary_quantize",
878
+ "return_type": "bit",
879
+ "arguments": "halfvec",
880
+ "type": "FUNCTION"
881
+ },
882
+ {
883
+ "name": "public.subvector",
884
+ "return_type": "halfvec",
885
+ "arguments": "halfvec, integer, integer",
886
+ "type": "FUNCTION"
887
+ },
888
+ {
889
+ "name": "public.halfvec_add",
890
+ "return_type": "halfvec",
891
+ "arguments": "halfvec, halfvec",
892
+ "type": "FUNCTION"
893
+ },
894
+ {
895
+ "name": "public.halfvec_sub",
896
+ "return_type": "halfvec",
897
+ "arguments": "halfvec, halfvec",
898
+ "type": "FUNCTION"
899
+ },
900
+ {
901
+ "name": "public.halfvec_mul",
902
+ "return_type": "halfvec",
903
+ "arguments": "halfvec, halfvec",
904
+ "type": "FUNCTION"
905
+ },
906
+ {
907
+ "name": "public.halfvec_concat",
908
+ "return_type": "halfvec",
909
+ "arguments": "halfvec, halfvec",
910
+ "type": "FUNCTION"
911
+ },
912
+ {
913
+ "name": "public.halfvec_lt",
914
+ "return_type": "bool",
915
+ "arguments": "halfvec, halfvec",
916
+ "type": "FUNCTION"
917
+ },
918
+ {
919
+ "name": "public.halfvec_le",
920
+ "return_type": "bool",
921
+ "arguments": "halfvec, halfvec",
922
+ "type": "FUNCTION"
923
+ },
924
+ {
925
+ "name": "public.halfvec_eq",
926
+ "return_type": "bool",
927
+ "arguments": "halfvec, halfvec",
928
+ "type": "FUNCTION"
929
+ },
930
+ {
931
+ "name": "public.halfvec_ne",
932
+ "return_type": "bool",
933
+ "arguments": "halfvec, halfvec",
934
+ "type": "FUNCTION"
935
+ },
936
+ {
937
+ "name": "public.halfvec_ge",
938
+ "return_type": "bool",
939
+ "arguments": "halfvec, halfvec",
940
+ "type": "FUNCTION"
941
+ },
942
+ {
943
+ "name": "public.halfvec_gt",
944
+ "return_type": "bool",
945
+ "arguments": "halfvec, halfvec",
946
+ "type": "FUNCTION"
947
+ },
948
+ {
949
+ "name": "public.halfvec_cmp",
950
+ "return_type": "int4",
951
+ "arguments": "halfvec, halfvec",
952
+ "type": "FUNCTION"
953
+ },
954
+ {
955
+ "name": "public.halfvec_l2_squared_distance",
956
+ "return_type": "float8",
957
+ "arguments": "halfvec, halfvec",
958
+ "type": "FUNCTION"
959
+ },
960
+ {
961
+ "name": "public.halfvec_negative_inner_product",
962
+ "return_type": "float8",
963
+ "arguments": "halfvec, halfvec",
964
+ "type": "FUNCTION"
965
+ },
966
+ {
967
+ "name": "public.halfvec_spherical_distance",
968
+ "return_type": "float8",
969
+ "arguments": "halfvec, halfvec",
970
+ "type": "FUNCTION"
971
+ },
972
+ {
973
+ "name": "public.halfvec_accum",
974
+ "return_type": "_float8",
975
+ "arguments": "double precision[], halfvec",
976
+ "type": "FUNCTION"
977
+ },
978
+ {
979
+ "name": "public.halfvec_avg",
980
+ "return_type": "halfvec",
981
+ "arguments": "double precision[]",
982
+ "type": "FUNCTION"
983
+ },
984
+ {
985
+ "name": "public.halfvec_combine",
986
+ "return_type": "_float8",
987
+ "arguments": "double precision[], double precision[]",
988
+ "type": "FUNCTION"
989
+ },
990
+ {
991
+ "name": "public.avg",
992
+ "return_type": "halfvec",
993
+ "arguments": "halfvec",
994
+ "type": "a"
995
+ },
996
+ {
997
+ "name": "public.sum",
998
+ "return_type": "halfvec",
999
+ "arguments": "halfvec",
1000
+ "type": "a"
1001
+ },
1002
+ {
1003
+ "name": "public.halfvec",
1004
+ "return_type": "halfvec",
1005
+ "arguments": "halfvec, integer, boolean",
1006
+ "type": "FUNCTION"
1007
+ },
1008
+ {
1009
+ "name": "public.halfvec_to_vector",
1010
+ "return_type": "vector",
1011
+ "arguments": "halfvec, integer, boolean",
1012
+ "type": "FUNCTION"
1013
+ },
1014
+ {
1015
+ "name": "public.vector_to_halfvec",
1016
+ "return_type": "halfvec",
1017
+ "arguments": "vector, integer, boolean",
1018
+ "type": "FUNCTION"
1019
+ },
1020
+ {
1021
+ "name": "public.array_to_halfvec",
1022
+ "return_type": "halfvec",
1023
+ "arguments": "integer[], integer, boolean",
1024
+ "type": "FUNCTION"
1025
+ },
1026
+ {
1027
+ "name": "public.array_to_halfvec",
1028
+ "return_type": "halfvec",
1029
+ "arguments": "real[], integer, boolean",
1030
+ "type": "FUNCTION"
1031
+ },
1032
+ {
1033
+ "name": "public.array_to_halfvec",
1034
+ "return_type": "halfvec",
1035
+ "arguments": "double precision[], integer, boolean",
1036
+ "type": "FUNCTION"
1037
+ },
1038
+ {
1039
+ "name": "public.array_to_halfvec",
1040
+ "return_type": "halfvec",
1041
+ "arguments": "numeric[], integer, boolean",
1042
+ "type": "FUNCTION"
1043
+ },
1044
+ {
1045
+ "name": "public.halfvec_to_float4",
1046
+ "return_type": "_float4",
1047
+ "arguments": "halfvec, integer, boolean",
1048
+ "type": "FUNCTION"
1049
+ },
1050
+ {
1051
+ "name": "public.hamming_distance",
1052
+ "return_type": "float8",
1053
+ "arguments": "bit, bit",
1054
+ "type": "FUNCTION"
1055
+ },
1056
+ {
1057
+ "name": "public.jaccard_distance",
1058
+ "return_type": "float8",
1059
+ "arguments": "bit, bit",
1060
+ "type": "FUNCTION"
1061
+ },
1062
+ {
1063
+ "name": "public.sparsevec_in",
1064
+ "return_type": "sparsevec",
1065
+ "arguments": "cstring, oid, integer",
1066
+ "type": "FUNCTION"
1067
+ },
1068
+ {
1069
+ "name": "public.sparsevec_out",
1070
+ "return_type": "cstring",
1071
+ "arguments": "sparsevec",
1072
+ "type": "FUNCTION"
1073
+ },
1074
+ {
1075
+ "name": "public.sparsevec_typmod_in",
1076
+ "return_type": "int4",
1077
+ "arguments": "cstring[]",
1078
+ "type": "FUNCTION"
1079
+ },
1080
+ {
1081
+ "name": "public.sparsevec_recv",
1082
+ "return_type": "sparsevec",
1083
+ "arguments": "internal, oid, integer",
1084
+ "type": "FUNCTION"
1085
+ },
1086
+ {
1087
+ "name": "public.sparsevec_send",
1088
+ "return_type": "bytea",
1089
+ "arguments": "sparsevec",
1090
+ "type": "FUNCTION"
1091
+ },
1092
+ {
1093
+ "name": "public.l2_distance",
1094
+ "return_type": "float8",
1095
+ "arguments": "sparsevec, sparsevec",
1096
+ "type": "FUNCTION"
1097
+ },
1098
+ {
1099
+ "name": "public.inner_product",
1100
+ "return_type": "float8",
1101
+ "arguments": "sparsevec, sparsevec",
1102
+ "type": "FUNCTION"
1103
+ },
1104
+ {
1105
+ "name": "public.cosine_distance",
1106
+ "return_type": "float8",
1107
+ "arguments": "sparsevec, sparsevec",
1108
+ "type": "FUNCTION"
1109
+ },
1110
+ {
1111
+ "name": "public.l1_distance",
1112
+ "return_type": "float8",
1113
+ "arguments": "sparsevec, sparsevec",
1114
+ "type": "FUNCTION"
1115
+ },
1116
+ {
1117
+ "name": "public.l2_norm",
1118
+ "return_type": "float8",
1119
+ "arguments": "sparsevec",
1120
+ "type": "FUNCTION"
1121
+ },
1122
+ {
1123
+ "name": "public.l2_normalize",
1124
+ "return_type": "sparsevec",
1125
+ "arguments": "sparsevec",
1126
+ "type": "FUNCTION"
1127
+ },
1128
+ {
1129
+ "name": "public.sparsevec_lt",
1130
+ "return_type": "bool",
1131
+ "arguments": "sparsevec, sparsevec",
1132
+ "type": "FUNCTION"
1133
+ },
1134
+ {
1135
+ "name": "public.sparsevec_le",
1136
+ "return_type": "bool",
1137
+ "arguments": "sparsevec, sparsevec",
1138
+ "type": "FUNCTION"
1139
+ },
1140
+ {
1141
+ "name": "public.sparsevec_eq",
1142
+ "return_type": "bool",
1143
+ "arguments": "sparsevec, sparsevec",
1144
+ "type": "FUNCTION"
1145
+ },
1146
+ {
1147
+ "name": "public.sparsevec_ne",
1148
+ "return_type": "bool",
1149
+ "arguments": "sparsevec, sparsevec",
1150
+ "type": "FUNCTION"
1151
+ },
1152
+ {
1153
+ "name": "public.sparsevec_ge",
1154
+ "return_type": "bool",
1155
+ "arguments": "sparsevec, sparsevec",
1156
+ "type": "FUNCTION"
1157
+ },
1158
+ {
1159
+ "name": "public.sparsevec_gt",
1160
+ "return_type": "bool",
1161
+ "arguments": "sparsevec, sparsevec",
1162
+ "type": "FUNCTION"
1163
+ },
1164
+ {
1165
+ "name": "public.sparsevec_cmp",
1166
+ "return_type": "int4",
1167
+ "arguments": "sparsevec, sparsevec",
1168
+ "type": "FUNCTION"
1169
+ },
1170
+ {
1171
+ "name": "public.sparsevec_l2_squared_distance",
1172
+ "return_type": "float8",
1173
+ "arguments": "sparsevec, sparsevec",
1174
+ "type": "FUNCTION"
1175
+ },
1176
+ {
1177
+ "name": "public.sparsevec_negative_inner_product",
1178
+ "return_type": "float8",
1179
+ "arguments": "sparsevec, sparsevec",
1180
+ "type": "FUNCTION"
1181
+ },
1182
+ {
1183
+ "name": "public.sparsevec",
1184
+ "return_type": "sparsevec",
1185
+ "arguments": "sparsevec, integer, boolean",
1186
+ "type": "FUNCTION"
1187
+ },
1188
+ {
1189
+ "name": "public.vector_to_sparsevec",
1190
+ "return_type": "sparsevec",
1191
+ "arguments": "vector, integer, boolean",
1192
+ "type": "FUNCTION"
1193
+ },
1194
+ {
1195
+ "name": "public.sparsevec_to_vector",
1196
+ "return_type": "vector",
1197
+ "arguments": "sparsevec, integer, boolean",
1198
+ "type": "FUNCTION"
1199
+ },
1200
+ {
1201
+ "name": "public.halfvec_to_sparsevec",
1202
+ "return_type": "sparsevec",
1203
+ "arguments": "halfvec, integer, boolean",
1204
+ "type": "FUNCTION"
1205
+ },
1206
+ {
1207
+ "name": "public.sparsevec_to_halfvec",
1208
+ "return_type": "halfvec",
1209
+ "arguments": "sparsevec, integer, boolean",
1210
+ "type": "FUNCTION"
1211
+ },
1212
+ {
1213
+ "name": "public.array_to_sparsevec",
1214
+ "return_type": "sparsevec",
1215
+ "arguments": "integer[], integer, boolean",
1216
+ "type": "FUNCTION"
1217
+ },
1218
+ {
1219
+ "name": "public.array_to_sparsevec",
1220
+ "return_type": "sparsevec",
1221
+ "arguments": "real[], integer, boolean",
1222
+ "type": "FUNCTION"
1223
+ },
1224
+ {
1225
+ "name": "public.array_to_sparsevec",
1226
+ "return_type": "sparsevec",
1227
+ "arguments": "double precision[], integer, boolean",
1228
+ "type": "FUNCTION"
1229
+ },
1230
+ {
1231
+ "name": "public.array_to_sparsevec",
1232
+ "return_type": "sparsevec",
1233
+ "arguments": "numeric[], integer, boolean",
1234
+ "type": "FUNCTION"
1235
+ },
1236
+ {
1237
+ "name": "public.set_limit",
1238
+ "return_type": "float4",
1239
+ "arguments": "real",
1240
+ "type": "FUNCTION"
1241
+ },
1242
+ {
1243
+ "name": "public.show_limit",
1244
+ "return_type": "float4",
1245
+ "arguments": "",
1246
+ "type": "FUNCTION"
1247
+ },
1248
+ {
1249
+ "name": "public.show_trgm",
1250
+ "return_type": "_text",
1251
+ "arguments": "text",
1252
+ "type": "FUNCTION"
1253
+ },
1254
+ {
1255
+ "name": "public.similarity",
1256
+ "return_type": "float4",
1257
+ "arguments": "text, text",
1258
+ "type": "FUNCTION"
1259
+ },
1260
+ {
1261
+ "name": "public.similarity_op",
1262
+ "return_type": "bool",
1263
+ "arguments": "text, text",
1264
+ "type": "FUNCTION"
1265
+ },
1266
+ {
1267
+ "name": "public.word_similarity",
1268
+ "return_type": "float4",
1269
+ "arguments": "text, text",
1270
+ "type": "FUNCTION"
1271
+ },
1272
+ {
1273
+ "name": "public.word_similarity_op",
1274
+ "return_type": "bool",
1275
+ "arguments": "text, text",
1276
+ "type": "FUNCTION"
1277
+ },
1278
+ {
1279
+ "name": "public.word_similarity_commutator_op",
1280
+ "return_type": "bool",
1281
+ "arguments": "text, text",
1282
+ "type": "FUNCTION"
1283
+ },
1284
+ {
1285
+ "name": "public.similarity_dist",
1286
+ "return_type": "float4",
1287
+ "arguments": "text, text",
1288
+ "type": "FUNCTION"
1289
+ },
1290
+ {
1291
+ "name": "public.word_similarity_dist_op",
1292
+ "return_type": "float4",
1293
+ "arguments": "text, text",
1294
+ "type": "FUNCTION"
1295
+ },
1296
+ {
1297
+ "name": "public.word_similarity_dist_commutator_op",
1298
+ "return_type": "float4",
1299
+ "arguments": "text, text",
1300
+ "type": "FUNCTION"
1301
+ },
1302
+ {
1303
+ "name": "public.gtrgm_in",
1304
+ "return_type": "gtrgm",
1305
+ "arguments": "cstring",
1306
+ "type": "FUNCTION"
1307
+ },
1308
+ {
1309
+ "name": "public.gtrgm_out",
1310
+ "return_type": "cstring",
1311
+ "arguments": "gtrgm",
1312
+ "type": "FUNCTION"
1313
+ },
1314
+ {
1315
+ "name": "public.gtrgm_consistent",
1316
+ "return_type": "bool",
1317
+ "arguments": "internal, text, smallint, oid, internal",
1318
+ "type": "FUNCTION"
1319
+ },
1320
+ {
1321
+ "name": "public.gtrgm_distance",
1322
+ "return_type": "float8",
1323
+ "arguments": "internal, text, smallint, oid, internal",
1324
+ "type": "FUNCTION"
1325
+ },
1326
+ {
1327
+ "name": "public.gtrgm_compress",
1328
+ "return_type": "internal",
1329
+ "arguments": "internal",
1330
+ "type": "FUNCTION"
1331
+ },
1332
+ {
1333
+ "name": "public.gtrgm_decompress",
1334
+ "return_type": "internal",
1335
+ "arguments": "internal",
1336
+ "type": "FUNCTION"
1337
+ },
1338
+ {
1339
+ "name": "public.gtrgm_penalty",
1340
+ "return_type": "internal",
1341
+ "arguments": "internal, internal, internal",
1342
+ "type": "FUNCTION"
1343
+ },
1344
+ {
1345
+ "name": "public.gtrgm_picksplit",
1346
+ "return_type": "internal",
1347
+ "arguments": "internal, internal",
1348
+ "type": "FUNCTION"
1349
+ },
1350
+ {
1351
+ "name": "public.gtrgm_union",
1352
+ "return_type": "gtrgm",
1353
+ "arguments": "internal, internal",
1354
+ "type": "FUNCTION"
1355
+ },
1356
+ {
1357
+ "name": "public.gtrgm_same",
1358
+ "return_type": "internal",
1359
+ "arguments": "gtrgm, gtrgm, internal",
1360
+ "type": "FUNCTION"
1361
+ },
1362
+ {
1363
+ "name": "public.gin_extract_value_trgm",
1364
+ "return_type": "internal",
1365
+ "arguments": "text, internal",
1366
+ "type": "FUNCTION"
1367
+ },
1368
+ {
1369
+ "name": "public.gin_extract_query_trgm",
1370
+ "return_type": "internal",
1371
+ "arguments": "text, internal, smallint, internal, internal, internal, internal",
1372
+ "type": "FUNCTION"
1373
+ },
1374
+ {
1375
+ "name": "public.gin_trgm_consistent",
1376
+ "return_type": "bool",
1377
+ "arguments": "internal, smallint, text, integer, internal, internal, internal, internal",
1378
+ "type": "FUNCTION"
1379
+ },
1380
+ {
1381
+ "name": "public.gin_trgm_triconsistent",
1382
+ "return_type": "char",
1383
+ "arguments": "internal, smallint, text, integer, internal, internal, internal",
1384
+ "type": "FUNCTION"
1385
+ },
1386
+ {
1387
+ "name": "public.strict_word_similarity",
1388
+ "return_type": "float4",
1389
+ "arguments": "text, text",
1390
+ "type": "FUNCTION"
1391
+ },
1392
+ {
1393
+ "name": "public.strict_word_similarity_op",
1394
+ "return_type": "bool",
1395
+ "arguments": "text, text",
1396
+ "type": "FUNCTION"
1397
+ },
1398
+ {
1399
+ "name": "public.strict_word_similarity_commutator_op",
1400
+ "return_type": "bool",
1401
+ "arguments": "text, text",
1402
+ "type": "FUNCTION"
1403
+ },
1404
+ {
1405
+ "name": "public.strict_word_similarity_dist_op",
1406
+ "return_type": "float4",
1407
+ "arguments": "text, text",
1408
+ "type": "FUNCTION"
1409
+ },
1410
+ {
1411
+ "name": "public.strict_word_similarity_dist_commutator_op",
1412
+ "return_type": "float4",
1413
+ "arguments": "text, text",
1414
+ "type": "FUNCTION"
1415
+ },
1416
+ {
1417
+ "name": "public.gtrgm_options",
1418
+ "return_type": "void",
1419
+ "arguments": "internal",
1420
+ "type": "FUNCTION"
1421
+ }
1422
+ ],
1423
+ "driver": {
1424
+ "name": "postgres",
1425
+ "database_version": "PostgreSQL 17.6 (Homebrew) on aarch64-apple-darwin25.0.0, compiled by Apple clang version 17.0.0 (clang-1700.3.19.1), 64-bit",
1426
+ "meta": {
1427
+ "current_schema": "public",
1428
+ "search_paths": [
1429
+ "dewayne",
1430
+ "public"
1431
+ ],
1432
+ "dict": {
1433
+ "Functions": "Stored procedures and functions"
1434
+ }
1435
+ }
1436
+ }
1437
+ }