@freehour/supabase-langchain 1.0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 freehour
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # Supabase LangChain
2
+
3
+ Integration package for using LangChain with Supabase to generate, store and synchronize embeddings with file content in Supabase Storage.
4
+
5
+ ## Features
6
+
7
+ - **Embedding Service**: Generate and synchronize embeddings for text files in Supabase Storage using LangChain.
8
+
9
+ ## Installation
10
+
11
+ Install the package, e.g. using bun:
12
+
13
+ ```bash
14
+ bun install @freehour/supabase-core @freehour/supabase-langchain
15
+ ```
16
+
17
+ ### Migrations and Schemas
18
+
19
+ The package includes SQL files for setting up the necessary database schemas and extensions.
20
+ These files are copied post-installation to the `supabase/` directory of your project.
21
+ If you get a warning that the post-install script is blocked, you need to run the follwing command to trust the dependency:
22
+
23
+ ```bash
24
+ bun pm trust @freehour/supabase-core @freehour/supabase-langchain
25
+ ```
26
+
27
+ ### Configuration
28
+
29
+ If you generate migrations from schemas, make sure to include the `supabase-core`, `supabase-langchain` schema in your `schema_paths` in `supabase/config.toml`.
30
+
31
+ ```toml
32
+ schema_paths = [
33
+ "./schemas/supabase-core/*.sql",
34
+ "./schemas/supabase-langchain/*.sql",
35
+ /* your app schema paths */
36
+ ]
37
+ ```
38
+
39
+ ## Contributing
40
+
41
+ ### Building
42
+
43
+ If you changed the database schema run the build script:
44
+
45
+ ```bash
46
+ ./scripts/build.sh
47
+ ```
48
+
49
+ otherwise, you can just build the package:
50
+
51
+ ```bash
52
+ bun run build
53
+ ```
54
+
55
+ ### Publishing
56
+
57
+ To publish a new version of the package, update the version in `package.json` and run:
58
+
59
+ ```bash
60
+ bunx npm login
61
+ bun publish --access public
62
+ ```
63
+
64
+
65
+
@@ -0,0 +1,10 @@
1
+ import { JsonObject, StorageLocation } from '@freehour/supabase-core';
2
+ import { DocumentInterface } from '@langchain/core/documents';
3
+ export interface FileMetadata {
4
+ name: string;
5
+ size: number;
6
+ type: string;
7
+ }
8
+ export type MetadataGeneratorFn<BucketName extends string = string, Metadata extends JsonObject = JsonObject> = (location: StorageLocation<BucketName>) => Metadata;
9
+ export type StorageDocument<BucketName extends string = string, Metadata extends JsonObject = JsonObject> = DocumentInterface<StorageLocation<BucketName> & FileMetadata & Metadata>;
10
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../lib/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,mBAAmB,CAC3B,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,QAAQ,SAAS,UAAU,GAAG,UAAU,IACxC,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC;AAExD,MAAM,MAAM,eAAe,CACvB,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,QAAQ,SAAS,UAAU,GAAG,UAAU,IACxC,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { ClientServerOptions, DefaultClientOptions, FileRef, GenericDatabase, JsonObject, OmitFrom, SchemaName, StorageLocation } from '@freehour/supabase-core';
2
+ import { SupabaseFilterRPCCall, SupabaseVectorStore } from '@langchain/community/vectorstores/supabase';
3
+ import { EmbeddingsInterface } from '@langchain/core/embeddings';
4
+ import { BaseRetrieverInterface } from '@langchain/core/retrievers';
5
+ import { VectorStoreRetrieverInput } from '@langchain/core/vectorstores';
6
+ import { SupabaseClient } from '@supabase/supabase-js';
7
+ import { Database as LangChainDatabase } from './generated/database';
8
+ import { FileMetadata, MetadataGeneratorFn, StorageDocument } from './document';
9
+ export type RetriverOptions<BucketName extends string, Metadata extends JsonObject = JsonObject> = OmitFrom<VectorStoreRetrieverInput<SupabaseVectorStore>, 'vectorStore' | 'filter'> & {
10
+ filter?: SupabaseFilterRPCCall | Partial<StorageLocation<BucketName> & FileMetadata & Metadata>;
11
+ };
12
+ export interface EmbeddingServiceParams<Database extends GenericDatabase<SchemaName<Database>> & LangChainDatabase = LangChainDatabase, ClientOptions extends Required<ClientServerOptions> = DefaultClientOptions<Database>> {
13
+ embeddings: EmbeddingsInterface;
14
+ supabase: SupabaseClient<Database, ClientOptions>;
15
+ chunkSize?: number;
16
+ chunkOverlap?: number;
17
+ }
18
+ export declare class EmbeddingService<Database extends GenericDatabase<SchemaName<Database>> & LangChainDatabase = LangChainDatabase, ClientOptions extends Required<ClientServerOptions> = DefaultClientOptions<Database>, BucketName extends string = string, Metadata extends JsonObject = JsonObject> {
19
+ private readonly database;
20
+ private readonly storage;
21
+ private readonly vectorStore;
22
+ private readonly splitterOptions;
23
+ constructor({ supabase, embeddings, chunkSize, chunkOverlap, }: EmbeddingServiceParams<Database, ClientOptions>);
24
+ private get embeddings();
25
+ private getLoader;
26
+ private getSplitter;
27
+ private createEmbeddings;
28
+ private deleteEmbeddings;
29
+ private updateEmbeddings;
30
+ ingest(fileRef: FileRef<BucketName>, metadata: Metadata | MetadataGeneratorFn<BucketName, Metadata>): Promise<StorageDocument<BucketName, Metadata>[]>;
31
+ update(bucket: BucketName, metadata: Metadata | MetadataGeneratorFn<BucketName, Metadata>): Promise<PromiseSettledResult<StorageDocument<BucketName, Metadata>[]>[]>;
32
+ retriever(options: RetriverOptions<BucketName, Metadata>): BaseRetrieverInterface;
33
+ }
34
+ //# sourceMappingURL=embedding-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-service.d.ts","sourceRoot":"","sources":["../lib/embedding-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,736 @@
1
+ export type Json = string | number | boolean | null | {
2
+ [key: string]: Json | undefined;
3
+ } | Json[];
4
+ export interface Database {
5
+ core: {
6
+ Tables: Record<never, never>;
7
+ Views: Record<never, never>;
8
+ Functions: {
9
+ fuzzy_search: {
10
+ Args: {
11
+ column_name: string;
12
+ limit_results?: number;
13
+ min_similarity?: number;
14
+ relation: string;
15
+ schema_name?: string;
16
+ search_term: string;
17
+ };
18
+ Returns: Json[];
19
+ };
20
+ };
21
+ Enums: Record<never, never>;
22
+ CompositeTypes: Record<never, never>;
23
+ };
24
+ langchain: {
25
+ Tables: Record<never, never>;
26
+ Views: {
27
+ outdated_embeddings: {
28
+ Row: {
29
+ bucket_id: string | null;
30
+ created_at: string | null;
31
+ id: string | null;
32
+ last_accessed_at: string | null;
33
+ metadata: Json | null;
34
+ name: string | null;
35
+ owner: string | null;
36
+ owner_id: string | null;
37
+ path_tokens: string[] | null;
38
+ updated_at: string | null;
39
+ user_metadata: Json | null;
40
+ version: string | null;
41
+ };
42
+ Relationships: [];
43
+ };
44
+ };
45
+ Functions: {
46
+ get_outdated_embeddings: {
47
+ Args: {
48
+ bucket: string;
49
+ };
50
+ Returns: {
51
+ bucket_id: string;
52
+ file_id: string;
53
+ path_tokens: string[];
54
+ }[];
55
+ };
56
+ };
57
+ Enums: Record<never, never>;
58
+ CompositeTypes: Record<never, never>;
59
+ };
60
+ public: {
61
+ Tables: {
62
+ embeddings: {
63
+ Row: {
64
+ content: string;
65
+ created_at: string;
66
+ embedding: string | null;
67
+ file_id: string;
68
+ id: string;
69
+ metadata: Json | null;
70
+ };
71
+ Insert: {
72
+ content: string;
73
+ created_at?: string;
74
+ embedding?: string | null;
75
+ file_id: string;
76
+ id?: string;
77
+ metadata?: Json | null;
78
+ };
79
+ Update: {
80
+ content?: string;
81
+ created_at?: string;
82
+ embedding?: string | null;
83
+ file_id?: string;
84
+ id?: string;
85
+ metadata?: Json | null;
86
+ };
87
+ Relationships: [];
88
+ };
89
+ };
90
+ Views: Record<never, never>;
91
+ Functions: {
92
+ match_documents: {
93
+ Args: {
94
+ filter?: Json;
95
+ match_count: number;
96
+ query_embedding: string;
97
+ };
98
+ Returns: {
99
+ content: string;
100
+ created_at: string;
101
+ embedding: string;
102
+ file_id: string;
103
+ id: string;
104
+ metadata: Json;
105
+ similarity: number;
106
+ }[];
107
+ };
108
+ };
109
+ Enums: Record<never, never>;
110
+ CompositeTypes: Record<never, never>;
111
+ };
112
+ storage: {
113
+ Tables: {
114
+ buckets: {
115
+ Row: {
116
+ allowed_mime_types: string[] | null;
117
+ avif_autodetection: boolean | null;
118
+ created_at: string | null;
119
+ file_size_limit: number | null;
120
+ id: string;
121
+ name: string;
122
+ owner: string | null;
123
+ owner_id: string | null;
124
+ public: boolean | null;
125
+ type: Database['storage']['Enums']['buckettype'];
126
+ updated_at: string | null;
127
+ };
128
+ Insert: {
129
+ allowed_mime_types?: string[] | null;
130
+ avif_autodetection?: boolean | null;
131
+ created_at?: string | null;
132
+ file_size_limit?: number | null;
133
+ id: string;
134
+ name: string;
135
+ owner?: string | null;
136
+ owner_id?: string | null;
137
+ public?: boolean | null;
138
+ type?: Database['storage']['Enums']['buckettype'];
139
+ updated_at?: string | null;
140
+ };
141
+ Update: {
142
+ allowed_mime_types?: string[] | null;
143
+ avif_autodetection?: boolean | null;
144
+ created_at?: string | null;
145
+ file_size_limit?: number | null;
146
+ id?: string;
147
+ name?: string;
148
+ owner?: string | null;
149
+ owner_id?: string | null;
150
+ public?: boolean | null;
151
+ type?: Database['storage']['Enums']['buckettype'];
152
+ updated_at?: string | null;
153
+ };
154
+ Relationships: [];
155
+ };
156
+ buckets_analytics: {
157
+ Row: {
158
+ created_at: string;
159
+ deleted_at: string | null;
160
+ format: string;
161
+ id: string;
162
+ name: string;
163
+ type: Database['storage']['Enums']['buckettype'];
164
+ updated_at: string;
165
+ };
166
+ Insert: {
167
+ created_at?: string;
168
+ deleted_at?: string | null;
169
+ format?: string;
170
+ id?: string;
171
+ name: string;
172
+ type?: Database['storage']['Enums']['buckettype'];
173
+ updated_at?: string;
174
+ };
175
+ Update: {
176
+ created_at?: string;
177
+ deleted_at?: string | null;
178
+ format?: string;
179
+ id?: string;
180
+ name?: string;
181
+ type?: Database['storage']['Enums']['buckettype'];
182
+ updated_at?: string;
183
+ };
184
+ Relationships: [];
185
+ };
186
+ buckets_vectors: {
187
+ Row: {
188
+ created_at: string;
189
+ id: string;
190
+ type: Database['storage']['Enums']['buckettype'];
191
+ updated_at: string;
192
+ };
193
+ Insert: {
194
+ created_at?: string;
195
+ id: string;
196
+ type?: Database['storage']['Enums']['buckettype'];
197
+ updated_at?: string;
198
+ };
199
+ Update: {
200
+ created_at?: string;
201
+ id?: string;
202
+ type?: Database['storage']['Enums']['buckettype'];
203
+ updated_at?: string;
204
+ };
205
+ Relationships: [];
206
+ };
207
+ iceberg_namespaces: {
208
+ Row: {
209
+ bucket_name: string;
210
+ catalog_id: string;
211
+ created_at: string;
212
+ id: string;
213
+ metadata: Json;
214
+ name: string;
215
+ updated_at: string;
216
+ };
217
+ Insert: {
218
+ bucket_name: string;
219
+ catalog_id: string;
220
+ created_at?: string;
221
+ id?: string;
222
+ metadata?: Json;
223
+ name: string;
224
+ updated_at?: string;
225
+ };
226
+ Update: {
227
+ bucket_name?: string;
228
+ catalog_id?: string;
229
+ created_at?: string;
230
+ id?: string;
231
+ metadata?: Json;
232
+ name?: string;
233
+ updated_at?: string;
234
+ };
235
+ Relationships: [
236
+ {
237
+ foreignKeyName: 'iceberg_namespaces_catalog_id_fkey';
238
+ columns: ['catalog_id'];
239
+ isOneToOne: false;
240
+ referencedRelation: 'buckets_analytics';
241
+ referencedColumns: ['id'];
242
+ }
243
+ ];
244
+ };
245
+ iceberg_tables: {
246
+ Row: {
247
+ bucket_name: string;
248
+ catalog_id: string;
249
+ created_at: string;
250
+ id: string;
251
+ location: string;
252
+ name: string;
253
+ namespace_id: string;
254
+ remote_table_id: string | null;
255
+ shard_id: string | null;
256
+ shard_key: string | null;
257
+ updated_at: string;
258
+ };
259
+ Insert: {
260
+ bucket_name: string;
261
+ catalog_id: string;
262
+ created_at?: string;
263
+ id?: string;
264
+ location: string;
265
+ name: string;
266
+ namespace_id: string;
267
+ remote_table_id?: string | null;
268
+ shard_id?: string | null;
269
+ shard_key?: string | null;
270
+ updated_at?: string;
271
+ };
272
+ Update: {
273
+ bucket_name?: string;
274
+ catalog_id?: string;
275
+ created_at?: string;
276
+ id?: string;
277
+ location?: string;
278
+ name?: string;
279
+ namespace_id?: string;
280
+ remote_table_id?: string | null;
281
+ shard_id?: string | null;
282
+ shard_key?: string | null;
283
+ updated_at?: string;
284
+ };
285
+ Relationships: [
286
+ {
287
+ foreignKeyName: 'iceberg_tables_catalog_id_fkey';
288
+ columns: ['catalog_id'];
289
+ isOneToOne: false;
290
+ referencedRelation: 'buckets_analytics';
291
+ referencedColumns: ['id'];
292
+ },
293
+ {
294
+ foreignKeyName: 'iceberg_tables_namespace_id_fkey';
295
+ columns: ['namespace_id'];
296
+ isOneToOne: false;
297
+ referencedRelation: 'iceberg_namespaces';
298
+ referencedColumns: ['id'];
299
+ }
300
+ ];
301
+ };
302
+ migrations: {
303
+ Row: {
304
+ executed_at: string | null;
305
+ hash: string;
306
+ id: number;
307
+ name: string;
308
+ };
309
+ Insert: {
310
+ executed_at?: string | null;
311
+ hash: string;
312
+ id: number;
313
+ name: string;
314
+ };
315
+ Update: {
316
+ executed_at?: string | null;
317
+ hash?: string;
318
+ id?: number;
319
+ name?: string;
320
+ };
321
+ Relationships: [];
322
+ };
323
+ objects: {
324
+ Row: {
325
+ bucket_id: string | null;
326
+ created_at: string | null;
327
+ id: string;
328
+ last_accessed_at: string | null;
329
+ metadata: Json | null;
330
+ name: string | null;
331
+ owner: string | null;
332
+ owner_id: string | null;
333
+ path_tokens: string[] | null;
334
+ updated_at: string | null;
335
+ user_metadata: Json | null;
336
+ version: string | null;
337
+ };
338
+ Insert: {
339
+ bucket_id?: string | null;
340
+ created_at?: string | null;
341
+ id?: string;
342
+ last_accessed_at?: string | null;
343
+ metadata?: Json | null;
344
+ name?: string | null;
345
+ owner?: string | null;
346
+ owner_id?: string | null;
347
+ path_tokens?: string[] | null;
348
+ updated_at?: string | null;
349
+ user_metadata?: Json | null;
350
+ version?: string | null;
351
+ };
352
+ Update: {
353
+ bucket_id?: string | null;
354
+ created_at?: string | null;
355
+ id?: string;
356
+ last_accessed_at?: string | null;
357
+ metadata?: Json | null;
358
+ name?: string | null;
359
+ owner?: string | null;
360
+ owner_id?: string | null;
361
+ path_tokens?: string[] | null;
362
+ updated_at?: string | null;
363
+ user_metadata?: Json | null;
364
+ version?: string | null;
365
+ };
366
+ Relationships: [
367
+ {
368
+ foreignKeyName: 'objects_bucketId_fkey';
369
+ columns: ['bucket_id'];
370
+ isOneToOne: false;
371
+ referencedRelation: 'buckets';
372
+ referencedColumns: ['id'];
373
+ }
374
+ ];
375
+ };
376
+ s3_multipart_uploads: {
377
+ Row: {
378
+ bucket_id: string;
379
+ created_at: string;
380
+ id: string;
381
+ in_progress_size: number;
382
+ key: string;
383
+ owner_id: string | null;
384
+ upload_signature: string;
385
+ user_metadata: Json | null;
386
+ version: string;
387
+ };
388
+ Insert: {
389
+ bucket_id: string;
390
+ created_at?: string;
391
+ id: string;
392
+ in_progress_size?: number;
393
+ key: string;
394
+ owner_id?: string | null;
395
+ upload_signature: string;
396
+ user_metadata?: Json | null;
397
+ version: string;
398
+ };
399
+ Update: {
400
+ bucket_id?: string;
401
+ created_at?: string;
402
+ id?: string;
403
+ in_progress_size?: number;
404
+ key?: string;
405
+ owner_id?: string | null;
406
+ upload_signature?: string;
407
+ user_metadata?: Json | null;
408
+ version?: string;
409
+ };
410
+ Relationships: [
411
+ {
412
+ foreignKeyName: 's3_multipart_uploads_bucket_id_fkey';
413
+ columns: ['bucket_id'];
414
+ isOneToOne: false;
415
+ referencedRelation: 'buckets';
416
+ referencedColumns: ['id'];
417
+ }
418
+ ];
419
+ };
420
+ s3_multipart_uploads_parts: {
421
+ Row: {
422
+ bucket_id: string;
423
+ created_at: string;
424
+ etag: string;
425
+ id: string;
426
+ key: string;
427
+ owner_id: string | null;
428
+ part_number: number;
429
+ size: number;
430
+ upload_id: string;
431
+ version: string;
432
+ };
433
+ Insert: {
434
+ bucket_id: string;
435
+ created_at?: string;
436
+ etag: string;
437
+ id?: string;
438
+ key: string;
439
+ owner_id?: string | null;
440
+ part_number: number;
441
+ size?: number;
442
+ upload_id: string;
443
+ version: string;
444
+ };
445
+ Update: {
446
+ bucket_id?: string;
447
+ created_at?: string;
448
+ etag?: string;
449
+ id?: string;
450
+ key?: string;
451
+ owner_id?: string | null;
452
+ part_number?: number;
453
+ size?: number;
454
+ upload_id?: string;
455
+ version?: string;
456
+ };
457
+ Relationships: [
458
+ {
459
+ foreignKeyName: 's3_multipart_uploads_parts_bucket_id_fkey';
460
+ columns: ['bucket_id'];
461
+ isOneToOne: false;
462
+ referencedRelation: 'buckets';
463
+ referencedColumns: ['id'];
464
+ },
465
+ {
466
+ foreignKeyName: 's3_multipart_uploads_parts_upload_id_fkey';
467
+ columns: ['upload_id'];
468
+ isOneToOne: false;
469
+ referencedRelation: 's3_multipart_uploads';
470
+ referencedColumns: ['id'];
471
+ }
472
+ ];
473
+ };
474
+ vector_indexes: {
475
+ Row: {
476
+ bucket_id: string;
477
+ created_at: string;
478
+ data_type: string;
479
+ dimension: number;
480
+ distance_metric: string;
481
+ id: string;
482
+ metadata_configuration: Json | null;
483
+ name: string;
484
+ updated_at: string;
485
+ };
486
+ Insert: {
487
+ bucket_id: string;
488
+ created_at?: string;
489
+ data_type: string;
490
+ dimension: number;
491
+ distance_metric: string;
492
+ id?: string;
493
+ metadata_configuration?: Json | null;
494
+ name: string;
495
+ updated_at?: string;
496
+ };
497
+ Update: {
498
+ bucket_id?: string;
499
+ created_at?: string;
500
+ data_type?: string;
501
+ dimension?: number;
502
+ distance_metric?: string;
503
+ id?: string;
504
+ metadata_configuration?: Json | null;
505
+ name?: string;
506
+ updated_at?: string;
507
+ };
508
+ Relationships: [
509
+ {
510
+ foreignKeyName: 'vector_indexes_bucket_id_fkey';
511
+ columns: ['bucket_id'];
512
+ isOneToOne: false;
513
+ referencedRelation: 'buckets_vectors';
514
+ referencedColumns: ['id'];
515
+ }
516
+ ];
517
+ };
518
+ };
519
+ Views: Record<never, never>;
520
+ Functions: {
521
+ can_insert_object: {
522
+ Args: {
523
+ bucketid: string;
524
+ metadata: Json;
525
+ name: string;
526
+ owner: string;
527
+ };
528
+ Returns: undefined;
529
+ };
530
+ extension: {
531
+ Args: {
532
+ name: string;
533
+ };
534
+ Returns: string;
535
+ };
536
+ filename: {
537
+ Args: {
538
+ name: string;
539
+ };
540
+ Returns: string;
541
+ };
542
+ foldername: {
543
+ Args: {
544
+ name: string;
545
+ };
546
+ Returns: string[];
547
+ };
548
+ get_common_prefix: {
549
+ Args: {
550
+ p_delimiter: string;
551
+ p_key: string;
552
+ p_prefix: string;
553
+ };
554
+ Returns: string;
555
+ };
556
+ get_size_by_bucket: {
557
+ Args: never;
558
+ Returns: {
559
+ bucket_id: string;
560
+ size: number;
561
+ }[];
562
+ };
563
+ list_multipart_uploads_with_delimiter: {
564
+ Args: {
565
+ bucket_id: string;
566
+ delimiter_param: string;
567
+ max_keys?: number;
568
+ next_key_token?: string;
569
+ next_upload_token?: string;
570
+ prefix_param: string;
571
+ };
572
+ Returns: {
573
+ created_at: string;
574
+ id: string;
575
+ key: string;
576
+ }[];
577
+ };
578
+ list_objects_with_delimiter: {
579
+ Args: {
580
+ _bucket_id: string;
581
+ delimiter_param: string;
582
+ max_keys?: number;
583
+ next_token?: string;
584
+ prefix_param: string;
585
+ sort_order?: string;
586
+ start_after?: string;
587
+ };
588
+ Returns: {
589
+ created_at: string;
590
+ id: string;
591
+ last_accessed_at: string;
592
+ metadata: Json;
593
+ name: string;
594
+ updated_at: string;
595
+ }[];
596
+ };
597
+ operation: {
598
+ Args: never;
599
+ Returns: string;
600
+ };
601
+ search: {
602
+ Args: {
603
+ bucketname: string;
604
+ levels?: number;
605
+ limits?: number;
606
+ offsets?: number;
607
+ prefix: string;
608
+ search?: string;
609
+ sortcolumn?: string;
610
+ sortorder?: string;
611
+ };
612
+ Returns: {
613
+ created_at: string;
614
+ id: string;
615
+ last_accessed_at: string;
616
+ metadata: Json;
617
+ name: string;
618
+ updated_at: string;
619
+ }[];
620
+ };
621
+ search_by_timestamp: {
622
+ Args: {
623
+ p_bucket_id: string;
624
+ p_level: number;
625
+ p_limit: number;
626
+ p_prefix: string;
627
+ p_sort_column: string;
628
+ p_sort_column_after: string;
629
+ p_sort_order: string;
630
+ p_start_after: string;
631
+ };
632
+ Returns: {
633
+ created_at: string;
634
+ id: string;
635
+ key: string;
636
+ last_accessed_at: string;
637
+ metadata: Json;
638
+ name: string;
639
+ updated_at: string;
640
+ }[];
641
+ };
642
+ search_v2: {
643
+ Args: {
644
+ bucket_name: string;
645
+ levels?: number;
646
+ limits?: number;
647
+ prefix: string;
648
+ sort_column?: string;
649
+ sort_column_after?: string;
650
+ sort_order?: string;
651
+ start_after?: string;
652
+ };
653
+ Returns: {
654
+ created_at: string;
655
+ id: string;
656
+ key: string;
657
+ last_accessed_at: string;
658
+ metadata: Json;
659
+ name: string;
660
+ updated_at: string;
661
+ }[];
662
+ };
663
+ };
664
+ Enums: {
665
+ buckettype: 'STANDARD' | 'ANALYTICS' | 'VECTOR';
666
+ };
667
+ CompositeTypes: Record<never, never>;
668
+ };
669
+ }
670
+ type DatabaseWithoutInternals = Omit<Database, '__InternalSupabase'>;
671
+ type DefaultSchema = DatabaseWithoutInternals[Extract<keyof Database, 'public'>];
672
+ export type Tables<DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema['Tables'] & DefaultSchema['Views']) | {
673
+ schema: keyof DatabaseWithoutInternals;
674
+ }, TableName extends DefaultSchemaTableNameOrOptions extends {
675
+ schema: keyof DatabaseWithoutInternals;
676
+ } ? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] & DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Views']) : never = never> = DefaultSchemaTableNameOrOptions extends {
677
+ schema: keyof DatabaseWithoutInternals;
678
+ } ? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] & DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Views'])[TableName] extends {
679
+ Row: infer R;
680
+ } ? R : never : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema['Tables'] & DefaultSchema['Views']) ? (DefaultSchema['Tables'] & DefaultSchema['Views'])[DefaultSchemaTableNameOrOptions] extends {
681
+ Row: infer R;
682
+ } ? R : never : never;
683
+ export type TablesInsert<DefaultSchemaTableNameOrOptions extends keyof DefaultSchema['Tables'] | {
684
+ schema: keyof DatabaseWithoutInternals;
685
+ }, TableName extends DefaultSchemaTableNameOrOptions extends {
686
+ schema: keyof DatabaseWithoutInternals;
687
+ } ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] : never = never> = DefaultSchemaTableNameOrOptions extends {
688
+ schema: keyof DatabaseWithoutInternals;
689
+ } ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
690
+ Insert: infer I;
691
+ } ? I : never : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema['Tables'] ? DefaultSchema['Tables'][DefaultSchemaTableNameOrOptions] extends {
692
+ Insert: infer I;
693
+ } ? I : never : never;
694
+ export type TablesUpdate<DefaultSchemaTableNameOrOptions extends keyof DefaultSchema['Tables'] | {
695
+ schema: keyof DatabaseWithoutInternals;
696
+ }, TableName extends DefaultSchemaTableNameOrOptions extends {
697
+ schema: keyof DatabaseWithoutInternals;
698
+ } ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] : never = never> = DefaultSchemaTableNameOrOptions extends {
699
+ schema: keyof DatabaseWithoutInternals;
700
+ } ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
701
+ Update: infer U;
702
+ } ? U : never : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema['Tables'] ? DefaultSchema['Tables'][DefaultSchemaTableNameOrOptions] extends {
703
+ Update: infer U;
704
+ } ? U : never : never;
705
+ export type Enums<DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema['Enums'] | {
706
+ schema: keyof DatabaseWithoutInternals;
707
+ }, EnumName extends DefaultSchemaEnumNameOrOptions extends {
708
+ schema: keyof DatabaseWithoutInternals;
709
+ } ? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions['schema']]['Enums'] : never = never> = DefaultSchemaEnumNameOrOptions extends {
710
+ schema: keyof DatabaseWithoutInternals;
711
+ } ? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions['schema']]['Enums'][EnumName] : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema['Enums'] ? DefaultSchema['Enums'][DefaultSchemaEnumNameOrOptions] : never;
712
+ export type CompositeTypes<PublicCompositeTypeNameOrOptions extends keyof DefaultSchema['CompositeTypes'] | {
713
+ schema: keyof DatabaseWithoutInternals;
714
+ }, CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
715
+ schema: keyof DatabaseWithoutInternals;
716
+ } ? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'] : never = never> = PublicCompositeTypeNameOrOptions extends {
717
+ schema: keyof DatabaseWithoutInternals;
718
+ } ? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'][CompositeTypeName] : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema['CompositeTypes'] ? DefaultSchema['CompositeTypes'][PublicCompositeTypeNameOrOptions] : never;
719
+ export declare const Constants: {
720
+ readonly core: {
721
+ readonly Enums: {};
722
+ };
723
+ readonly langchain: {
724
+ readonly Enums: {};
725
+ };
726
+ readonly public: {
727
+ readonly Enums: {};
728
+ };
729
+ readonly storage: {
730
+ readonly Enums: {
731
+ readonly buckettype: readonly ["STANDARD", "ANALYTICS", "VECTOR"];
732
+ };
733
+ };
734
+ };
735
+ export {};
736
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../lib/generated/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type * from './document';
2
+ export * from './embedding-service';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,113 @@
1
+ import { Document as e } from "langchain";
2
+ import { Mime as t } from "@freehour/mime";
3
+ import { DatabaseService as n, FileNotSupportedError as r, StorageService as i } from "@freehour/supabase-core";
4
+ import { JSONLinesLoader as a, JSONLoader as o } from "@langchain/classic/document_loaders/fs/json";
5
+ import { TextLoader as s } from "@langchain/classic/document_loaders/fs/text";
6
+ import { CSVLoader as c } from "@langchain/community/document_loaders/fs/csv";
7
+ import { DocxLoader as l } from "@langchain/community/document_loaders/fs/docx";
8
+ import { EPubLoader as u } from "@langchain/community/document_loaders/fs/epub";
9
+ import { PDFLoader as d } from "@langchain/community/document_loaders/fs/pdf";
10
+ import { PPTXLoader as f } from "@langchain/community/document_loaders/fs/pptx";
11
+ import { SRTLoader as p } from "@langchain/community/document_loaders/fs/srt";
12
+ import { SupabaseVectorStore as m } from "@langchain/community/vectorstores/supabase";
13
+ import { RecursiveCharacterTextSplitter as h } from "@langchain/textsplitters";
14
+ //#region lib/embedding-service.ts
15
+ var g = class {
16
+ database;
17
+ storage;
18
+ vectorStore;
19
+ splitterOptions;
20
+ constructor({ supabase: e, embeddings: t, chunkSize: r = 1e3, chunkOverlap: a = 200 }) {
21
+ this.database = new n({ supabase: e }), this.storage = new i({
22
+ client: e.storage,
23
+ database: this.database
24
+ }), this.vectorStore = new m(t, {
25
+ client: e,
26
+ tableName: "embeddings",
27
+ queryName: "match_documents"
28
+ }), this.splitterOptions = {
29
+ chunkSize: r,
30
+ chunkOverlap: a
31
+ };
32
+ }
33
+ get embeddings() {
34
+ return this.database.table("public", "embeddings");
35
+ }
36
+ getLoader(e) {
37
+ let n = t.parse(e.type);
38
+ if (n.equals("text/csv")) return new c(e);
39
+ if (n.equals("application/vnd.openxmlformats-officedocument.wordprocessingml.document")) return new l(e, { type: "docx" });
40
+ if (n.equals("application/msword")) return new l(e, { type: "doc" });
41
+ if (n.equals("application/epub+zip")) return new u(URL.createObjectURL(e));
42
+ if (n.equals("application/json")) return new o(e);
43
+ if (n.equals("application/jsonl")) return new a(e, "");
44
+ if (n.equals("application/pdf")) return new d(e);
45
+ if (n.equals("application/vnd.openxmlformats-officedocument.presentationml.presentation")) return new f(e);
46
+ if (n.equals("application/x-subrip")) return new p(e);
47
+ if (n.type === "text") return new s(e);
48
+ throw new r(`File type ${e.type} is not supported`, {
49
+ fileName: e.name,
50
+ fileType: e.type
51
+ });
52
+ }
53
+ getSplitter(e) {
54
+ let n = {
55
+ "text/x-c++src": "cpp",
56
+ "text/x-go": "go",
57
+ "text/x-java-source": "java",
58
+ "application/javascript": "js",
59
+ "application/x-httpd-php": "php",
60
+ "application/x-protobuf": "proto",
61
+ "text/x-python": "python",
62
+ "text/x-rst": "rst",
63
+ "text/x-ruby": "ruby",
64
+ "text/x-rustsrc": "rust",
65
+ "text/x-scala": "scala",
66
+ "text/x-swift": "swift",
67
+ "text/markdown": "markdown",
68
+ "application/x-latex": "latex",
69
+ "text/html": "html",
70
+ "text/x-solidity": "sol"
71
+ }[t.normalize(e.type)];
72
+ return n ? h.fromLanguage(n, this.splitterOptions) : new h(this.splitterOptions);
73
+ }
74
+ async createEmbeddings(t, n) {
75
+ let { file: r } = await this.storage.downloadFile(t), i = this.getLoader(r), a = this.getSplitter(r), o = await i.load().then(async (e) => a.splitDocuments(e)).then((i) => i.map((i) => new e({
76
+ pageContent: i.pageContent,
77
+ id: i.id,
78
+ metadata: {
79
+ ...i.metadata,
80
+ name: r.name,
81
+ size: r.size,
82
+ type: r.type,
83
+ ...n,
84
+ ...t
85
+ }
86
+ })));
87
+ return await this.vectorStore.addDocuments(o), o;
88
+ }
89
+ async deleteEmbeddings({ fileId: e }) {
90
+ let { data: t } = await this.embeddings.query.select(["id"]).eq("file_id", e).throwOnError(), n = t.map(({ id: e }) => e);
91
+ return await this.vectorStore.delete({ ids: n }), n;
92
+ }
93
+ async updateEmbeddings(e, t) {
94
+ return await this.deleteEmbeddings(e), this.createEmbeddings(e, t);
95
+ }
96
+ async ingest(e, t) {
97
+ let n = await this.storage.getFileStorageLocation(e);
98
+ return this.updateEmbeddings(n, typeof t == "function" ? t(n) : t);
99
+ }
100
+ async update(e, t) {
101
+ let { data: n } = await this.database.schema("langchain").rpc("get_outdated_embeddings", { bucket: e }).throwOnError();
102
+ return Promise.allSettled(n.map(async ({ bucket_id: e, path_tokens: n, file_id: r }) => this.ingest({
103
+ bucket: e,
104
+ path: n.join("/"),
105
+ fileId: r
106
+ }, t)));
107
+ }
108
+ retriever(e) {
109
+ return this.vectorStore.asRetriever(e);
110
+ }
111
+ };
112
+ //#endregion
113
+ export { g as EmbeddingService };
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@freehour/supabase-langchain",
3
+ "private": false,
4
+ "displayName": "Supabase-LangChain",
5
+ "description": "Integration package for using LangChain with Supabase",
6
+ "version": "1.0.0",
7
+ "type": "module",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/freehour/supabase-langchain.git"
11
+ },
12
+ "scripts": {
13
+ "lint": "eslint ./lib --ext ts",
14
+ "build": "bun run lint && tsc && vite build",
15
+ "postinstall": "bun ./scripts/copy-supabase-assets.js"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "supabase/migrations/0001_supabase_langchain.sql",
20
+ "supabase/schemas/supabase-langchain.sql",
21
+ "scripts/copy-supabase-assets.js"
22
+ ],
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js"
27
+ }
28
+ },
29
+ "dependencies": {
30
+ "@freehour/mime": "^1.1.7",
31
+ "@freehour/supabase-core": "^2.0.4",
32
+ "@langchain/classic": "^1.0.29",
33
+ "@langchain/community": "^1.1.27",
34
+ "@langchain/core": "^1.1.39",
35
+ "@langchain/textsplitters": "^1.0.1",
36
+ "@supabase/storage-js": "^2.103.0",
37
+ "@supabase/supabase-js": "^2.103.0",
38
+ "langchain": "^1.3.1",
39
+ "officeparser": "^6.0.7",
40
+ "pdf-parse": "^2.4.5",
41
+ "srt-parser-2": "^1.2.3"
42
+ },
43
+ "devDependencies": {
44
+ "@freehour/eslint-rules": "^1.0.19",
45
+ "ajv": "^8.18.0",
46
+ "bun-types": "^1.3.11",
47
+ "eslint": "9.39.4",
48
+ "supabase": "^2.88.1",
49
+ "typescript": "^6.0.2",
50
+ "vite": "^8.0.8",
51
+ "vite-plugin-dts": "^4.5.4"
52
+ },
53
+ "trustedDependencies": [
54
+ "@freehour/supabase-core",
55
+ "supabase",
56
+ "tesseract.js",
57
+ "tree-sitter",
58
+ "unrs-resolver"
59
+ ]
60
+ }
@@ -0,0 +1,60 @@
1
+ // scripts/copy-supabase-assets.js
2
+ // Copies migrations and schemas from @freehour/supabase-core to ./supabase in the consuming package
3
+
4
+ import { fileURLToPath } from 'url';
5
+ import { dirname, join, resolve } from 'path';
6
+ import { copyFileSync, mkdirSync, existsSync, readdirSync, statSync } from 'fs';
7
+
8
+ // Get the directory of this script
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = dirname(__filename);
11
+
12
+ // Find the package root (assume script is in node_modules/@freehour/supabase-core/scripts)
13
+ const packageRoot = resolve(__dirname, '..');
14
+ const sourceDir = join(packageRoot, 'supabase');
15
+ const destDir = resolve(packageRoot, '..', '..', '..', 'supabase');
16
+
17
+ function copyRecursive(src, dest) {
18
+ if (!existsSync(src)) {
19
+ console.warn(`[WARN] Source does not exist: ${src}`);
20
+ return;
21
+ }
22
+ let stats;
23
+ try {
24
+ stats = statSync(src);
25
+ } catch (err) {
26
+ console.error(`[ERROR] Failed to stat: ${src}`, err);
27
+ return;
28
+ }
29
+ if (stats.isDirectory()) {
30
+ if (!existsSync(dest)) {
31
+ try {
32
+ mkdirSync(dest, { recursive: true });
33
+ console.log(`[INFO] Created directory: ${dest}`);
34
+ } catch (err) {
35
+ console.error(`[ERROR] Failed to create directory: ${dest}`, err);
36
+ return;
37
+ }
38
+ }
39
+ for (const file of readdirSync(src)) {
40
+ copyRecursive(join(src, file), join(dest, file));
41
+ }
42
+ } else {
43
+ try {
44
+ copyFileSync(src, dest);
45
+ console.log(`[INFO] Copied file: ${src} -> ${dest}`);
46
+ } catch (err) {
47
+ console.error(`[ERROR] Failed to copy file: ${src} -> ${dest}`, err);
48
+ }
49
+ }
50
+ }
51
+
52
+ if (process.env.INIT_CWD === process.cwd())
53
+ process.exit(); // Prevent running in the package root
54
+
55
+ // Copy migrations and schemas folders
56
+ for (const folder of ['migrations', 'schemas']) {
57
+ const src = join(sourceDir, folder);
58
+ const dest = join(destDir, folder);
59
+ copyRecursive(src, dest);
60
+ }
@@ -0,0 +1,143 @@
1
+ create extension if not exists "vector" with schema "extensions";
2
+
3
+ create schema if not exists "langchain";
4
+
5
+
6
+ create table "public"."embeddings" (
7
+ "id" uuid not null default gen_random_uuid(),
8
+ "file_id" uuid not null,
9
+ "created_at" timestamp with time zone not null default (now() AT TIME ZONE 'utc'::text),
10
+ "content" text not null,
11
+ "metadata" jsonb,
12
+ "embedding" extensions.vector(768)
13
+ );
14
+
15
+
16
+ CREATE UNIQUE INDEX embeddings_pkey ON public.embeddings USING btree (id);
17
+
18
+ CREATE INDEX public_embeddings_embedding_idx ON public.embeddings USING ivfflat (embedding extensions.vector_cosine_ops) WITH (lists='128');
19
+
20
+ CREATE INDEX public_embeddings_file_id_idx ON public.embeddings USING btree (file_id);
21
+
22
+ alter table "public"."embeddings" add constraint "embeddings_pkey" PRIMARY KEY using index "embeddings_pkey";
23
+
24
+ alter table "public"."embeddings" add constraint "embeddings_file_id_fkey" FOREIGN KEY (file_id) REFERENCES storage.objects(id) ON DELETE CASCADE not valid;
25
+
26
+ alter table "public"."embeddings" validate constraint "embeddings_file_id_fkey";
27
+
28
+ set check_function_bodies = off;
29
+
30
+ CREATE OR REPLACE FUNCTION langchain.embeddings_apply_metadata()
31
+ RETURNS trigger
32
+ LANGUAGE plpgsql
33
+ SET search_path TO ''
34
+ AS $function$
35
+ BEGIN
36
+ IF NEW.metadata ? 'fileId' THEN
37
+ NEW.file_id := NEW.metadata ->> 'fileId';
38
+ END IF;
39
+ RETURN NEW;
40
+ END;
41
+ $function$
42
+ ;
43
+
44
+ CREATE OR REPLACE FUNCTION langchain.get_outdated_embeddings(bucket text)
45
+ RETURNS TABLE(file_id uuid, bucket_id uuid, path_tokens text[])
46
+ LANGUAGE plpgsql
47
+ SET search_path TO ''
48
+ AS $function$
49
+ BEGIN
50
+ RETURN QUERY
51
+ SELECT f.id, f.bucket_id, f.path_tokens
52
+ FROM langchain.outdated_embeddings AS f
53
+ WHERE f.bucket_id = bucket;
54
+ END;
55
+ $function$
56
+ ;
57
+
58
+ create or replace view "langchain"."outdated_embeddings" as SELECT f.id,
59
+ f.bucket_id,
60
+ f.name,
61
+ f.owner,
62
+ f.created_at,
63
+ f.updated_at,
64
+ f.last_accessed_at,
65
+ f.metadata,
66
+ f.path_tokens,
67
+ f.version,
68
+ f.owner_id,
69
+ f.user_metadata
70
+ FROM (storage.objects f
71
+ LEFT JOIN public.embeddings e ON ((e.file_id = f.id)))
72
+ WHERE ((e.file_id IS NULL) OR (f.updated_at > e.created_at));
73
+
74
+
75
+ CREATE OR REPLACE FUNCTION public.match_documents(query_embedding extensions.vector, match_count integer, filter jsonb DEFAULT '{}'::jsonb)
76
+ RETURNS TABLE(id uuid, file_id uuid, created_at timestamp with time zone, content text, metadata jsonb, embedding extensions.vector, similarity double precision)
77
+ LANGUAGE plpgsql
78
+ SET search_path TO ''
79
+ AS $function$
80
+ #variable_conflict use_column
81
+ BEGIN
82
+ RETURN QUERY
83
+ SELECT
84
+ id,
85
+ file_id,
86
+ created_at,
87
+ content,
88
+ metadata,
89
+ embedding,
90
+ 1 - (embedding OPERATOR(extensions.<=>) query_embedding) AS similarity
91
+ FROM public.embeddings
92
+ WHERE metadata @> filter
93
+ ORDER BY embedding OPERATOR(extensions.<=>) query_embedding
94
+ LIMIT match_count;
95
+ END;
96
+ $function$
97
+ ;
98
+
99
+ grant delete on table "public"."embeddings" to "anon";
100
+
101
+ grant insert on table "public"."embeddings" to "anon";
102
+
103
+ grant references on table "public"."embeddings" to "anon";
104
+
105
+ grant select on table "public"."embeddings" to "anon";
106
+
107
+ grant trigger on table "public"."embeddings" to "anon";
108
+
109
+ grant truncate on table "public"."embeddings" to "anon";
110
+
111
+ grant update on table "public"."embeddings" to "anon";
112
+
113
+ grant delete on table "public"."embeddings" to "authenticated";
114
+
115
+ grant insert on table "public"."embeddings" to "authenticated";
116
+
117
+ grant references on table "public"."embeddings" to "authenticated";
118
+
119
+ grant select on table "public"."embeddings" to "authenticated";
120
+
121
+ grant trigger on table "public"."embeddings" to "authenticated";
122
+
123
+ grant truncate on table "public"."embeddings" to "authenticated";
124
+
125
+ grant update on table "public"."embeddings" to "authenticated";
126
+
127
+ grant delete on table "public"."embeddings" to "service_role";
128
+
129
+ grant insert on table "public"."embeddings" to "service_role";
130
+
131
+ grant references on table "public"."embeddings" to "service_role";
132
+
133
+ grant select on table "public"."embeddings" to "service_role";
134
+
135
+ grant trigger on table "public"."embeddings" to "service_role";
136
+
137
+ grant truncate on table "public"."embeddings" to "service_role";
138
+
139
+ grant update on table "public"."embeddings" to "service_role";
140
+
141
+ CREATE TRIGGER langchain_embeddings_apply_metadata BEFORE INSERT OR UPDATE ON public.embeddings FOR EACH ROW EXECUTE FUNCTION langchain.embeddings_apply_metadata();
142
+
143
+