@duckmind/deepquark-darwin-arm64 0.9.83 → 0.9.90
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/.deepquark/skills/bundled/knowledge-graph/SKILL.md +385 -0
- package/.deepquark/skills/bundled/knowledge-graph/STANDARDS.md +461 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/cli.ts +588 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/config.ts +630 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/connection-profile.ts +629 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/container.ts +756 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/mcp-client.ts +1310 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/output-formatter.ts +997 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/token-metrics.ts +335 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/transformation-log.ts +137 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/wrapper-config.ts +113 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/.env.example +129 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/compare-embeddings.ts +175 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/config-falkordb.yaml +108 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/config-neo4j.yaml +111 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/diagnose.ts +483 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb-dev.yml +146 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb.yml +151 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev-local.yml +161 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev.yml +161 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j.yml +169 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-production.yml +128 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-test.yml +10 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose.yml +84 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/entrypoint.sh +40 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/install.ts +2054 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-falkordb.yml +78 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-neo4j.yml +88 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose.yml +83 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-all-llms-mcp.ts +387 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-models.ts +201 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-providers.ts +641 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-graphiti-model.ts +217 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-correct.ts +141 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-llms-mcp.ts +386 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-models.ts +173 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-llama-extraction.ts +188 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-final.ts +240 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-live.ts +187 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-session.ts +127 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-model-combinations.ts +316 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-ollama-models.ts +228 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-openrouter-models.ts +460 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-real-life-mcp.ts +311 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-search-debug.ts +199 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/Install.md +104 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/README.md +120 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/knowledge-cli.ts +996 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/server-cli.ts +531 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/BulkImport.md +514 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/CaptureEpisode.md +242 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/ClearGraph.md +392 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/GetRecent.md +352 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/GetStatus.md +373 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/HealthReport.md +212 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/InvestigateEntity.md +142 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/OntologyManagement.md +201 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/RunMaintenance.md +302 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchByDate.md +255 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchFacts.md +382 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchKnowledge.md +374 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/StixImport.md +212 -0
- package/bin/deepquark +0 -0
- package/package.json +1 -1
- package/.deepquark/skills/bundled/ge-payroll/SKILL.md +0 -153
- package/.deepquark/skills/bundled/ge-payroll/evals/evals.json +0 -23
- package/.deepquark/skills/bundled/ge-payroll/references/pain-points-improvements.md +0 -106
- package/.deepquark/skills/bundled/ge-payroll/references/process-detail.md +0 -217
- package/.deepquark/skills/bundled/ge-payroll/references/raci-stakeholders.md +0 -85
- package/.deepquark/skills/bundled/ge-payroll/references/timeline-mandays.md +0 -64
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/**
|
|
3
|
+
* Test Ollama embedding models for quality and performance
|
|
4
|
+
* Evaluates: response time, dimensions, and semantic similarity
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const OLLAMA_HOST = 'http://10.0.0.150:11434';
|
|
8
|
+
|
|
9
|
+
const EMBEDDING_MODELS = [
|
|
10
|
+
'nomic-embed-text:latest',
|
|
11
|
+
'nomic-embed-text-v2-moe:latest',
|
|
12
|
+
'mxbai-embed-large:latest',
|
|
13
|
+
'qwen3-embedding:0.6b',
|
|
14
|
+
'embeddinggemma:latest',
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
// Test sentences for semantic similarity
|
|
18
|
+
const TEST_PAIRS = [
|
|
19
|
+
{
|
|
20
|
+
similar: ['The cat sat on the mat', 'A feline rested on the rug'],
|
|
21
|
+
label: 'Cat/Feline synonyms',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
similar: ['Alice is a software engineer', 'Alice works as a developer'],
|
|
25
|
+
label: 'Job title synonyms',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
dissimilar: ['The weather is sunny today', 'I love programming in TypeScript'],
|
|
29
|
+
label: 'Weather vs Programming',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
interface EmbeddingResult {
|
|
34
|
+
model: string;
|
|
35
|
+
dimensions: number;
|
|
36
|
+
avgResponseMs: number;
|
|
37
|
+
similarityScores: { label: string; score: number; type: 'similar' | 'dissimilar' }[];
|
|
38
|
+
error?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function cosineSimilarity(a: number[], b: number[]): number {
|
|
42
|
+
let dotProduct = 0;
|
|
43
|
+
let normA = 0;
|
|
44
|
+
let normB = 0;
|
|
45
|
+
for (let i = 0; i < a.length; i++) {
|
|
46
|
+
dotProduct += a[i] * b[i];
|
|
47
|
+
normA += a[i] * a[i];
|
|
48
|
+
normB += b[i] * b[i];
|
|
49
|
+
}
|
|
50
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async function getEmbedding(
|
|
54
|
+
model: string,
|
|
55
|
+
text: string
|
|
56
|
+
): Promise<{ embedding: number[]; durationMs: number }> {
|
|
57
|
+
const start = Date.now();
|
|
58
|
+
const res = await fetch(`${OLLAMA_HOST}/api/embeddings`, {
|
|
59
|
+
method: 'POST',
|
|
60
|
+
headers: { 'Content-Type': 'application/json' },
|
|
61
|
+
body: JSON.stringify({ model, prompt: text }),
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
if (!res.ok) {
|
|
65
|
+
throw new Error(`HTTP ${res.status}: ${await res.text()}`);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const data = (await res.json()) as { embedding: number[] };
|
|
69
|
+
return { embedding: data.embedding, durationMs: Date.now() - start };
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async function testModel(model: string): Promise<EmbeddingResult> {
|
|
73
|
+
console.log(`\nTesting: ${model}`);
|
|
74
|
+
console.log('---');
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
// Test basic embedding
|
|
78
|
+
const { embedding, durationMs } = await getEmbedding(model, 'Hello world test');
|
|
79
|
+
console.log(` Dimensions: ${embedding.length}`);
|
|
80
|
+
console.log(` First call: ${durationMs}ms`);
|
|
81
|
+
|
|
82
|
+
// Test multiple calls for average time
|
|
83
|
+
const times: number[] = [durationMs];
|
|
84
|
+
for (let i = 0; i < 3; i++) {
|
|
85
|
+
const { durationMs: t } = await getEmbedding(model, `Test sentence number ${i}`);
|
|
86
|
+
times.push(t);
|
|
87
|
+
}
|
|
88
|
+
const avgTime = Math.round(times.reduce((a, b) => a + b, 0) / times.length);
|
|
89
|
+
console.log(` Avg response: ${avgTime}ms`);
|
|
90
|
+
|
|
91
|
+
// Test semantic similarity
|
|
92
|
+
const similarityScores: EmbeddingResult['similarityScores'] = [];
|
|
93
|
+
|
|
94
|
+
for (const pair of TEST_PAIRS) {
|
|
95
|
+
if (pair.similar) {
|
|
96
|
+
const [emb1, emb2] = await Promise.all([
|
|
97
|
+
getEmbedding(model, pair.similar[0]),
|
|
98
|
+
getEmbedding(model, pair.similar[1]),
|
|
99
|
+
]);
|
|
100
|
+
const score = cosineSimilarity(emb1.embedding, emb2.embedding);
|
|
101
|
+
similarityScores.push({ label: pair.label, score, type: 'similar' });
|
|
102
|
+
console.log(` Similar "${pair.label}": ${(score * 100).toFixed(1)}%`);
|
|
103
|
+
}
|
|
104
|
+
if (pair.dissimilar) {
|
|
105
|
+
const [emb1, emb2] = await Promise.all([
|
|
106
|
+
getEmbedding(model, pair.dissimilar[0]),
|
|
107
|
+
getEmbedding(model, pair.dissimilar[1]),
|
|
108
|
+
]);
|
|
109
|
+
const score = cosineSimilarity(emb1.embedding, emb2.embedding);
|
|
110
|
+
similarityScores.push({ label: pair.label, score, type: 'dissimilar' });
|
|
111
|
+
console.log(` Dissimilar "${pair.label}": ${(score * 100).toFixed(1)}%`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
model,
|
|
117
|
+
dimensions: embedding.length,
|
|
118
|
+
avgResponseMs: avgTime,
|
|
119
|
+
similarityScores,
|
|
120
|
+
};
|
|
121
|
+
} catch (err: any) {
|
|
122
|
+
console.log(` ❌ Error: ${err.message}`);
|
|
123
|
+
return {
|
|
124
|
+
model,
|
|
125
|
+
dimensions: 0,
|
|
126
|
+
avgResponseMs: 0,
|
|
127
|
+
similarityScores: [],
|
|
128
|
+
error: err.message,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function calculateQualityScore(result: EmbeddingResult): number {
|
|
134
|
+
if (result.error) return 0;
|
|
135
|
+
|
|
136
|
+
// Quality = high similarity for similar pairs + low similarity for dissimilar pairs
|
|
137
|
+
let score = 0;
|
|
138
|
+
for (const s of result.similarityScores) {
|
|
139
|
+
if (s.type === 'similar') {
|
|
140
|
+
score += s.score; // Higher is better
|
|
141
|
+
} else {
|
|
142
|
+
score += 1 - s.score; // Lower similarity is better for dissimilar
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return score / result.similarityScores.length;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
async function main() {
|
|
149
|
+
console.log('==============================================');
|
|
150
|
+
console.log('Ollama Embedding Model Performance Test');
|
|
151
|
+
console.log(`Testing ${EMBEDDING_MODELS.length} models`);
|
|
152
|
+
console.log('==============================================');
|
|
153
|
+
|
|
154
|
+
const results: EmbeddingResult[] = [];
|
|
155
|
+
|
|
156
|
+
for (const model of EMBEDDING_MODELS) {
|
|
157
|
+
const result = await testModel(model);
|
|
158
|
+
results.push(result);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Sort by quality score
|
|
162
|
+
const validResults = results.filter((r) => !r.error);
|
|
163
|
+
validResults.sort((a, b) => calculateQualityScore(b) - calculateQualityScore(a));
|
|
164
|
+
|
|
165
|
+
console.log('\n==============================================');
|
|
166
|
+
console.log('RESULTS SUMMARY (ranked by quality)');
|
|
167
|
+
console.log('==============================================\n');
|
|
168
|
+
|
|
169
|
+
console.log('| Rank | Model | Dims | Avg Time | Quality Score |');
|
|
170
|
+
console.log('|------|-------|------|----------|---------------|');
|
|
171
|
+
|
|
172
|
+
validResults.forEach((r, i) => {
|
|
173
|
+
const quality = (calculateQualityScore(r) * 100).toFixed(1);
|
|
174
|
+
console.log(`| ${i + 1} | ${r.model} | ${r.dimensions} | ${r.avgResponseMs}ms | ${quality}% |`);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
const failed = results.filter((r) => r.error);
|
|
178
|
+
if (failed.length > 0) {
|
|
179
|
+
console.log('\n❌ Failed models:');
|
|
180
|
+
failed.forEach((r) => console.log(` - ${r.model}: ${r.error}`));
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Recommend best model
|
|
184
|
+
if (validResults.length > 0) {
|
|
185
|
+
const best = validResults[0];
|
|
186
|
+
console.log(`\n🏆 RECOMMENDED: ${best.model}`);
|
|
187
|
+
console.log(` - Dimensions: ${best.dimensions}`);
|
|
188
|
+
console.log(` - Avg response: ${best.avgResponseMs}ms`);
|
|
189
|
+
console.log(` - Quality score: ${(calculateQualityScore(best) * 100).toFixed(1)}%`);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Output JSON
|
|
193
|
+
const outputPath = new URL('./embedding-test-results.json', import.meta.url).pathname;
|
|
194
|
+
await Bun.write(
|
|
195
|
+
outputPath,
|
|
196
|
+
JSON.stringify({ results, timestamp: new Date().toISOString() }, null, 2)
|
|
197
|
+
);
|
|
198
|
+
console.log(`\nResults saved to: ${outputPath}`);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
main();
|