Explicando las bases de datos vectoriales en 3 niveles de dificultad

'Explicación de bases de datos vectoriales en 3 niveles de dificultad'

De principiante a experto: Desmitificando las bases de datos vectoriales en diferentes ámbitos

Espacio vectorial (Imagen dibujada a mano por el autor)

Las bases de datos vectoriales han estado recibiendo mucha atención últimamente, con muchas startups de bases de datos vectoriales recaudando millones en financiamiento.

Probablemente ya hayas oído hablar de ellas pero realmente no te importaban hasta ahora —al menos, eso es lo que supongo por qué estás aquí ahora…

Si estás aquí solo por la respuesta corta, vamos directo al grano:

Definición: ¿Qué es una base de datos vectorial?

Una base de datos vectorial es un tipo de base de datos que almacena y administra datos no estructurados, como texto, imágenes o audio, en vectores de incorporación (vectores de alta dimensión) para facilitar la búsqueda y recuperación rápida de objetos similares.

Si esa definición solo te causó más confusión, entonces vayamos paso a paso. Este artículo está inspirado en la serie de videos “5 Niveles” de WIRED y desglosa lo que son las bases de datos vectoriales en los siguientes tres niveles de dificultad:

  • Explícamelo como si tuviera 5 años
  • Explicando las bases de datos vectoriales a nativos digitales y entusiastas de la tecnología
  • Explicando las bases de datos vectoriales a ingenieros y profesionales de datos

Bases de datos vectoriales: Explícamelo como si tuviera 5 años (ELI5)

Esto se desvía un poco del tema, pero ¿sabes qué no entiendo?

Cuando las personas organizan sus estanterías de libros por color. — ¡Vaya!

¿Cómo encuentran un libro cuando no saben de qué color es la portada?

Foto de Luisa Brimble en Unsplash

La intuición detrás de las bases de datos vectoriales

Si quieres encontrar rápidamente un libro específico, organizar tu estantería de libros por género y luego por autor tiene mucho más sentido que por color. Por eso la mayoría de las bibliotecas están organizadas de esta manera, para ayudarte a encontrar lo que estás buscando rápidamente.

Pero ¿cómo encuentras algo para leer basado en una consulta en lugar de un género o un autor? ¿Qué pasa si quieres leer un libro que sea, por ejemplo:

  • similar a “La oruga muy hambrienta” o
  • sobre un personaje principal que le guste comer tanto como a ti?

Si no tienes tiempo para buscar en las estanterías de libros, la forma más rápida de hacerlo sería preguntarle al bibliotecario por su recomendación porque han leído muchos libros y sabrán exactamente cuál se ajusta mejor a tu consulta.

En el ejemplo de organizar libros, puedes pensar en el bibliotecario como una base de datos vectorial porque las bases de datos vectoriales están diseñadas para almacenar información compleja (por ejemplo, la trama de un libro) sobre un objeto (por ejemplo, un libro). Así, las bases de datos vectoriales pueden ayudarte a encontrar objetos basados en una consulta específica (por ejemplo, un libro que trata sobre…) en lugar de algunos atributos predefinidos (por ejemplo, autor) — al igual que un bibliotecario.

Explicando las bases de datos vectoriales a nativos digitales y entusiastas de la tecnología

Ahora, vamos a seguir con el ejemplo de la biblioteca y ser un poco más técnicos: Por supuesto, en estos días existen técnicas más avanzadas para buscar un libro en una biblioteca que solo por género o autor.

Si visitas una biblioteca, generalmente hay una computadora en la esquina que te ayuda a encontrar un libro con atributos más específicos, como título, ISBN, año de publicación o algunas palabras clave. Según los valores que ingreses, se consulta una base de datos de los libros disponibles. Esta base de datos suele ser una base de datos relacional tradicional.

¿Cuál es la diferencia entre una base de datos relacional y una base de datos vectorial?

