@henrychong-ai/mcp-neo4j-knowledge-graph 1.1.2 ā 1.1.3
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.
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI tool for generating embeddings for entities in the knowledge graph
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npm run embeddings:generate # Generate for all entities without embeddings
|
|
7
|
+
* npm run embeddings:generate -- --limit 10 # Test with first 10 entities
|
|
8
|
+
* npm run embeddings:generate -- --force # Regenerate all embeddings (even if exist)
|
|
9
|
+
*
|
|
10
|
+
* Requirements:
|
|
11
|
+
* - OPENAI_API_KEY environment variable must be set
|
|
12
|
+
* - Neo4j connection configured (NEO4J_URI, NEO4J_USERNAME, NEO4J_PASSWORD)
|
|
13
|
+
*/
|
|
14
|
+
interface GenerateEmbeddingsOptions {
|
|
15
|
+
limit?: number;
|
|
16
|
+
force?: boolean;
|
|
17
|
+
batchSize?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generate embeddings for entities in the knowledge graph
|
|
21
|
+
*/
|
|
22
|
+
declare function generateEmbeddings(options?: GenerateEmbeddingsOptions): Promise<void>;
|
|
23
|
+
export { generateEmbeddings };
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI tool for generating embeddings for entities in the knowledge graph
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npm run embeddings:generate # Generate for all entities without embeddings
|
|
7
|
+
* npm run embeddings:generate -- --limit 10 # Test with first 10 entities
|
|
8
|
+
* npm run embeddings:generate -- --force # Regenerate all embeddings (even if exist)
|
|
9
|
+
*
|
|
10
|
+
* Requirements:
|
|
11
|
+
* - OPENAI_API_KEY environment variable must be set
|
|
12
|
+
* - Neo4j connection configured (NEO4J_URI, NEO4J_USERNAME, NEO4J_PASSWORD)
|
|
13
|
+
*/
|
|
14
|
+
import { Neo4jStorageProvider } from '../storage/neo4j/Neo4jStorageProvider.js';
|
|
15
|
+
import { EmbeddingServiceFactory } from '../embeddings/EmbeddingServiceFactory.js';
|
|
16
|
+
import dotenv from 'dotenv';
|
|
17
|
+
// Load environment variables
|
|
18
|
+
dotenv.config();
|
|
19
|
+
/**
|
|
20
|
+
* Parse command line arguments
|
|
21
|
+
*/
|
|
22
|
+
function parseArgs() {
|
|
23
|
+
const args = process.argv.slice(2);
|
|
24
|
+
const options = {
|
|
25
|
+
batchSize: 10, // Process 10 entities at a time
|
|
26
|
+
};
|
|
27
|
+
for (let i = 0; i < args.length; i++) {
|
|
28
|
+
switch (args[i]) {
|
|
29
|
+
case '--limit':
|
|
30
|
+
options.limit = parseInt(args[++i], 10);
|
|
31
|
+
break;
|
|
32
|
+
case '--force':
|
|
33
|
+
options.force = true;
|
|
34
|
+
break;
|
|
35
|
+
case '--batch-size':
|
|
36
|
+
options.batchSize = parseInt(args[++i], 10);
|
|
37
|
+
break;
|
|
38
|
+
case '--help':
|
|
39
|
+
printHelp();
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return options;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Print help message
|
|
47
|
+
*/
|
|
48
|
+
function printHelp() {
|
|
49
|
+
console.log(`
|
|
50
|
+
Generate Embeddings CLI Tool
|
|
51
|
+
|
|
52
|
+
Usage:
|
|
53
|
+
npm run embeddings:generate [options]
|
|
54
|
+
|
|
55
|
+
Options:
|
|
56
|
+
--limit <n> Generate embeddings for first N entities only (for testing)
|
|
57
|
+
--force Regenerate embeddings even if they already exist
|
|
58
|
+
--batch-size <n> Number of entities to process in each batch (default: 10)
|
|
59
|
+
--help Show this help message
|
|
60
|
+
|
|
61
|
+
Environment Variables:
|
|
62
|
+
OPENAI_API_KEY Required: Your OpenAI API key
|
|
63
|
+
NEO4J_URI Neo4j connection URI (default: bolt://localhost:7687)
|
|
64
|
+
NEO4J_USERNAME Neo4j username (default: neo4j)
|
|
65
|
+
NEO4J_PASSWORD Neo4j password
|
|
66
|
+
|
|
67
|
+
Examples:
|
|
68
|
+
npm run embeddings:generate # Generate for all entities
|
|
69
|
+
npm run embeddings:generate -- --limit 5 # Test with 5 entities first
|
|
70
|
+
npm run embeddings:generate -- --force # Regenerate all
|
|
71
|
+
`);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Generate embeddings for entities in the knowledge graph
|
|
75
|
+
*/
|
|
76
|
+
async function generateEmbeddings(options = {}) {
|
|
77
|
+
console.log('\nš Starting embedding generation...\n');
|
|
78
|
+
// Validate OpenAI API key
|
|
79
|
+
if (!process.env.OPENAI_API_KEY) {
|
|
80
|
+
console.error('ā Error: OPENAI_API_KEY environment variable is not set');
|
|
81
|
+
console.error(' Please set your OpenAI API key:');
|
|
82
|
+
console.error(' export OPENAI_API_KEY=sk-your-key-here\n');
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
// Create storage provider
|
|
86
|
+
console.log('š Connecting to Neo4j...');
|
|
87
|
+
const storageProvider = new Neo4jStorageProvider({
|
|
88
|
+
config: {
|
|
89
|
+
uri: process.env.NEO4J_URI || 'bolt://localhost:7687',
|
|
90
|
+
username: process.env.NEO4J_USERNAME || 'neo4j',
|
|
91
|
+
password: process.env.NEO4J_PASSWORD || '',
|
|
92
|
+
database: process.env.NEO4J_DATABASE || 'neo4j',
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
try {
|
|
96
|
+
// Create embedding service
|
|
97
|
+
console.log('š¤ Initializing OpenAI embedding service...');
|
|
98
|
+
const embeddingService = EmbeddingServiceFactory.createFromEnvironment();
|
|
99
|
+
const modelInfo = embeddingService.getProviderInfo();
|
|
100
|
+
console.log(` Provider: ${modelInfo.provider}`);
|
|
101
|
+
console.log(` Model: ${modelInfo.model}`);
|
|
102
|
+
console.log(` Dimensions: ${modelInfo.dimensions}\n`);
|
|
103
|
+
// Query entities
|
|
104
|
+
const whereClause = options.force
|
|
105
|
+
? 'WHERE e.validTo IS NULL'
|
|
106
|
+
: 'WHERE e.validTo IS NULL AND (e.embedding IS NULL OR size(e.embedding) = 0)';
|
|
107
|
+
const limitClause = options.limit ? `LIMIT ${options.limit}` : '';
|
|
108
|
+
console.log('š Querying entities without embeddings...');
|
|
109
|
+
const query = `
|
|
110
|
+
MATCH (e:Entity)
|
|
111
|
+
${whereClause}
|
|
112
|
+
RETURN e.name AS name, e.observations AS observations, e.entityType AS entityType
|
|
113
|
+
ORDER BY e.name
|
|
114
|
+
${limitClause}
|
|
115
|
+
`;
|
|
116
|
+
const connectionManager = storageProvider.getConnectionManager();
|
|
117
|
+
const result = await connectionManager.executeQuery(query, {});
|
|
118
|
+
const entities = result.records.map((record) => ({
|
|
119
|
+
name: record.get('name'),
|
|
120
|
+
observations: record.get('observations'),
|
|
121
|
+
entityType: record.get('entityType'),
|
|
122
|
+
}));
|
|
123
|
+
if (entities.length === 0) {
|
|
124
|
+
console.log('ā
All entities already have embeddings!\n');
|
|
125
|
+
await storageProvider.close();
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
console.log(` Found ${entities.length} entities to process\n`);
|
|
129
|
+
// Process in batches
|
|
130
|
+
const batchSize = options.batchSize || 10;
|
|
131
|
+
let processed = 0;
|
|
132
|
+
let succeeded = 0;
|
|
133
|
+
let failed = 0;
|
|
134
|
+
for (let i = 0; i < entities.length; i += batchSize) {
|
|
135
|
+
const batch = entities.slice(i, Math.min(i + batchSize, entities.length));
|
|
136
|
+
const batchNum = Math.floor(i / batchSize) + 1;
|
|
137
|
+
const totalBatches = Math.ceil(entities.length / batchSize);
|
|
138
|
+
console.log(`š¦ Processing batch ${batchNum}/${totalBatches} (${batch.length} entities)...`);
|
|
139
|
+
for (const entity of batch) {
|
|
140
|
+
try {
|
|
141
|
+
// Prepare text from observations
|
|
142
|
+
const observations = Array.isArray(entity.observations)
|
|
143
|
+
? entity.observations
|
|
144
|
+
: JSON.parse(entity.observations || '[]');
|
|
145
|
+
const text = observations.join('\n');
|
|
146
|
+
if (!text || text.trim().length === 0) {
|
|
147
|
+
console.log(` ā ļø Skipping ${entity.name}: no observations`);
|
|
148
|
+
processed++;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
// Generate embedding
|
|
152
|
+
const embedding = await embeddingService.generateEmbedding(text);
|
|
153
|
+
// Update entity
|
|
154
|
+
const updateQuery = `
|
|
155
|
+
MATCH (e:Entity {name: $name})
|
|
156
|
+
WHERE e.validTo IS NULL
|
|
157
|
+
SET e.embedding = $embedding, e.updatedAt = $now
|
|
158
|
+
RETURN e.name
|
|
159
|
+
`;
|
|
160
|
+
await connectionManager.executeQuery(updateQuery, {
|
|
161
|
+
name: entity.name,
|
|
162
|
+
embedding,
|
|
163
|
+
now: Date.now(),
|
|
164
|
+
});
|
|
165
|
+
console.log(` ā
${entity.name} (${entity.entityType})`);
|
|
166
|
+
succeeded++;
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
console.error(` ā Failed: ${entity.name}`);
|
|
170
|
+
console.error(` Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
171
|
+
failed++;
|
|
172
|
+
}
|
|
173
|
+
processed++;
|
|
174
|
+
}
|
|
175
|
+
// Progress summary
|
|
176
|
+
const progress = ((processed / entities.length) * 100).toFixed(1);
|
|
177
|
+
console.log(` Progress: ${processed}/${entities.length} (${progress}%)\n`);
|
|
178
|
+
// Rate limiting: small delay between batches
|
|
179
|
+
if (i + batchSize < entities.length) {
|
|
180
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Final summary
|
|
184
|
+
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
185
|
+
console.log('š Embedding Generation Complete!');
|
|
186
|
+
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
187
|
+
console.log(` Total processed: ${processed}`);
|
|
188
|
+
console.log(` ā
Succeeded: ${succeeded}`);
|
|
189
|
+
if (failed > 0) {
|
|
190
|
+
console.log(` ā Failed: ${failed}`);
|
|
191
|
+
}
|
|
192
|
+
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n');
|
|
193
|
+
// Calculate estimated cost
|
|
194
|
+
const avgTokensPerEntity = 200; // Conservative estimate
|
|
195
|
+
const totalTokens = succeeded * avgTokensPerEntity;
|
|
196
|
+
const costPer1MTokens = 0.02; // text-embedding-3-small
|
|
197
|
+
const estimatedCost = (totalTokens / 1000000) * costPer1MTokens;
|
|
198
|
+
console.log(`š° Estimated cost: $${estimatedCost.toFixed(4)} USD`);
|
|
199
|
+
console.log(` (${totalTokens.toLocaleString()} tokens Ć $${costPer1MTokens}/1M tokens)\n`);
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
console.error('\nā Fatal error:', error);
|
|
203
|
+
process.exit(1);
|
|
204
|
+
}
|
|
205
|
+
finally {
|
|
206
|
+
await storageProvider.close();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Main execution
|
|
210
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
211
|
+
const options = parseArgs();
|
|
212
|
+
generateEmbeddings(options).catch((error) => {
|
|
213
|
+
console.error('Unhandled error:', error);
|
|
214
|
+
process.exit(1);
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
export { generateEmbeddings };
|
|
218
|
+
//# sourceMappingURL=generate-embeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-embeddings.js","sourceRoot":"","sources":["../../src/cli/generate-embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,6 +88,35 @@ export class Neo4jSchemaManager {
|
|
|
88
88
|
async createEntityConstraints(recreate = false) {
|
|
89
89
|
this.log('Creating entity name constraint...');
|
|
90
90
|
const constraintName = 'entity_name';
|
|
91
|
+
// Check for conflicting constraints on Entity nodes with 'name' property
|
|
92
|
+
const allConstraints = await this.listConstraints();
|
|
93
|
+
const entityConstraints = allConstraints.filter((c) => {
|
|
94
|
+
// Neo4j returns either 'labelsOrTypes' or 'entityType' depending on version
|
|
95
|
+
const label = c.labelsOrTypes || c.entityType;
|
|
96
|
+
const properties = c.properties;
|
|
97
|
+
return ((label === 'Entity' || (Array.isArray(label) && label.includes('Entity'))) &&
|
|
98
|
+
Array.isArray(properties) &&
|
|
99
|
+
properties.includes('name'));
|
|
100
|
+
});
|
|
101
|
+
// Warn about conflicting constraints
|
|
102
|
+
let hasConflicts = false;
|
|
103
|
+
for (const constraint of entityConstraints) {
|
|
104
|
+
if (constraint.name !== constraintName) {
|
|
105
|
+
hasConflicts = true;
|
|
106
|
+
this.log(`ā ļø WARNING: Found conflicting Entity constraint: ${constraint.name}`);
|
|
107
|
+
this.log(` Properties: ${JSON.stringify(constraint.properties)}`);
|
|
108
|
+
if (recreate) {
|
|
109
|
+
this.log(` Dropping conflicting constraint: ${constraint.name}`);
|
|
110
|
+
await this.dropConstraintIfExists(constraint.name);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this.log(` Run with recreate=true to automatically remove conflicting constraints`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (hasConflicts && !recreate) {
|
|
118
|
+
this.log('ā ļø Conflicting constraints detected. Use npm run neo4j:init with recreate=true to fix automatically.');
|
|
119
|
+
}
|
|
91
120
|
if (recreate) {
|
|
92
121
|
await this.dropConstraintIfExists(constraintName);
|
|
93
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Neo4jSchemaManager.js","sourceRoot":"","sources":["../../../src/storage/neo4j/Neo4jSchemaManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Neo4jSchemaManager.js","sourceRoot":"","sources":["../../../src/storage/neo4j/Neo4jSchemaManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@henrychong-ai/mcp-neo4j-knowledge-graph",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"description": "Neo4j-based knowledge graph MCP server with temporal versioning and semantic search",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Henry Chong <henry@henrychong.ai>",
|
|
@@ -46,7 +46,9 @@
|
|
|
46
46
|
"format": "prettier --write \"**/*.{ts,json,md}\"",
|
|
47
47
|
"fix": "npm run lint:fix && npm run format",
|
|
48
48
|
"neo4j:init": "tsx src/cli/neo4j-setup.ts init",
|
|
49
|
-
"neo4j:test": "tsx src/cli/neo4j-setup.ts test"
|
|
49
|
+
"neo4j:test": "tsx src/cli/neo4j-setup.ts test",
|
|
50
|
+
"embeddings:generate": "tsx src/cli/generate-embeddings.ts",
|
|
51
|
+
"embeddings:test": "tsx src/cli/generate-embeddings.ts -- --limit 5"
|
|
50
52
|
},
|
|
51
53
|
"dependencies": {
|
|
52
54
|
"@modelcontextprotocol/sdk": "1.11.0",
|