@memberjunction/ai-vector-sync 2.4.1 → 2.5.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.
Files changed (61) hide show
  1. package/dist/config.d.ts +13 -0
  2. package/dist/config.d.ts.map +1 -0
  3. package/dist/config.js +21 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/db/db.d.ts +4 -0
  6. package/dist/db/db.d.ts.map +1 -0
  7. package/dist/db/db.js +40 -0
  8. package/dist/db/db.js.map +1 -0
  9. package/dist/db/dbAI.d.ts +4 -0
  10. package/dist/db/dbAI.d.ts.map +1 -0
  11. package/dist/db/dbAI.js +18 -0
  12. package/dist/db/dbAI.js.map +1 -0
  13. package/dist/generic/EntityDocumenTemplateParserBase.d.ts +14 -0
  14. package/dist/generic/EntityDocumenTemplateParserBase.d.ts.map +1 -0
  15. package/dist/generic/EntityDocumenTemplateParserBase.js +76 -0
  16. package/dist/generic/EntityDocumenTemplateParserBase.js.map +1 -0
  17. package/dist/generic/EntityDocumentTemplateParser.d.ts +7 -0
  18. package/dist/generic/EntityDocumentTemplateParser.d.ts.map +1 -0
  19. package/dist/generic/EntityDocumentTemplateParser.js +74 -0
  20. package/dist/generic/EntityDocumentTemplateParser.js.map +1 -0
  21. package/dist/generic/entitySyncConfig.types.d.ts +11 -0
  22. package/dist/generic/entitySyncConfig.types.d.ts.map +1 -0
  23. package/dist/generic/entitySyncConfig.types.js +3 -0
  24. package/dist/generic/entitySyncConfig.types.js.map +1 -0
  25. package/dist/generic/vectorSync.types.d.ts +61 -0
  26. package/dist/generic/vectorSync.types.d.ts.map +1 -0
  27. package/dist/generic/vectorSync.types.js +3 -0
  28. package/dist/generic/vectorSync.types.js.map +1 -0
  29. package/dist/index.d.ts +5 -2014
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +21 -4
  32. package/dist/index.js.map +1 -1
  33. package/dist/models/BatchWorker.d.ts +34 -0
  34. package/dist/models/BatchWorker.d.ts.map +1 -0
  35. package/dist/models/BatchWorker.js +77 -0
  36. package/dist/models/BatchWorker.js.map +1 -0
  37. package/dist/models/EntityDocumentCache.d.ts +27 -0
  38. package/dist/models/EntityDocumentCache.d.ts.map +1 -0
  39. package/dist/models/EntityDocumentCache.js +118 -0
  40. package/dist/models/EntityDocumentCache.js.map +1 -0
  41. package/dist/models/PagedRecords.d.ts +9 -0
  42. package/dist/models/PagedRecords.d.ts.map +1 -0
  43. package/dist/models/PagedRecords.js +19 -0
  44. package/dist/models/PagedRecords.js.map +1 -0
  45. package/dist/models/entityVectorSync.d.ts +28 -0
  46. package/dist/models/entityVectorSync.d.ts.map +1 -0
  47. package/dist/models/entityVectorSync.js +486 -0
  48. package/dist/models/entityVectorSync.js.map +1 -0
  49. package/dist/models/workers/UpsertVectors.d.ts +2 -0
  50. package/dist/models/workers/UpsertVectors.d.ts.map +1 -0
  51. package/dist/models/workers/UpsertVectors.js +48 -0
  52. package/dist/models/workers/UpsertVectors.js.map +1 -0
  53. package/dist/models/workers/VectorizeTemplates.d.ts +2 -0
  54. package/dist/models/workers/VectorizeTemplates.d.ts.map +1 -0
  55. package/dist/models/workers/VectorizeTemplates.js +88 -0
  56. package/dist/models/workers/VectorizeTemplates.js.map +1 -0
  57. package/dist/models/workers/upserter.d.ts +2 -0
  58. package/dist/models/workers/upserter.d.ts.map +1 -0
  59. package/dist/models/workers/upserter.js +11 -0
  60. package/dist/models/workers/upserter.js.map +1 -0
  61. package/package.json +14 -14
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VectorizeEntity = void 0;
4
+ const node_worker_threads_1 = require("node:worker_threads");
5
+ const templates_1 = require("@memberjunction/templates");
6
+ const core_1 = require("@memberjunction/core");
7
+ const global_1 = require("@memberjunction/global");
8
+ const ai_1 = require("@memberjunction/ai");
9
+ const ai_openai_1 = require("@memberjunction/ai-openai");
10
+ const ai_mistral_1 = require("@memberjunction/ai-mistral");
11
+ (0, ai_openai_1.LoadOpenAILLM)();
12
+ (0, ai_mistral_1.LoadMistralEmbedding)();
13
+ const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
14
+ async function VectorizeEntity() {
15
+ const { batch, context } = node_worker_threads_1.workerData;
16
+ if (!batch) {
17
+ throw new Error('batch is required for the AnnotationWorker');
18
+ }
19
+ const template = context.template;
20
+ const templateContent = context.templateContent;
21
+ templates_1.TemplateEngineServer.Instance.SetupNunjucks();
22
+ const startTime = Date.now();
23
+ const embedding = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(ai_1.Embeddings, context.embeddingDriverClass, context.embeddingAPIKey);
24
+ const processedBatch = [];
25
+ for (const entityData of batch) {
26
+ const validationResult = ValidateTemplateInput(template, entityData);
27
+ if (!validationResult.Success) {
28
+ (0, core_1.LogError)(`Validation error for record ${entityData.ID}`, undefined, validationResult.Errors.map(e => e.Message).join('\n'));
29
+ continue;
30
+ }
31
+ let result = await templates_1.TemplateEngineServer.Instance.RenderTemplate(template, templateContent, entityData, true);
32
+ if (result.Success) {
33
+ processedBatch.push(result.Output);
34
+ }
35
+ else {
36
+ (0, core_1.LogError)(`Error rendering template for record ${entityData.ID}`, undefined, result.Message);
37
+ }
38
+ }
39
+ const embeddings = await embedding.EmbedTexts({ texts: processedBatch, model: null });
40
+ const embeddingBatch = embeddings.vectors.map((vector, index) => {
41
+ return {
42
+ ID: index,
43
+ Vector: vector,
44
+ EntityData: batch[index],
45
+ __mj_recordID: batch[index].__mj_recordID,
46
+ __mj_compositeKey: batch[index].__mj_compositeKey,
47
+ EntityDocument: context.entityDocument,
48
+ VectorID: batch[index].VectorID,
49
+ VectorIndexID: batch[index].VectorIndexID,
50
+ TemplateContent: templateContent.TemplateText
51
+ };
52
+ });
53
+ const runTime = Date.now() - startTime;
54
+ const elapsed = Date.now() - context.executionId;
55
+ console.log('\t##### Generating Vectors: Complate #####', { threadId: node_worker_threads_1.threadId, now: Date.now() % 100_000, runTime, elapsed });
56
+ await delay(context.delayTimeMS);
57
+ node_worker_threads_1.parentPort.postMessage({ ...node_worker_threads_1.workerData, batch: embeddingBatch });
58
+ }
59
+ exports.VectorizeEntity = VectorizeEntity;
60
+ function ValidateTemplateInput(template, data) {
61
+ const result = new core_1.ValidationResult();
62
+ let params = template.Params;
63
+ if (!params) {
64
+ result.Errors.push({
65
+ Source: "",
66
+ Message: "Params property not found on the template.",
67
+ Value: "",
68
+ Type: 'Failure'
69
+ });
70
+ }
71
+ params?.forEach((p) => {
72
+ if (p.IsRequired) {
73
+ if (!data || data[p.Name] === undefined || data[p.Name] === null ||
74
+ (typeof data[p.Name] === 'string' && data[p.Name].toString().trim() === '')) {
75
+ result.Errors.push({
76
+ Source: p.Name,
77
+ Message: `Parameter ${p.Name} is required.`,
78
+ Value: data[p.Name],
79
+ Type: 'Failure'
80
+ });
81
+ }
82
+ }
83
+ });
84
+ result.Success = result.Errors.some(e => e.Type === 'Failure') ? false : true;
85
+ return result;
86
+ }
87
+ VectorizeEntity();
88
+ //# sourceMappingURL=VectorizeTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VectorizeTemplates.js","sourceRoot":"","sources":["../../../src/models/workers/VectorizeTemplates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function PostMessagePostUpsert(): void;
2
+ //# sourceMappingURL=upserter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upserter.d.ts","sourceRoot":"","sources":["../../../src/models/workers/upserter.ts"],"names":[],"mappings":"AAIA,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PostMessagePostUpsert = void 0;
4
+ const node_worker_threads_1 = require("node:worker_threads");
5
+ function PostMessagePostUpsert() {
6
+ const { batch, context } = node_worker_threads_1.workerData;
7
+ node_worker_threads_1.parentPort.postMessage({ ...node_worker_threads_1.workerData, ...batch });
8
+ }
9
+ exports.PostMessagePostUpsert = PostMessagePostUpsert;
10
+ PostMessagePostUpsert();
11
+ //# sourceMappingURL=upserter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upserter.js","sourceRoot":"","sources":["../../../src/models/workers/upserter.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAI7D,SAAgB,qBAAqB;IAEnC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,gCAA8C,CAAC;IAC1E,gCAAU,CAAC,WAAW,CAAC,EAAE,GAAG,gCAAU,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AACtD,CAAC;AAJD,sDAIC;AAED,qBAAqB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ai-vector-sync",
3
- "version": "2.4.1",
3
+ "version": "2.5.0",
4
4
  "description": "MemberJunction: AI Vector/Entity Sync Package - handles synchronization between MemberJunction entities and vector databases",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -8,24 +8,24 @@