La principal diferencia entre las bases de datos relacionales y las bases de datos vectoriales radica en el tipo de datos que almacenan. Mientras que las bases de datos relacionales están diseñadas para datos estructurados que encajan en tablas, las bases de datos vectoriales están destinadas a datos no estructurados, como texto o imágenes.

El tipo de datos almacenado también influye en cómo se recuperan los datos: en las bases de datos relacionales, los resultados de las consultas se basan en coincidencias de palabras clave específicas. En las bases de datos vectoriales, los resultados de las consultas se basan en similitud.

Puedes pensar en las bases de datos relacionales tradicionales como hojas de cálculo. Son ideales para almacenar datos estructurales, como información básica sobre un libro (por ejemplo, título, autor, ISBN, etc.), porque este tipo de información se puede almacenar en columnas, lo cual es ideal para filtrar y ordenar.

Con las bases de datos relacionales, puedes obtener rápidamente todos los libros que son, por ejemplo, libros infantiles y que tienen “oruga” en el título.

Pero ¿qué pasa si te gustó que “La oruga muy hambrienta” trata sobre comida? Podrías intentar buscar la palabra clave “comida”, pero a menos que la palabra clave “comida” se mencione en el resumen del libro, ni siquiera encontrarás “La oruga muy hambrienta”. En cambio, probablemente terminarás con un montón de libros de cocina y decepción.

Y esta es una limitación de las bases de datos relacionales: debes agregar toda la información que creas que alguien podría necesitar para encontrar ese elemento específico. Pero ¿cómo sabes qué información y cuánta agregar? Agregar toda esta información lleva tiempo y no garantiza la completitud.

Ahora es donde entran en juego las bases de datos vectoriales.

Pero primero, un pequeño desvío sobre un concepto llamado incrustaciones vectoriales.

Los algoritmos de Aprendizaje Automático (ML) de hoy en día pueden convertir un objeto dado (por ejemplo, palabra o texto) en una representación numérica que preserva la información de ese objeto. Imagina que le das a un modelo de ML una palabra (por ejemplo, “comida”), luego ese modelo de ML hace su magia y te devuelve una larga lista de números. Esta larga lista de números es la representación numérica de tu palabra y se llama incrustación vectorial.

Debido a que estas incrustaciones son una larga lista de números, las llamamos de alta dimensionalidad. Vamos a pretender por un segundo que estas incrustaciones son solo tridimensionales para visualizarlas como se muestra a continuación.

Puedes ver que palabras similares como “hambriento”, “sediento”, “comida” y “bebida” están agrupadas en un rincón similar, mientras que otras palabras como “bicicleta” y “auto” están cerca pero en un rincón diferente en este espacio vectorial.

Las representaciones numéricas nos permiten aplicar cálculos matemáticos a objetos, como palabras, que generalmente no son adecuados para cálculos. Por ejemplo, el siguiente cálculo no funcionará a menos que reemplaces las palabras por sus incrustaciones:

bebida - comida + hambriento = sediento

Y debido a que podemos usar las incrustaciones para cálculos, también podemos calcular las distancias entre un par de objetos incrustados. Cuanto más cerca estén dos objetos incrustados entre sí, más similares son.

Como puedes ver, las incrustaciones vectoriales son bastante geniales.

Volviendo a nuestro ejemplo, supongamos que incrustamos el contenido de cada libro en la biblioteca y almacenamos estas incrustaciones en una base de datos vectorial. Ahora, cuando quieras encontrar un “libro infantil con un personaje principal que le gusta la comida”, tu consulta también se incrusta y se devuelven los libros que son más similares a tu consulta, como “La oruga muy hambrienta” o quizás “Ricitos de Oro y los Tres Osos”.

¿Cuáles son los casos de uso de las bases de datos vectoriales?

Las bases de datos vectoriales existían antes de que comenzara la moda de los Modelos de Lenguaje Grandes (LLMs, por sus siglas en inglés). Originalmente, se utilizaban en sistemas de recomendación porque pueden encontrar rápidamente objetos similares para una consulta dada. Pero debido a que pueden proporcionar memoria a largo plazo a los LLMs, también se han utilizado recientemente en aplicaciones de preguntas y respuestas.

