Skip links

Blog

An Introduction to Retrieval-Augmented Generation

Large language models are remarkably capable and fundamentally limited. They can generate fluent, contextually appropriate text on almost any topic, but they cannot access information beyond their training data cutoff. Ask GPT-3 about a document you wrote last week, and it will either confess ignorance

How We Structure TypeScript Projects for Long-Term Maintainability

TypeScript project structure is one of those topics where everyone has an opinion and few have data. “Feature-based,” “layer-based,” “domain-driven”—the naming conventions proliferate, but the underlying question is simpler than it appears: when a new developer opens this codebase in six months, how quickly can

PostgreSQL vs MongoDB for SaaS Applications: A Decision Framework

The PostgreSQL-versus-MongoDB debate generates more heat than light. Advocates on both sides argue from first principles (“relational data belongs in a relational database” / “documents are the natural unit of storage”) while ignoring that the right choice depends almost entirely on your specific application’s data

Understanding Embeddings: From Theory to Production

Embeddings are the bridge between human-readable data and machine-processable mathematics. They are the input to vector search, the foundation of recommendation systems, and the representation layer in modern NLP. Despite their centrality, most engineering teams treat embeddings as a black box: call an API, get

Docker Compose for AI Development: A Practical Guide

Running an AI/ML development environment involves juggling more services than a typical web application. You need your API server, a vector database, a message queue for async inference jobs, a model registry, a monitoring stack, and probably a PostgreSQL instance for application data. On a

The Real Cost of Technical Debt in Early-Stage Startups

Technical debt is the most abused metaphor in software engineering. Every shortcut gets labeled “tech debt.” Every framework migration gets justified as “paying down tech debt.” The term has become so elastic it is almost meaningless. At Harbor Software, we have been building for about

Building Your First Vector Search Pipeline

Vector search is one of those technologies that sounds intimidating until you build one. The core idea is deceptively simple: convert your data into numerical vectors (embeddings), store them in a specialized index, and find similar items by measuring distance in vector space. The implementation

Why We Chose Python and FastAPI for Our AI Backend

When we started building Harbor Software’s core inference platform in late 2021, the backend framework decision felt unusually consequential. We were building something that needed to serve ML model predictions with sub-200ms latency, handle concurrent long-running inference jobs, and remain approachable enough that a team
Explore
Drag