Method note: the algorithm here is cited to its primary paper. I studied it in the DeepLearning.AI RAG course; nothing proprietary is reproduced. The diagram is my own.
Context
Once your documents live as embedding vectors, answering “which are most similar to this query” sounds trivial. It is, until the corpus grows. Comparing a query to a few hundred vectors is instant; comparing it to millions on every request is not. A vector database exists to make that second case fast, and the idea behind it is worth understanding rather than treating as magic.
The concept
The exact method is a nearest-neighbor search: embed the query, compute its distance to every stored vector, sort, return the closest. It is perfectly accurate and it scales linearly, so cost grows with the corpus. Fine for hundreds, painful for millions.
Approximate Nearest Neighbors gives up a sliver of accuracy to escape that linear cost. The result may occasionally miss the single closest vector, but it returns near-perfect neighbors far faster. That trade is the entire point; a system that still checked every vector would defeat the purpose.
| Exact (KNN search) | Approximate (ANN) | |
|---|---|---|
| Compares against | Every vector | A small navigated subset |
| Accuracy | Perfect | Near-perfect |
| Cost per query | Linear, grows with corpus | Roughly logarithmic |
| Good for | Small corpora | Millions of vectors |
The dominant structure is HNSW, a hierarchical navigable small-world graph (Malkov and Yashunin, 2018). Picture layers. The top layer holds a few vectors with long-range links, so you jump across the space quickly. Each layer down has more vectors and shorter links. You start at the top to land in the right neighborhood, then descend layer by layer to refine. Because each layer has exponentially fewer vectors than the one below, search cost grows roughly with the logarithm of the corpus, not its size. The mental picture is zooming a map: continent, country, city, street.
Two practical notes. Storage matters: a million 768-dimension vectors is a few gigabytes, and larger embedding models multiply that. And a vector database is not always a separate product; PostgreSQL with the pgvector extension gives you HNSW indexing inside a database you may already run.
Where this connects
- Data science. ANN is a general similarity-search primitive. The same HNSW index powers recommendation, near-duplicate detection, image search and clustering at scale, not just text retrieval. The habit worth keeping is asking whether you truly need exact neighbors, because approximate is usually enough and vastly cheaper.
- Clinical AI. For a corpus of guidelines and papers this is what keeps retrieval fast as the library grows, so the answer still arrives in a usable time. At small scale the choice barely matters; the value shows up precisely when the knowledge base becomes large enough to be worth having.
Nota de método: el algoritmo está citado a su artículo primario. Lo estudié en el curso de RAG de DeepLearning.AI; no se reproduce nada propietario. El diagrama es propio.
Contexto
Una vez que tus documentos viven como vectores de embedding, responder “¿cuáles son los más similares a esta consulta?” suena trivial. Lo es, hasta que el corpus crece. Comparar una consulta con unos cientos de vectores es instantáneo; compararla con millones en cada petición no lo es. Una base de datos vectorial existe para hacer rápido ese segundo caso, y vale la pena entender la idea detrás en vez de tratarla como magia.
El concepto
El método exacto es una búsqueda de vecinos: embebe la consulta, calcula su distancia a cada vector guardado, ordena, devuelve los más cercanos. Es perfectamente exacta y escala de forma lineal, así que el costo crece con el corpus. Bien para cientos, doloroso para millones.
Los Approximate Nearest Neighbors ceden una pizca de exactitud para escapar de ese costo lineal. El resultado puede a veces perder el vector más cercano exacto, pero devuelve vecinos casi perfectos mucho más rápido. Ese trato es todo el punto; un sistema que igual revisara cada vector arruinaría el propósito.
| Exacta (KNN search) | Aproximada (ANN) | |
|---|---|---|
| Compara contra | Cada vector | Un pequeño subconjunto navegado |
| Exactitud | Perfecta | Casi perfecta |
| Costo por consulta | Lineal, crece con el corpus | Aproximadamente logarítmico |
| Buena para | Corpus pequeños | Millones de vectores |
La estructura dominante es HNSW, un grafo jerárquico de mundo pequeño navegable (Malkov y Yashunin, 2018). Imagina capas. La capa superior tiene pocos vectores con enlaces de largo alcance, así que saltas rápido por el espacio. Cada capa hacia abajo tiene más vectores y enlaces más cortos. Empiezas arriba para caer en el vecindario correcto, luego bajas capa por capa para refinar. Como cada capa tiene exponencialmente menos vectores que la de abajo, el costo de búsqueda crece más o menos con el logaritmo del corpus, no con su tamaño. La imagen mental es hacer zoom en un mapa: continente, país, ciudad, calle.
Dos notas prácticas. El almacenamiento importa: un millón de vectores de 768 dimensiones son unos pocos gigabytes, y modelos de embedding más grandes lo multiplican. Y una base de datos vectorial no siempre es un producto aparte; PostgreSQL con la extensión pgvector te da indexación HNSW dentro de una base que quizá ya corres.
Dónde conecta
- Data science. ANN es una primitiva general de búsqueda por similitud. El mismo índice HNSW alimenta recomendación, detección de casi-duplicados, búsqueda de imágenes y clustering a escala, no solo recuperación de texto. El hábito que vale la pena guardar es preguntarte si de verdad necesitas vecinos exactos, porque lo aproximado suele bastar y es muchísimo más barato.
- Clinical AI. Para un corpus de guías y papers esto es lo que mantiene la recuperación rápida a medida que la biblioteca crece, para que la respuesta siga llegando en un tiempo usable. A pequeña escala la elección casi no importa; el valor aparece justo cuando la base de conocimiento se vuelve lo bastante grande como para valer la pena.