feat: integrate Ollama embedding service with mxbai-embed-large model support

This commit is contained in:
Manoj 2025-10-20 11:43:34 +05:30
parent bcae1bd4a1
commit 1c2c2acd47
6 changed files with 53 additions and 3 deletions

View File

@ -48,7 +48,11 @@ MAGIC_LINK_SECRET=27192e6432564f4788d55c15131bd5ac
NEO4J_AUTH=neo4j/27192e6432564f4788d55c15131bd5ac NEO4J_AUTH=neo4j/27192e6432564f4788d55c15131bd5ac
OLLAMA_URL=http://ollama:11434 OLLAMA_URL=http://ollama:11434
EMBEDDING_MODEL=text-embedding-3-small # Embedding model configuration
# For self-hosted with Ollama, use: mxbai-embed-large (recommended, 1024 dimensions)
# For OpenAI, use: text-embedding-3-small
EMBEDDING_MODEL=mxbai-embed-large
EMBEDDING_MODEL_SIZE=1024
MODEL=gpt-4.1-2025-04-14 MODEL=gpt-4.1-2025-04-14
## AWS Bedrock ## ## AWS Bedrock ##

View File

@ -64,8 +64,9 @@ const EnvironmentSchema = z.object({
NEO4J_USERNAME: z.string(), NEO4J_USERNAME: z.string(),
NEO4J_PASSWORD: z.string(), NEO4J_PASSWORD: z.string(),
//OpenAI //Model API Key
OPENAI_API_KEY: z.string(), OPENAI_API_KEY: z.string(),
ANTHROPIC_API_KEY: z.string(),
EMAIL_TRANSPORT: z.string().optional(), EMAIL_TRANSPORT: z.string().optional(),
FROM_EMAIL: z.string().optional(), FROM_EMAIL: z.string().optional(),

View File

@ -99,6 +99,9 @@ export async function makeModelCall(
case "claude-3-7-sonnet-20250219": case "claude-3-7-sonnet-20250219":
case "claude-3-opus-20240229": case "claude-3-opus-20240229":
case "claude-3-5-haiku-20241022": case "claude-3-5-haiku-20241022":
case "claude-sonnet-4-5":
case "claude-haiku-4-5":
case "claude-opus-4-1":
modelInstance = anthropic(model, { ...options }); modelInstance = anthropic(model, { ...options });
break; break;
@ -206,6 +209,7 @@ export async function getEmbedding(text: string) {
}); });
return embedding; return embedding;
} }
console.log("Using Ollama embedding url: ", ollamaUrl);
const ollama = createOllama({ const ollama = createOllama({
baseURL: ollamaUrl, baseURL: ollamaUrl,

View File

@ -43,7 +43,8 @@ NEO4J_PASSWORD=27192e6432564f4788d55c15131bd5ac
NEO4J_AUTH=neo4j/27192e6432564f4788d55c15131bd5ac NEO4J_AUTH=neo4j/27192e6432564f4788d55c15131bd5ac
OPENAI_API_KEY= OPENAI_API_KEY=
OLLAMA_URL= ANTHROPIC_API_KEY=
OLLAMA_URL=http://core-ollama:11434
EMBEDDING_MODEL=text-embedding-3-small EMBEDDING_MODEL=text-embedding-3-small
MODEL=gpt-4.1-2025-04-14 MODEL=gpt-4.1-2025-04-14

View File

@ -51,6 +51,8 @@ services:
condition: service_started condition: service_started
neo4j: neo4j:
condition: service_healthy condition: service_healthy
ollama:
condition: service_healthy
networks: networks:
- core - core
@ -108,6 +110,25 @@ services:
retries: 10 retries: 10
start_period: 20s start_period: 20s
ollama:
container_name: core-ollama
image: ollama/ollama:0.12.6
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
- ./scripts/ollama-init.sh:/usr/local/bin/ollama-init.sh:ro
networks:
- core
entrypoint: ["/bin/bash", "/usr/local/bin/ollama-init.sh"]
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"]
interval: 30s
timeout: 10s
retries: 5
start_period: 90s
restart: unless-stopped
webapp: webapp:
container_name: trigger-webapp container_name: trigger-webapp
image: ghcr.io/triggerdotdev/trigger.dev@sha256:a19c438f348ac05c939f39ed455ed27b4f189f720b4c9810aef8e71fdc731211 image: ghcr.io/triggerdotdev/trigger.dev@sha256:a19c438f348ac05c939f39ed455ed27b4f189f720b4c9810aef8e71fdc731211
@ -351,6 +372,7 @@ networks:
volumes: volumes:
postgres_data: postgres_data:
neo4j_data: neo4j_data:
ollama_data:
shared: shared:
clickhouse: clickhouse:
minio: minio:

View File

@ -0,0 +1,18 @@
#!/bin/bash
set -e
echo "Starting Ollama server..."
ollama serve &
OLLAMA_PID=$!
echo "Waiting for Ollama server to be ready..."
sleep 5
echo "Pulling mxbai-embed-large model..."
ollama pull mxbai-embed-large
echo "Model pulled successfully!"
echo "Ollama is ready to accept requests."
# Keep the Ollama server running
wait $OLLAMA_PID