I started with ingestion and spent way too long there.
Start by clarifying requirements and constraints (file types, size limits, latency, scale). Then walk through the pipeline: ingestion, preprocessing, model selection, storage, and retrieval, highlighting trade-offs and scalability at each stage. Emphasize modularity and extensibility for future modalities.
Pro tip: Discuss how you would handle failures and retries in the ingestion pipeline, and how you would monitor embedding quality and drift over time. This shows production maturity beyond just the happy path.
Ask about expected scale (number of users, documents per day), latency requirements, file size limits, supported formats, and retrieval needs (e.g., similarity search, filtering).
Outline how files are uploaded (e.g., direct to object storage via signed URLs), validated, and queued for processing. Describe preprocessing steps per modality: text extraction/chunking, image resizing/normalization, video frame sampling/audio extraction.
Choose models per modality (e.g., BERT for text, ResNet/CLIP for images, VideoMAE for video). Discuss trade-offs between accuracy, latency, cost, and whether to use pre-trained or fine-tuned models.
Store embeddings in a vector database (e.g., Pinecone, Milvus) with metadata in a relational DB. Describe schema: document ID, user ID, modality, embedding vector, metadata. Explain retrieval via approximate nearest neighbor search with filtering.
Discuss horizontal scaling of ingestion workers, model serving via batch or real-time endpoints, caching, and handling failures with retries and dead-letter queues. Mention monitoring and cost optimization.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.