Las incrustaciones vectoriales son un componente fundamental del aprendizaje automático que convierte información "de alta dimensión", como texto o imágenes, en un espacio vectorial estructurado. Este proceso permite procesar e identificar datos relacionados de forma más eficaz al representarlos como vectores numéricos. En este post, aprenderás a crear incrustaciones vectoriales, sus tipos y su implementación en varios casos de uso.

Explicación de la incrustación vectorial

Las incrustaciones vectoriales son como traducir información que entendemos a algo que entiende un ordenador. Imagina que intentas explicar a un ordenador el concepto de "San Valentín". Como los ordenadores no entienden conceptos como vacaciones, romanticismo y contexto cultural como nosotros, tenemos que traducirlos a algo que SÍ entiendan: números. Eso es lo que hacen las incrustaciones vectoriales. Representan palabras, imágenes o cualquier tipo de datos en una lista de números que representan de qué tratan esas palabras o imágenes.

Por ejemplo, en el caso de las palabras, si "gato" y "gatito" son similares, cuando se procesan a través de un modelo lingüístico (grande), sus listas de números (es decir, vectores) estarán bastante cerca. Pero no se trata sólo de palabras. Se puede hacer lo mismo con fotos u otros tipos de medios. Así, si tienes un montón de fotos de mascotas, las incrustaciones vectoriales ayudan a un ordenador a ver cuáles son similares, aunque no "sepa" qué es un gato.

Digamos que estamos convirtiendo las palabras "Día de San Valentín" en un vector. La cadena "Día de San Valentín" se daría a algún modelo, típicamente un LLM (gran modelo lingüístico)que produciría una matriz de números que se almacenaría junto a las palabras.

Los vectores son muy largos y complejos. Por ejemplo, Tamaño del vector de OpenAI suele ser 1536, lo que significa que cada incrustación es una matriz de 1536 números de coma flotante.

 

Produce vectors from embedding

 

Por sí solos, estos datos no significan gran cosa: se trata de encontrar otras incrustaciones que sean cerrar.

 

Produce vectors from embedding

En este diagrama, un algoritmo de vecino más próximo puede encontrar datos con vectores cerrar a la consulta vectorizada. Estos resultados se devuelven en una lista (ordenados por su proximidad).

Tipos de incrustación vectorial

Existen varios tipos de incrustaciones, cada una con su propia forma de entender y representar los datos. Aquí tienes un resumen de los principales tipos que puedes encontrar:

Incrustación de palabras: Las incrustaciones de palabras traducen palabras individuales en vectores, capturando la esencia de su significado. Para crear estas incrustaciones se utilizan modelos populares como Word2Vec, GloVe y FastText. Pueden ayudar a mostrar la relación entre palabras, como entender que "rey" y "reina" están relacionados del mismo modo que "hombre" y "mujer".

He aquí un ejemplo de Word2Vec en acción:

Incrustación de frases y documentos: Más allá de las palabras sueltas, las incrustaciones de frases y documentos representan fragmentos de texto más grandes. Estas incrustaciones pueden captar el contexto de toda una frase o documento, no sólo de palabras sueltas. Modelos como BERT y Doc2Vec son buenos ejemplos. Se utilizan en tareas que requieren comprender el mensaje general, el sentimiento o el tema de los textos.

Incrustación de imágenes: Convierten las imágenes en vectores, capturando características visuales como formas, colores y texturas. Las incrustaciones de imágenes se crean utilizando modelos de aprendizaje profundo (como CNN: Redes neuronales convolucionales). Permiten realizar tareas como el reconocimiento de imágenes, la clasificación y la búsqueda de similitudes. Por ejemplo, una imagen incrustada puede ayudar a un ordenador a reconocer si una foto determinada es un perrito caliente o no.

Incrustación de grafos: Los grafos se utilizan para representar relaciones y estructuras, como redes sociales, organigramas o rutas biológicas. Convierten los nodos y aristas de un grafo en vectores, capturando cómo se conectan los elementos. Esto es útil para las recomendaciones, la agrupación y la detección de comunidades (clusters) dentro de las redes.

Incrustación de audio: Al igual que las incrustaciones de imágenes, las incrustaciones de audio traducen el sonido en vectores, capturando características como el tono, el timbre y el ritmo. Se utilizan en tareas de reconocimiento de voz, análisis musical y clasificación de sonidos.

