feat: add random graph generation and improve metadata vectorization

Introduced `generateRandomGraph` method to create randomized graphs with configurable entity counts and types, supporting automated testing and experimentation. Enhanced metadata vectorization logic to handle various metadata formats reliably, ensuring compatibility and fallback mechanisms during embedding. Updated `README.md` with detailed feature descriptions and usage guides.
This commit is contained in:
David Snelling 2025-06-05 14:04:29 -07:00
parent 93eb73f471
commit e2f65c8146
8 changed files with 1373 additions and 278 deletions

36
package-lock.json generated
View file

@ -16,12 +16,13 @@
"@tensorflow/tfjs-backend-cpu": "^4.22.0",
"@tensorflow/tfjs-core": "^4.22.0",
"@tensorflow/tfjs-layers": "^4.22.0",
"ascii-tree": "^0.3.0",
"commander": "^14.0.0",
"omelette": "^0.4.17",
"uuid": "^9.0.0"
},
"bin": {
"brainy": "dist/cli.js"
"brainy": "cli-wrapper.js"
},
"devDependencies": {
"@types/jest": "^29.5.3",
@ -2876,12 +2877,13 @@
}
},
"node_modules/@tensorflow/tfjs-converter": {
"version": "4.22.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.22.0.tgz",
"integrity": "sha512-PT43MGlnzIo+YfbsjM79Lxk9lOq6uUwZuCc8rrp0hfpLjF6Jv8jS84u2jFb+WpUeuF4K33ZDNx8CjiYrGQ2trQ==",
"version": "3.21.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-3.21.0.tgz",
"integrity": "sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==",
"license": "Apache-2.0",
"peer": true,
"peerDependencies": {
"@tensorflow/tfjs-core": "4.22.0"
"@tensorflow/tfjs-core": "3.21.0"
}
},
"node_modules/@tensorflow/tfjs-core": {
@ -2932,6 +2934,15 @@
"@tensorflow/tfjs-core": "4.22.0"
}
},
"node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-converter": {
"version": "4.22.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.22.0.tgz",
"integrity": "sha512-PT43MGlnzIo+YfbsjM79Lxk9lOq6uUwZuCc8rrp0hfpLjF6Jv8jS84u2jFb+WpUeuF4K33ZDNx8CjiYrGQ2trQ==",
"license": "Apache-2.0",
"peerDependencies": {
"@tensorflow/tfjs-core": "4.22.0"
}
},
"node_modules/@types/babel__core": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
@ -3451,6 +3462,15 @@
"node": ">=8"
}
},
"node_modules/ascii-tree": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/ascii-tree/-/ascii-tree-0.3.0.tgz",
"integrity": "sha512-eC3TvbRQLw+SY0HCVKPXv56JlZ6EeqLOIHT5oHGd0j98ngLDCjTEYbyHYHxrJcb4OwhqhiEo0zYr/FQpj1+Rpw==",
"license": "MIT",
"dependencies": {
"freetree": "0.2.2"
}
},
"node_modules/async": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
@ -4596,6 +4616,12 @@
"node": ">= 6"
}
},
"node_modules/freetree": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/freetree/-/freetree-0.2.2.tgz",
"integrity": "sha512-bZ0U0Qv2THYrnkrD7B4UMAhWnDm3+va6y2mNfReke9HY7PRdvLgEf5Vl1j70P5KffoioFvV0RFRfIBQMWOLpIw==",
"license": "MIT"
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",