Beating BERT? Small LLMs vs Fine-Tuned Encoders for Classification
I ran 32 experiments comparing small LLMs to BERT on classification tasks. Turns out 2018-era BERT is still really good at what it does.
Recent content on Alex Jacobs
I ran 32 experiments comparing small LLMs to BERT on classification tasks. Turns out 2018-era BERT is still really good at what it does.
The real limitations of pgvector in production: index choice between IVFFlat and HNSW, why real-time search is hard, pre- vs post-filtering pain, how performance degrades at scale, and when a dedicated vector database is the better call.
An empirical analysis of LLM application patterns that successfully scale in production systems, focusing on extraction, generation, and classification use cases
OpenAI's 4o image generation is a step change in AI capabilities. A look at what reasoning in pixel space means for creative work.
A technical dive into the limitations of current RAG approaches, examining architectural challenges and exploring pathways to more integrated knowledge-aware LLM architectures.
How async Python actually works: what async def and await do, how the asyncio event loop schedules coroutines, tasks and futures explained, and when to use async instead of threads or processes.
A practical guide to FastAPI integration tests with pytest: mocking JWT authentication and the TestClient, patching external API calls, and faking MongoDB and S3 with mongomock and moto.
A (Very) Simple RAG Tutorial
A simple an effective approach for handling end users who struggle with errors
Part 2 of the Jupyter Lab NGINX reverse proxy setup: configuring Jupyter authentication behind NGINX, handling token-based auth bypass, and locking down the proxy on EC2.
Jupyter Lab and NGINX aren't alternatives — NGINX sits in front of Jupyter as a reverse proxy. Part 1 covers containerizing Jupyter Lab and wiring it to NGINX with a sidecar pattern on EC2.
A simple example using Python and Docker to split an SRA file into Fastq