@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,175 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/**
|
|
3
|
+
* Compare Ollama mxbai-embed-large vs OpenAI text-embedding-3-small
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const OLLAMA_HOST = 'http://10.0.0.150:11434';
|
|
7
|
+
const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
|
|
8
|
+
|
|
9
|
+
// Test sentences for semantic similarity
|
|
10
|
+
const TEST_PAIRS = [
|
|
11
|
+
{
|
|
12
|
+
a: 'The cat sat on the mat',
|
|
13
|
+
b: 'A feline rested on the rug',
|
|
14
|
+
label: 'Cat/Feline synonyms',
|
|
15
|
+
expected: 'high',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
a: 'Alice is a software engineer',
|
|
19
|
+
b: 'Alice works as a developer',
|
|
20
|
+
label: 'Job title synonyms',
|
|
21
|
+
expected: 'high',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
a: 'The weather is sunny today',
|
|
25
|
+
b: 'I love programming in TypeScript',
|
|
26
|
+
label: 'Weather vs Programming',
|
|
27
|
+
expected: 'low',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
a: 'Machine learning is a subset of AI',
|
|
31
|
+
b: 'Deep learning uses neural networks',
|
|
32
|
+
label: 'ML/DL related',
|
|
33
|
+
expected: 'high',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
a: 'Paris is the capital of France',
|
|
37
|
+
b: 'Tokyo is in Japan',
|
|
38
|
+
label: 'Different countries',
|
|
39
|
+
expected: 'medium',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
a: 'The stock market crashed yesterday',
|
|
43
|
+
b: 'My favorite color is blue',
|
|
44
|
+
label: 'Finance vs Personal',
|
|
45
|
+
expected: 'low',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
function cosineSimilarity(a: number[], b: number[]): number {
|
|
50
|
+
let dotProduct = 0;
|
|
51
|
+
let normA = 0;
|
|
52
|
+
let normB = 0;
|
|
53
|
+
for (let i = 0; i < a.length; i++) {
|
|
54
|
+
dotProduct += a[i] * b[i];
|
|
55
|
+
normA += a[i] * a[i];
|
|
56
|
+
normB += b[i] * b[i];
|
|
57
|
+
}
|
|
58
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async function getOllamaEmbedding(text: string): Promise<{ embedding: number[]; ms: number }> {
|
|
62
|
+
const start = Date.now();
|
|
63
|
+
const res = await fetch(`${OLLAMA_HOST}/api/embeddings`, {
|
|
64
|
+
method: 'POST',
|
|
65
|
+
headers: { 'Content-Type': 'application/json' },
|
|
66
|
+
body: JSON.stringify({ model: 'mxbai-embed-large', prompt: text }),
|
|
67
|
+
});
|
|
68
|
+
const data = (await res.json()) as { embedding: number[] };
|
|
69
|
+
return { embedding: data.embedding, ms: Date.now() - start };
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async function getOpenAIEmbedding(text: string): Promise<{ embedding: number[]; ms: number }> {
|
|
73
|
+
const start = Date.now();
|
|
74
|
+
const res = await fetch('https://api.openai.com/v1/embeddings', {
|
|
75
|
+
method: 'POST',
|
|
76
|
+
headers: {
|
|
77
|
+
'Content-Type': 'application/json',
|
|
78
|
+
Authorization: `Bearer ${OPENAI_API_KEY}`,
|
|
79
|
+
},
|
|
80
|
+
body: JSON.stringify({ model: 'text-embedding-3-small', input: text }),
|
|
81
|
+
});
|
|
82
|
+
const data = (await res.json()) as { data: { embedding: number[] }[] };
|
|
83
|
+
return { embedding: data.data[0].embedding, ms: Date.now() - start };
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
async function main() {
|
|
87
|
+
if (!OPENAI_API_KEY) {
|
|
88
|
+
console.error('OPENAI_API_KEY not set');
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
console.log('==============================================');
|
|
93
|
+
console.log('Embedding Model Comparison');
|
|
94
|
+
console.log('Ollama mxbai-embed-large vs OpenAI text-embedding-3-small');
|
|
95
|
+
console.log('==============================================\n');
|
|
96
|
+
|
|
97
|
+
// Get dimensions
|
|
98
|
+
const ollamaTest = await getOllamaEmbedding('test');
|
|
99
|
+
const openaiTest = await getOpenAIEmbedding('test');
|
|
100
|
+
|
|
101
|
+
console.log(`Ollama mxbai-embed-large: ${ollamaTest.embedding.length} dimensions`);
|
|
102
|
+
console.log(`OpenAI text-embedding-3-small: ${openaiTest.embedding.length} dimensions\n`);
|
|
103
|
+
|
|
104
|
+
console.log('| Test Case | Expected | Ollama | OpenAI | Winner |');
|
|
105
|
+
console.log('|-----------|----------|--------|--------|--------|');
|
|
106
|
+
|
|
107
|
+
let ollamaTotalTime = 0;
|
|
108
|
+
let openaiTotalTime = 0;
|
|
109
|
+
let ollamaScore = 0;
|
|
110
|
+
let openaiScore = 0;
|
|
111
|
+
|
|
112
|
+
for (const pair of TEST_PAIRS) {
|
|
113
|
+
// Get embeddings
|
|
114
|
+
const [ollamaA, ollamaB] = await Promise.all([
|
|
115
|
+
getOllamaEmbedding(pair.a),
|
|
116
|
+
getOllamaEmbedding(pair.b),
|
|
117
|
+
]);
|
|
118
|
+
const [openaiA, openaiB] = await Promise.all([
|
|
119
|
+
getOpenAIEmbedding(pair.a),
|
|
120
|
+
getOpenAIEmbedding(pair.b),
|
|
121
|
+
]);
|
|
122
|
+
|
|
123
|
+
ollamaTotalTime += ollamaA.ms + ollamaB.ms;
|
|
124
|
+
openaiTotalTime += openaiA.ms + openaiB.ms;
|
|
125
|
+
|
|
126
|
+
const ollamaSim = cosineSimilarity(ollamaA.embedding, ollamaB.embedding);
|
|
127
|
+
const openaiSim = cosineSimilarity(openaiA.embedding, openaiB.embedding);
|
|
128
|
+
|
|
129
|
+
// Score based on expected result
|
|
130
|
+
let winner = 'Tie';
|
|
131
|
+
if (pair.expected === 'high') {
|
|
132
|
+
// Higher similarity is better
|
|
133
|
+
if (ollamaSim > openaiSim + 0.05) {
|
|
134
|
+
winner = 'Ollama';
|
|
135
|
+
ollamaScore++;
|
|
136
|
+
} else if (openaiSim > ollamaSim + 0.05) {
|
|
137
|
+
winner = 'OpenAI';
|
|
138
|
+
openaiScore++;
|
|
139
|
+
}
|
|
140
|
+
} else if (pair.expected === 'low') {
|
|
141
|
+
// Lower similarity is better (more discriminating)
|
|
142
|
+
if (ollamaSim < openaiSim - 0.05) {
|
|
143
|
+
winner = 'Ollama';
|
|
144
|
+
ollamaScore++;
|
|
145
|
+
} else if (openaiSim < ollamaSim - 0.05) {
|
|
146
|
+
winner = 'OpenAI';
|
|
147
|
+
openaiScore++;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
console.log(
|
|
152
|
+
`| ${pair.label.padEnd(25)} | ${pair.expected.padEnd(8)} | ${(ollamaSim * 100).toFixed(1)}% | ${(openaiSim * 100).toFixed(1)}% | ${winner} |`
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
console.log('\n==============================================');
|
|
157
|
+
console.log('SUMMARY');
|
|
158
|
+
console.log('==============================================\n');
|
|
159
|
+
|
|
160
|
+
console.log('| Metric | Ollama mxbai | OpenAI small |');
|
|
161
|
+
console.log('|--------|--------------|--------------|');
|
|
162
|
+
console.log(`| Dimensions | ${ollamaTest.embedding.length} | ${openaiTest.embedding.length} |`);
|
|
163
|
+
console.log(
|
|
164
|
+
`| Avg response | ${Math.round(ollamaTotalTime / (TEST_PAIRS.length * 2))}ms | ${Math.round(openaiTotalTime / (TEST_PAIRS.length * 2))}ms |`
|
|
165
|
+
);
|
|
166
|
+
console.log(`| Test wins | ${ollamaScore} | ${openaiScore} |`);
|
|
167
|
+
console.log('| Cost | Free | ~$0.02/1M tokens |');
|
|
168
|
+
|
|
169
|
+
console.log(
|
|
170
|
+
`\n🏆 ${ollamaScore > openaiScore ? 'Ollama mxbai-embed-large' : ollamaScore < openaiScore ? 'OpenAI text-embedding-3-small' : 'Tie'} wins on quality`
|
|
171
|
+
);
|
|
172
|
+
console.log(`💰 Ollama is FREE vs OpenAI's paid API`);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
main();
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Graphiti MCP Server Configuration for FalkorDB Backend
|
|
2
|
+
# This configuration is used with docker-compose-falkordb.yml
|
|
3
|
+
#
|
|
4
|
+
# FalkorDB advantages:
|
|
5
|
+
# - Redis-based (lighter resource footprint)
|
|
6
|
+
# - Simple deployment (single container)
|
|
7
|
+
# - Web UI at http://localhost:3000
|
|
8
|
+
|
|
9
|
+
server:
|
|
10
|
+
transport: "http" # HTTP transport (SSE is deprecated)
|
|
11
|
+
host: "0.0.0.0"
|
|
12
|
+
port: 8000
|
|
13
|
+
|
|
14
|
+
llm:
|
|
15
|
+
provider: "openai" # Options: openai, azure_openai, anthropic, gemini, groq
|
|
16
|
+
model: ${MODEL_NAME:google/gemini-2.0-flash-001} # Default: Gemini Flash, override with MODEL_NAME env var
|
|
17
|
+
max_tokens: 4096
|
|
18
|
+
|
|
19
|
+
providers:
|
|
20
|
+
openai:
|
|
21
|
+
api_key: ${OPENAI_API_KEY}
|
|
22
|
+
api_url: ${OPENAI_BASE_URL:https://api.openai.com/v1} # Ollama: http://host.docker.internal:11434/v1
|
|
23
|
+
organization_id: ${OPENAI_ORGANIZATION_ID:}
|
|
24
|
+
|
|
25
|
+
azure_openai:
|
|
26
|
+
api_key: ${AZURE_OPENAI_API_KEY}
|
|
27
|
+
api_url: ${AZURE_OPENAI_ENDPOINT}
|
|
28
|
+
api_version: ${AZURE_OPENAI_API_VERSION:2024-10-21}
|
|
29
|
+
deployment_name: ${AZURE_OPENAI_DEPLOYMENT}
|
|
30
|
+
use_azure_ad: ${USE_AZURE_AD:false}
|
|
31
|
+
|
|
32
|
+
anthropic:
|
|
33
|
+
api_key: ${ANTHROPIC_API_KEY}
|
|
34
|
+
api_url: ${ANTHROPIC_API_URL:https://api.anthropic.com}
|
|
35
|
+
max_retries: 3
|
|
36
|
+
|
|
37
|
+
gemini:
|
|
38
|
+
api_key: ${GOOGLE_API_KEY}
|
|
39
|
+
project_id: ${GOOGLE_PROJECT_ID:}
|
|
40
|
+
location: ${GOOGLE_LOCATION:us-central1}
|
|
41
|
+
|
|
42
|
+
groq:
|
|
43
|
+
api_key: ${GROQ_API_KEY}
|
|
44
|
+
api_url: ${GROQ_API_URL:https://api.groq.com/openai/v1}
|
|
45
|
+
|
|
46
|
+
embedder:
|
|
47
|
+
provider: ${EMBEDDER_PROVIDER:openai} # Options: openai, azure_openai, gemini, voyage, ollama
|
|
48
|
+
model: ${EMBEDDER_MODEL:text-embedding-3-small} # Ollama: mxbai-embed-large (best), OpenAI: text-embedding-3-small
|
|
49
|
+
dimensions: ${EMBEDDER_DIMENSIONS:1536} # Ollama mxbai-embed-large: 1024, OpenAI: 1536
|
|
50
|
+
|
|
51
|
+
providers:
|
|
52
|
+
openai:
|
|
53
|
+
api_key: ${OPENAI_API_KEY}
|
|
54
|
+
api_url: ${EMBEDDER_PROVIDER_URL:-https://api.openai.com/v1} # Custom embedder URL or OpenAI default
|
|
55
|
+
organization_id: ${OPENAI_ORGANIZATION_ID:}
|
|
56
|
+
|
|
57
|
+
ollama:
|
|
58
|
+
api_url: ${EMBEDDER_PROVIDER_URL:http://host.containers.internal:11434}
|
|
59
|
+
|
|
60
|
+
azure_openai:
|
|
61
|
+
api_key: ${AZURE_OPENAI_API_KEY}
|
|
62
|
+
api_url: ${AZURE_OPENAI_EMBEDDINGS_ENDPOINT}
|
|
63
|
+
api_version: ${AZURE_OPENAI_API_VERSION:2024-10-21}
|
|
64
|
+
deployment_name: ${AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT}
|
|
65
|
+
use_azure_ad: ${USE_AZURE_AD:false}
|
|
66
|
+
|
|
67
|
+
gemini:
|
|
68
|
+
api_key: ${GOOGLE_API_KEY}
|
|
69
|
+
project_id: ${GOOGLE_PROJECT_ID:}
|
|
70
|
+
location: ${GOOGLE_LOCATION:us-central1}
|
|
71
|
+
|
|
72
|
+
voyage:
|
|
73
|
+
api_key: ${VOYAGE_API_KEY}
|
|
74
|
+
api_url: ${VOYAGE_API_URL:https://api.voyageai.com/v1}
|
|
75
|
+
model: "voyage-3"
|
|
76
|
+
|
|
77
|
+
database:
|
|
78
|
+
provider: "falkordb" # Using FalkorDB for this configuration
|
|
79
|
+
|
|
80
|
+
providers:
|
|
81
|
+
falkordb:
|
|
82
|
+
# Use environment variable if set, otherwise use Docker service hostname
|
|
83
|
+
uri: ${FALKORDB_URI:redis://falkordb:6379}
|
|
84
|
+
password: ${FALKORDB_PASSWORD:}
|
|
85
|
+
|
|
86
|
+
graphiti:
|
|
87
|
+
group_id: ${GRAPHITI_GROUP_ID:main}
|
|
88
|
+
episode_id_prefix: ${EPISODE_ID_PREFIX:}
|
|
89
|
+
user_id: ${USER_ID:mcp_user}
|
|
90
|
+
entity_types:
|
|
91
|
+
- name: "Preference"
|
|
92
|
+
description: "User preferences, choices, opinions, or selections (PRIORITIZE over most other types except User/Assistant)"
|
|
93
|
+
- name: "Requirement"
|
|
94
|
+
description: "Specific needs, features, or functionality that must be fulfilled"
|
|
95
|
+
- name: "Procedure"
|
|
96
|
+
description: "Standard operating procedures and sequential instructions"
|
|
97
|
+
- name: "Location"
|
|
98
|
+
description: "Physical or virtual places where activities occur"
|
|
99
|
+
- name: "Event"
|
|
100
|
+
description: "Time-bound activities, occurrences, or experiences"
|
|
101
|
+
- name: "Organization"
|
|
102
|
+
description: "Companies, institutions, groups, or formal entities"
|
|
103
|
+
- name: "Document"
|
|
104
|
+
description: "Information content in various forms (books, articles, reports, etc.)"
|
|
105
|
+
- name: "Topic"
|
|
106
|
+
description: "Subject of conversation, interest, or knowledge domain (use as last resort)"
|
|
107
|
+
- name: "Object"
|
|
108
|
+
description: "Physical items, tools, devices, or possessions (use as last resort)"
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Graphiti MCP Server Configuration for Neo4j Backend
|
|
2
|
+
# This configuration is used with docker-compose-neo4j.yml
|
|
3
|
+
#
|
|
4
|
+
# Neo4j advantages over FalkorDB:
|
|
5
|
+
# - Mature ecosystem with Neo4j Browser visualization
|
|
6
|
+
# - Better handling of special characters in identifiers
|
|
7
|
+
# - APOC procedures for advanced graph operations
|
|
8
|
+
|
|
9
|
+
server:
|
|
10
|
+
transport: "http" # HTTP transport (SSE is deprecated)
|
|
11
|
+
host: "0.0.0.0"
|
|
12
|
+
port: 8000
|
|
13
|
+
|
|
14
|
+
llm:
|
|
15
|
+
provider: "openai" # Options: openai, azure_openai, anthropic, gemini, groq
|
|
16
|
+
model: ${MODEL_NAME:google/gemini-2.0-flash-001} # Default: Gemini Flash, override with MODEL_NAME env var
|
|
17
|
+
max_tokens: 4096
|
|
18
|
+
|
|
19
|
+
providers:
|
|
20
|
+
openai:
|
|
21
|
+
api_key: ${OPENAI_API_KEY}
|
|
22
|
+
api_url: ${OPENAI_BASE_URL:https://api.openai.com/v1} # Ollama: http://host.docker.internal:11434/v1
|
|
23
|
+
organization_id: ${OPENAI_ORGANIZATION_ID:}
|
|
24
|
+
|
|
25
|
+
azure_openai:
|
|
26
|
+
api_key: ${AZURE_OPENAI_API_KEY}
|
|
27
|
+
api_url: ${AZURE_OPENAI_ENDPOINT}
|
|
28
|
+
api_version: ${AZURE_OPENAI_API_VERSION:2024-10-21}
|
|
29
|
+
deployment_name: ${AZURE_OPENAI_DEPLOYMENT}
|
|
30
|
+
use_azure_ad: ${USE_AZURE_AD:false}
|
|
31
|
+
|
|
32
|
+
anthropic:
|
|
33
|
+
api_key: ${ANTHROPIC_API_KEY}
|
|
34
|
+
api_url: ${ANTHROPIC_API_URL:https://api.anthropic.com}
|
|
35
|
+
max_retries: 3
|
|
36
|
+
|
|
37
|
+
gemini:
|
|
38
|
+
api_key: ${GOOGLE_API_KEY}
|
|
39
|
+
project_id: ${GOOGLE_PROJECT_ID:}
|
|
40
|
+
location: ${GOOGLE_LOCATION:us-central1}
|
|
41
|
+
|
|
42
|
+
groq:
|
|
43
|
+
api_key: ${GROQ_API_KEY}
|
|
44
|
+
api_url: ${GROQ_API_URL:https://api.groq.com/openai/v1}
|
|
45
|
+
|
|
46
|
+
embedder:
|
|
47
|
+
provider: ${EMBEDDER_PROVIDER:openai} # Options: openai, azure_openai, gemini, voyage, ollama
|
|
48
|
+
model: ${EMBEDDER_MODEL:text-embedding-3-small} # Ollama: mxbai-embed-large (best), OpenAI: text-embedding-3-small
|
|
49
|
+
dimensions: ${EMBEDDER_DIMENSIONS:1536} # Ollama mxbai-embed-large: 1024, OpenAI: 1536
|
|
50
|
+
|
|
51
|
+
providers:
|
|
52
|
+
openai:
|
|
53
|
+
api_key: ${OPENAI_API_KEY}
|
|
54
|
+
api_url: ${EMBEDDER_PROVIDER_URL:-https://api.openai.com/v1} # Custom embedder URL or OpenAI default
|
|
55
|
+
organization_id: ${OPENAI_ORGANIZATION_ID:}
|
|
56
|
+
|
|
57
|
+
ollama:
|
|
58
|
+
api_url: ${EMBEDDER_PROVIDER_URL:http://host.containers.internal:11434}
|
|
59
|
+
|
|
60
|
+
azure_openai:
|
|
61
|
+
api_key: ${AZURE_OPENAI_API_KEY}
|
|
62
|
+
api_url: ${AZURE_OPENAI_EMBEDDINGS_ENDPOINT}
|
|
63
|
+
api_version: ${AZURE_OPENAI_API_VERSION:2024-10-21}
|
|
64
|
+
deployment_name: ${AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT}
|
|
65
|
+
use_azure_ad: ${USE_AZURE_AD:false}
|
|
66
|
+
|
|
67
|
+
gemini:
|
|
68
|
+
api_key: ${GOOGLE_API_KEY}
|
|
69
|
+
project_id: ${GOOGLE_PROJECT_ID:}
|
|
70
|
+
location: ${GOOGLE_LOCATION:us-central1}
|
|
71
|
+
|
|
72
|
+
voyage:
|
|
73
|
+
api_key: ${VOYAGE_API_KEY}
|
|
74
|
+
api_url: ${VOYAGE_API_URL:https://api.voyageai.com/v1}
|
|
75
|
+
model: "voyage-3"
|
|
76
|
+
|
|
77
|
+
database:
|
|
78
|
+
provider: "neo4j" # Using Neo4j for this configuration
|
|
79
|
+
|
|
80
|
+
providers:
|
|
81
|
+
neo4j:
|
|
82
|
+
# Use environment variable if set, otherwise use Docker service hostname
|
|
83
|
+
uri: ${NEO4J_URI:bolt://neo4j:7687}
|
|
84
|
+
username: ${NEO4J_USER:neo4j}
|
|
85
|
+
password: madeinozknowledge # TODO: Switch back to ${NEO4J_PASSWORD} after testing
|
|
86
|
+
database: ${NEO4J_DATABASE:neo4j}
|
|
87
|
+
use_parallel_runtime: ${USE_PARALLEL_RUNTIME:false}
|
|
88
|
+
|
|
89
|
+
graphiti:
|
|
90
|
+
group_id: ${GRAPHITI_GROUP_ID:main}
|
|
91
|
+
episode_id_prefix: ${EPISODE_ID_PREFIX:}
|
|
92
|
+
user_id: ${USER_ID:mcp_user}
|
|
93
|
+
entity_types:
|
|
94
|
+
- name: "Preference"
|
|
95
|
+
description: "User preferences, choices, opinions, or selections (PRIORITIZE over most other types except User/Assistant)"
|
|
96
|
+
- name: "Requirement"
|
|
97
|
+
description: "Specific needs, features, or functionality that must be fulfilled"
|
|
98
|
+
- name: "Procedure"
|
|
99
|
+
description: "Standard operating procedures and sequential instructions"
|
|
100
|
+
- name: "Location"
|
|
101
|
+
description: "Physical or virtual places where activities occur"
|
|
102
|
+
- name: "Event"
|
|
103
|
+
description: "Time-bound activities, occurrences, or experiences"
|
|
104
|
+
- name: "Organization"
|
|
105
|
+
description: "Companies, institutions, groups, or formal entities"
|
|
106
|
+
- name: "Document"
|
|
107
|
+
description: "Information content in various forms (books, articles, reports, etc.)"
|
|
108
|
+
- name: "Topic"
|
|
109
|
+
description: "Subject of conversation, interest, or knowledge domain (use as last resort)"
|
|
110
|
+
- name: "Object"
|
|
111
|
+
description: "Physical items, tools, devices, or possessions (use as last resort)"
|