# 1. Ensure services are running
docker-compose ps
# Should show: chroma, ollama, backend, frontend all running
# 2. Pull Ollama model (first time only)
docker exec azeru-ollama ollama pull nomic-embed-text
# 3. Verify services are healthy
curl http://localhost:8000/api/v1/heartbeat # ChromaDB
curl http://localhost:11434/api/tags # Ollama
curl http://localhost:8080/health # Backend- Go to http://localhost:3000
- Click "Upload Document"
- Select a PDF file
- Wait for processing to complete
# In one terminal
docker logs -f azeru-backend✅ Good Log:
PDF 1: Extracted 12 chunks
PDF 1: Generating embeddings for 12 chunks...
PDF 1: Successfully generated 12 embeddings
PDF 1: Stored 12 chunks in ChromaDB
PDF 1: Processing complete - 12 chunks indexed
❌ Bad Log (Error Details Now Visible):
PDF 1: WARNING - Failed to store in ChromaDB: failed to add chunks: status=422, body={"code":"invalid_request","message":"Embedding dimension mismatch"}
- Click "Chat" in the left sidebar
- Enter your Groq API key
- Ask something related to the uploaded document
- Example: "What is this document about?"
docker logs -f azeru-backend | grep "Chat:"✅ Expected Log:
Chat: Starting search for question: "What is this document about?"
Chat: ChromaDB healthy=true, Ollama healthy=true
Chat: Attempting ChromaDB vector search...
Chat: Generated query embedding, dimension=768
Chat: SUCCESS - Found 5 results via ChromaDB vector search
Chat: Successfully returned answer using vector_search
- Look for the blue badge below the answer:
🔍 Vector Search (Semantic)
docker stop azeru-chroma- In chat, ask another question
- Same question format as before
docker logs -f azeru-backend | grep "Chat:"✅ Expected Log:
Chat: Starting search for question: "Why is this important?"
Chat: ChromaDB healthy=false, Ollama healthy=true
Chat: ChromaDB/Ollama not available, skipping vector search
Chat: Falling back to FTS5 full-text search
Chat: FTS5 search returned 5 results
Chat: Successfully returned answer using keyword_search
- Look for the blue badge below the answer:
🔍 Keyword Search (FTS5)
docker start azeru-chroma# Backend logs with timestamp
docker logs -f azeru-backend --tail=100
# ChromaDB logs
docker logs -f azeru-chroma
# Ollama logs
docker logs -f azeru-ollama# List collections
curl http://localhost:8000/api/v1/collections
# Get specific collection
curl http://localhost:8000/api/v1/collections/enterprise_brain
# Count items in collection
curl http://localhost:8000/api/v1/collections/enterprise_brain/count# List available models
curl http://localhost:11434/api/tags
# For docker
docker exec azeru-ollama ollama list# Test chat endpoint (requires GROQ_API_KEY)
curl -X POST http://localhost:8080/api/chat \
-H "Content-Type: application/json" \
-d '{
"question": "What is this about?",
"api_key": "gsk_YOUR_KEY_HERE"
}'
# Should return JSON with:
# - answer: string
# - sources: array
# - search_method: "vector_search" | "keyword_search" | "none"{
"answer": "Based on the documents, this is about...",
"sources": [
{
"id": 1,
"document_id": 1,
"content": "...",
"page_num": 0
}
],
"search_method": "vector_search"
}{
"answer": "Based on the documents, this is about...",
"sources": [
{
"id": 5,
"document_id": 1,
"content": "...",
"page_num": 2
}
],
"search_method": "keyword_search"
}{
"answer": "I couldn't find any relevant information in the uploaded documents.",
"sources": [],
"search_method": "none"
}# Check if ChromaDB is running
docker ps | grep chroma
# Check health endpoint
curl http://localhost:8000/api/v1/heartbeat
# View logs
docker logs azeru-chroma
# Restart if needed
docker restart azeru-chroma# Check if Ollama is running
docker ps | grep ollama
# Check available models
docker exec azeru-ollama ollama list
# Ensure model is pulled
docker exec azeru-ollama ollama pull nomic-embed-text
# View logs
docker logs azeru-ollamaThis usually means embedding dimension mismatch. Check:
- Is Ollama using the same model? (should be
nomic-embed-text) - Are embeddings being generated with correct dimensions?
- Check Ollama logs:
docker logs azeru-ollama
Check backend logs to see why ChromaDB isn't being used:
docker logs azeru-backend | grep "Chat: ERROR"- PDF Upload (10KB): 1-3 seconds
- Embedding Generation (100 chunks): 10-30 seconds
- Vector Search: 100-500ms
- FTS5 Search: 50-100ms
- AI Response: 3-10 seconds
# Watch for timing in logs
grep "ChatTime\|EmbeddingTime\|SearchTime" container.log✅ All Tests Pass When:
- PDF uploads generate embeddings without errors
- ChromaDB receives and stores embeddings
- Chat shows "Vector Search (Semantic)" badge
- Backend logs show successful ChromaDB operations
- Fallback to FTS5 works when ChromaDB is unavailable
- Frontend displays search method indicator
❌ Issues If:
- Logs show "failed to add chunks" with no error details
- Chat doesn't show search method badge
- Only seeing FTS5 searches even though ChromaDB is running
- Silent failures in ChromaDB integration