Incrustación de vídeos: Las incrustaciones de vídeo capturan la dinámica visual y temporal de los vídeos. Se utilizan para actividades como la búsqueda de vídeos, la clasificación y la comprensión de escenas o actividades dentro de las secuencias.

Cómo crear incrustaciones vectoriales

En términos generales, hay cuatro pasos:

    1. Elija su modelo de incrustación vectorial: Decida el tipo de modelo en función de sus necesidades. Word2Vec, GloVe y FastText son populares para la incrustación de palabras, mientras que BERT y GPT-4 se utilizan para la incrustación de frases y documentos, etc.
    2. Prepare sus datos: Limpie y preprocese sus datos. Para el texto, esto puede incluir la tokenización, la eliminación de "stopwords" y, posiblemente, la lematización (reducción de palabras a su forma básica). En el caso de las imágenes, se puede cambiar el tamaño, normalizar los valores de los píxeles, etc.
    3. Entrenar o utilizar modelos preentrenados: Puede entrenar su modelo en su conjunto de datos o utilizar un modelo preentrenado. El entrenamiento desde cero requiere una cantidad significativa de datos, tiempo y recursos informáticos. Los modelos preentrenados son una forma rápida de empezar y pueden ajustarse (o aumentarse) con su conjunto de datos específico.
    4. Generar incrustaciones: Una vez que su modelo esté listo, alimente sus datos a través de él (vía SDK, REST, etc.) para generar incrustaciones. Cada elemento se transformará en un vector que representa su significado semántico. Normalmente, las incrustaciones se almacenan en una base de datos, a veces junto a los datos originales.

Aplicaciones de las incrustaciones vectoriales

Entonces, ¿cuál es el problema con el vector? ¿Qué problemas puedo resolver con él? A continuación se exponen varios casos de uso que son posibles gracias al uso de incrustaciones vectoriales para encontrar elementos semánticamente similares (es decir, "búsqueda vectorial"):

Procesamiento del lenguaje natural (PLN)

    • Búsqueda semántica: Mejorar la pertinencia de la búsqueda y la experiencia del usuario utilizando mejor el significado de los términos de búsqueda, más allá de la búsqueda tradicional basada en texto.
    • Análisis del sentimiento: Analizar los comentarios de los clientes, las publicaciones en redes sociales y las reseñas para calibrar el sentimiento (positivo, negativo o neutro).
    • Traducción de idiomas: Comprender la semántica de la lengua de partida y generar un texto adecuado en la lengua de llegada.

Sistemas de recomendación

    • Comercio electrónico: Personalización de las recomendaciones de productos en función del historial de navegación y de compras.
    • Plataformas de contenidos: Recomendar contenidos a los usuarios en función de sus intereses e interacciones anteriores.

Visión por ordenador

    • Reconocimiento y clasificación de imágenes: Identificación de objetos, personas o escenas en imágenes para aplicaciones como vigilancia, etiquetado de fotos, identificación de piezas, etc.
    • Búsqueda visual: Permitir a los usuarios buscar con imágenes en lugar de consultas de texto.

Sanidad

    • Descubrimiento de fármacos: Ayudar a identificar las interacciones.
    • Análisis de imágenes médicas: Diagnóstico de enfermedades mediante el análisis de imágenes médicas como radiografías, resonancias magnéticas y tomografías computarizadas.

Finanzas

    • Detección de fraudes: Análisis de patrones de transacciones para identificar y prevenir actividades fraudulentas.
    • Calificación crediticia: Análisis de la historia y el comportamiento financieros.

Generación mejorada por recuperación (RAG)

Recuperación-Generación mejorada es un enfoque que combina los puntos fuertes de la formación previa modelos generativos del lenguaje (como GPT-4) con capacidades de recuperación de información (como la búsqueda vectorial) para mejorar la generación de respuestas.

RAG puede aumentar una consulta a un LLM como GPT-4 con información de dominio actualizada y relevante. Hay dos pasos:

    1. Consulta de documentos relevantes.
      La búsqueda vectorial es particularmente buena para identificar datos relevantes, pero cualquier consulta puede funcionar, incluidas las consultas analíticas que Couchbase columnar hace posible.
    2. Pasar los resultados de la consulta como contexto al modelo generativo, junto con la propia consulta.

Este enfoque permite al modelo producir respuestas más informativas, precisas y contextualmente relevantes.