8
8
  "/dist"
9
9
  ],
10
10
  "scripts": {
11
- "build": "pkgroll --sourcemap --minify",
12
- "build:tsc": "tsc",
11
+ "build": "tsc",
12
+ "buld:pgk": "pkgroll --sourcemap --minify",
13
13
  "watch": "pkgroll --sourcemap --watch"
14
14
  },
15
15
  "author": "MemberJunction.com",
16
16
  "license": "ISC",
17
17
  "dependencies": {
18
- "@memberjunction/ai": "2.4.1",
19
- "@memberjunction/ai-vectordb": "2.4.1",
20
- "@memberjunction/ai-vectors": "2.4.1",
21
- "@memberjunction/ai-vectors-pinecone": "2.4.1",
22
- "@memberjunction/ai-mistral": "2.4.1",
23
- "@memberjunction/aiengine": "2.4.1",
24
- "@memberjunction/core": "2.4.1",
25
- "@memberjunction/global": "2.4.1",
26
- "@memberjunction/templates": "2.4.1",
27
- "@memberjunction/templates-base-types": "2.4.1",
28
- "@memberjunction/ai-openai": "2.4.1",
18
+ "@memberjunction/ai": "2.5.0",
19
+ "@memberjunction/ai-vectordb": "2.5.0",
20
+ "@memberjunction/ai-vectors": "2.5.0",
21
+ "@memberjunction/ai-vectors-pinecone": "2.5.0",
22
+ "@memberjunction/ai-mistral": "2.5.0",
23
+ "@memberjunction/aiengine": "2.5.0",
24
+ "@memberjunction/core": "2.5.0",
25
+ "@memberjunction/global": "2.5.0",
26
+ "@memberjunction/templates": "2.5.0",
27
+ "@memberjunction/templates-base-types": "2.5.0",
28
+ "@memberjunction/ai-openai": "2.5.0",
29
29
  "dotenv": "^16.4.1",
30
30
  "typeorm": "^0.3.20"
31
31
  },