Explicando las bases de datos vectoriales a ingenieros y profesionales de datos

Si ya podías adivinar que las bases de datos vectoriales son probablemente una forma de almacenar incrustaciones vectoriales antes de abrir este artículo y solo quieres saber qué son las incrustaciones vectoriales en el fondo, entonces adentrémonos en los detalles y hablemos de los algoritmos.

¿Cómo funcionan las bases de datos vectoriales?

Las bases de datos vectoriales pueden recuperar objetos similares a una consulta rápidamente porque ya los han precalculado. El concepto subyacente se llama búsqueda de vecino más cercano aproximado (ANN, por sus siglas en inglés) y utiliza diferentes algoritmos para indexar y calcular similitudes.

Como puedes imaginar, calcular las similitudes entre una consulta y cada objeto incrustado que tienes con un algoritmo simple de vecinos más cercanos (kNN, por sus siglas en inglés) puede llevar mucho tiempo cuando tienes millones de incrustaciones. Con ANN, puedes sacrificar algo de precisión a cambio de velocidad y recuperar los objetos aproximadamente más similares a una consulta.

Indexación — Para esto, una base de datos vectorial indexa las incrustaciones vectoriales. Este paso mapea los vectores a una estructura de datos que permitirá una búsqueda más rápida.

Puedes pensar en la indexación como agrupar los libros en una biblioteca en diferentes categorías, como autor o género. Pero como las incrustaciones pueden contener información más compleja, las categorías adicionales podrían ser “género del personaje principal” o “ubicación principal de la trama”. La indexación puede ayudarte a recuperar una parte más pequeña de todos los vectores disponibles y, por lo tanto, acelerar la recuperación.

No entraremos en detalles técnicos de los algoritmos de indexación, pero si estás interesado en leer más, puedes comenzar buscando Hierarchical Navigable Small World (HNSW).

Medidas de similitud — Para encontrar los vecinos más cercanos a la consulta de los vectores indexados, una base de datos vectorial aplica una medida de similitud. Las medidas de similitud comunes incluyen similitud de coseno, producto punto, distancia euclidiana, distancia de Manhattan y distancia de Hamming.

¿Cuál es la ventaja de las bases de datos vectoriales sobre el almacenamiento de las incrustaciones vectoriales en un arreglo de NumPy?

Una pregunta que me he encontrado con frecuencia es: ¿No podemos simplemente usar arreglos de NumPy para almacenar las incrustaciones? — Por supuesto, puedes hacerlo si no tienes muchas incrustaciones o si solo estás trabajando en un proyecto de hobby divertido. Pero como ya puedes adivinar, las bases de datos vectoriales son notablemente más rápidas cuando tienes muchas incrustaciones, y no tienes que mantener todo en la memoria.

Lo mantendré breve porque Ethan Rosenthal ha hecho un trabajo mucho mejor explicando la diferencia entre usar una base de datos vectorial frente a usar un arreglo de NumPy de lo que yo podría escribir.

¿Realmente necesitas una base de datos vectorial? | Ethan Rosenthal

¡Alerta de spoiler: la respuesta es tal vez! Aunque, mi inclusión de la palabra “realmente” traiciona mi sesgo. Las bases de datos vectoriales son…

www.ethanrosenthal.com

¿Disfrutaste esta historia?

Suscríbete gratis para recibir notificaciones cuando publique una nueva historia.

¿Quieres leer más de 3 historias gratuitas al mes? — Conviértete en miembro de Zepes por 5 $ al mes. Puedes apoyarme usando mi enlace de referencia al registrarte. Recibiré una comisión sin costo adicional para ti.

Lee todas las historias de Leonie Monigatti (y miles de otros escritores en Zepes). Tu tarifa de membresía directamente…

Zepes.com

Encuéntrame en LinkedIn , Twitter y Kaggle !