Los casos de uso de la GAR incluyen:

    • Respuesta a preguntas: A diferencia de los sistemas de dominio cerrado que se basan en un conjunto de datos fijo, RAG puede acceder a información actualizada desde su fuente de conocimiento.
    • Creación de contenidos: RAG puede aumentar el contenido con hechos y cifras relevantes, garantizando una mayor precisión.
    • Chatbots/Asistentes: Bots como Couchbase Capella iQ puede ofrecer respuestas más detalladas e informativas sobre una amplia gama de temas.
    • Herramientas educativas: RAG puede proporcionar explicaciones detalladas o información complementaria sobre una amplia gama de temas adaptados a las consultas del usuario.
    • Sistemas de recomendación: RAG puede generar explicaciones o razones personalizadas detrás de las recomendaciones recuperando información relevante que coincida con los intereses del usuario o el contexto de la consulta.

Incrustación vectorial y Couchbase

Couchbase es una base de datos polivalente que destaca en la gestión de datos JSON. Esta flexibilidad se aplica a las incrustaciones vectoriales, ya que la naturaleza sin esquemas de Couchbase permite el almacenamiento y la recuperación eficientes de datos vectoriales complejos y multidimensionales junto con documentos JSON tradicionales (como se muestra anteriormente en esta entrada de blog).

La fuerza de Couchbase reside en su capacidad para manejar una amplia gama de tipos de datos y casos de uso dentro de una única plataforma, en contraste con las plataformas especializadas de un solo propósito. bases de datos vectoriales (como Pinecone) centrado únicamente en la búsqueda vectorial y la similitud. Los beneficios del enfoque de Couchbase incluyen:

Consulta híbrida: Con Couchbase, puedes combinar SQL++, clave/valor, geoespacial y búsqueda de texto completo en una sola consulta para reducir el procesamiento posterior a la consulta y crear más rápidamente un rico conjunto de funciones de aplicación.

Versatilidad: Couchbase admite búsquedas clave-valor, de documentos y de texto completo, así como análisis en tiempo real y eventos, todo dentro de la misma plataforma. Esta versatilidad permite a los desarrolladores utilizar incrustaciones vectoriales para funciones avanzadas de búsqueda y recomendación sin necesidad de un sistema independiente.

Escalabilidad y rendimiento: Diseñado para ofrecer un alto rendimiento y escalabilidad, Couchbase garantiza que las aplicaciones que utilizan incrustaciones vectoriales puedan escalarse de forma eficiente para satisfacer las crecientes demandas de datos y tráfico.

Experiencia en desarrollo unificado: Consolidar casos de uso de datos en Couchbase simplifica el proceso de desarrollo. Los equipos pueden centrarse en crear funcionalidades en lugar de gestionar múltiples bases de datos, integraciones y canalizaciones de datos.

Próximos pasos

Danos Couchbase Capella y compruebe cómo una base de datos polivalente puede ayudarle a crear aplicaciones potentes y adaptables. También puede descargar la versión de servidor local de Couchbase Server 7.6, con integración de búsqueda vectorial.

Puedes ponerte en marcha en cuestión de minutos con una prueba gratuita (sin necesidad de tarjeta de crédito). La IA generativa de Capella iQ está integrado y puede ayudarte a empezar a escribir tus primeras consultas.

Preguntas frecuentes sobre la incrustación vectorial

¿Cuál es la diferencia entre vectorización de texto e incrustación?

La vectorización de texto es una forma de contar las apariciones de palabras en un documento. La incrustación representa el significado semántico de las palabras y su contexto.

¿Cuál es la diferencia entre indexación e incrustación?

La incrustación es el proceso de generación de los vectores. La indexación es el proceso que permite recuperar los vectores y sus vecinos.

¿Qué tipos de contenidos pueden incrustarse?

Palabras, texto, imágenes, documentos, audio, vídeo, gráficos, redes, etc.

¿Cómo ayudan las incrustaciones vectoriales a la IA generativa?

Las incrustaciones vectoriales pueden utilizarse para encontrar contexto que aumente la generación de respuestas. Véase la sección anterior sobre GAR.

¿Qué son las incrustaciones en el aprendizaje automático?

Representación matemática de los datos utilizada para representarlos de forma compacta y encontrar similitudes entre ellos.

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

Dejar una respuesta