¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
dev
Javier Ariza 27/02/2025 Cargando comentarios…
La generación aumentada de recuperación (en inglés Retrieval-Augmented Generation o RAG) es el proceso de optimización del funcionamiento de un Large Language Model (LLM), de modo que como entrada, además del texto y la plantilla del prompt, disponga de los resultados de la búsqueda en una base de datos de conocimiento autorizada, personalizada con información específica, más allá de sus fuentes de datos de entrenamiento, antes de generar una respuesta.
En este post exploraremos dos tipos de bases de datos de conocimiento diferentes para poder implementar nuestras aplicaciones con RAG: las bases de datos de vectores y las bases de datos de grafos.
La decisión sobre qué base de datos usar es fundamental para optimizar la información de entrada al LLM. Aunque el objetivo de ambas sigue siendo el mismo (recuperar la información contextualmente relevante para la consulta del usuario), cada una tiene un propósito único, y entender cuándo y cómo utilizarlas puede aportar beneficios significativos en campos como el de la Inteligencia Artificial (IA) generativa. Además de entender qué son estas bases de datos, haremos hincapié en sus ventajas e inconvenientes y en algunos de los casos de uso donde mejor pueden encajar.
Los vectores (o embeddings para este contexto) son representaciones numéricas de la información generada por los modelos de embedding que han sido previamente entrenados. En el ámbito de la IA generativa, estos modelos se utilizan para transformar información semántica en vectores numéricos que puedan ser procesados por los LLMs o por los algoritmos de comparación y recuperación de las bases de datos de vectores. Algunos ejemplos de estos modelos son: text-multilingual-embedding-002 (de Google), NV-Embed-v2 (de NVIDIA), Multilingual E5 (de Microsoft) o text-embedding-3-large (de OpenAI).
Estos vectores tienen por objetivo encapsular el significado semántico de los datos (por ejemplo, textos, audios, vídeos o imágenes) en un espacio multidimensional. En este espacio, los números (dimensiones) de cada vector capturan diferentes características importantes de los datos (como una palabra, una imagen o una frase), y todas estas características juntas sitúan al vector en una posición específica en un espacio de alta dimensión. La relación entre vectores en este espacio nos ayuda a comprender lo similares o diferentes que son los puntos de datos entre sí.
Hoy en día, las aplicaciones basadas en datos manejan datos complejos y multidimensionales como imágenes, audios, vídeos o texto. Estos tipos de datos no pueden ser gestionados eficazmente por las bases de datos y los motores de búsqueda tradicionales.
Las bases de datos de vectores son bases de datos especializadas diseñadas para almacenar, buscar y gestionar vectores de datos de alta dimensión. Las bases de datos de vectores destacan en tareas de búsqueda por similitud, cuyo objetivo es identificar elementos cercanos entre sí en el espacio vectorial a partir de sus representaciones numéricas. La búsqueda por similitud es crucial a la hora de comparar puntos de datos y encontrar los más parecidos según determinados criterios.
Además de almacenar los vectores en la base de datos, estos deben ser indexados para optimizar el proceso de recuperación. Esta técnica de indexación de vectores utiliza algoritmos avanzados para organizar ordenadamente los vectores de alta dimensión de forma que puedan realizarse búsquedas de forma eficaz. Esta ordenación no es aleatoria, sino que se realiza de forma que los vectores similares se agrupen. Algunas técnicas de indexación a destacar son: Inverted File with Flat Compression (IVF) o Hierarchical Navigable Small World (HNSW).
Algunos ejemplos de bases de datos de vectores son los siguientes:
Dentro de estas bases de datos podemos determinar 3 componentes clave que intervienen en ellas:
Las ventajas e inconvenientes que presentan este tipo de bases de datos podemos resumirlas a continuación:
Ventajas
Inconvenientes
En el procesamiento del lenguaje natural, las palabras u oraciones se pueden representar en forma de vectores a través de embeddings. De manera directa, guardan representaciones de vectores que reflejan su significado y las conexiones entre ellas. Esto las hace especialmente útiles en tareas como búsqueda semántica, recomendaciones, categorización de textos, traducción automática y análisis de sentimientos, al priorizar la similitud de significado sobre la coincidencia literal de palabras.
Ejemplo en la vida real
En un sistema de chatbot de atención al cliente, este puede preguntar lo siguiente: "¿Cómo puedo cambiar o restablecer mi contraseña?”. La consulta se transforma en vectores mediante embeddings y la base de datos de vectores puede identificar los vectores semánticamente similares del índice que contiene la documentación explicativa de los procedimientos de IT. De esta forma, proporciona una respuesta relevante.
Los sistemas de recomendación son algoritmos que sugieren contenidos a los usuarios basándose en sus preferencias e interacciones anteriores. Estos sistemas representan las preferencias de los usuarios y los contenidos como vectores, capturando características importantes como el comportamiento o los atributos del contenido. Las bases de datos de vectores comparan el vector de preferencias del usuario con los vectores de los contenidos, encontrando la mayor similitud. Esto permite hacer recomendaciones personalizadas sugiriendo contenidos semánticamente similares.
Ejemplo en la vida real
Una plataforma en streaming que detecte lo que un usuario consume. Si la mayoría de series que consume son de ciencia ficción, recomendará productos de este género o similar, y también aquellos que hayan consumido otros usuarios con gustos afines.
Cuando los datos son no estructurados, las bases de datos de vectores son naturalmente adecuadas para tareas como la búsqueda por similitud dentro de los datos visuales.
Ejemplo en la vida real
En las plataformas de comercio electrónico, los clientes quieren encontrar un par de zapatillas que han visto en Internet. Al subir una foto de las zapatillas, la plataforma de comercio electrónico puede recuperar rápidamente productos similares de su amplio inventario. Las bases de datos de vectores pueden comparar el vector de la imagen cargada con los de las imágenes del producto almacenado.
Desde los sistemas de reconocimiento facial hasta las bases de datos de huellas dactilares, los datos biométricos son de alta dimensión y requieren capacidades de búsqueda por similitud de manera eficiente.
Ejemplo en la vida real
En los aeropuertos internacionales, se utiliza un sistema de reconocimiento facial por cuestiones de seguridad. Se captura el rostro de cada persona y se convierte en un vector. Cuando alguien se acerca al control de seguridad, su rostro se compara con una base de datos de vectores de delincuentes conocidos o personas de interés, lo que puede garantizar una detección rápida de amenazas.
En el campo farmacéutico, las moléculas y los genes se pueden representar como vectores. Se pueden usar las bases de datos de vectores para realizar búsquedas de compuestos o patrones genéticos similares.
Ejemplo en la vida real
Los compuestos químicos se representan como vectores de alta dimensión en un laboratorio de investigación farmacéutica. Cuando se identifica un compuesto prometedor para tratar una enfermedad específica, la base de datos de vectores puede encontrar otros compuestos con estructuras o propiedades similares, lo que potencialmente conduce a procesos de descubrimiento de fármacos más eficientes.
Un grafo es una composición de un conjunto de objetos conocidos como nodos que se relacionan con otros nodos a través de un conjunto de conexiones conocidas como aristas.
Las bases de datos de grafos son un tipo de base de datos NoSQL que permiten almacenar los datos como nodos (entidades), relaciones (aristas) y propiedades. Las entidades pueden representar objetos, conceptos o ideas del mundo real, mientras que las relaciones describen cómo están conectadas esas entidades. Esta estructura permite modelar los datos de forma intuitiva y realizar consultas complejas basadas en relaciones. Las diferencias entre estas bases de datos y las relacionales son:
Algunos ejemplos de bases de datos de grafos son los siguientes:
Dentro de estas bases de datos podemos determinar 5 componentes clave que intervienen en las bases de datos de grafos:
Ventajas
Inconvenientes
Las bases de datos de grafos pueden ayudar a administrar estructuras de permisos complejas en los sistemas de control de acceso.
Ejemplo en la vida real
Las empresas pueden organizar el acceso a determinados recursos en base al rol, el tipo de usuario o los privilegios que tengan los usuarios. Con las bases de datos de grafos se pueden modelar los derechos de acceso según esos criterios, lo que garantiza que las personas adecuadas accedan a los recursos correspondientes.
Las bases de datos de grafos mejoran significativamente la gestión de redes gracias a su capacidad para asignar de forma intuitiva y escalable relaciones de red complejas.
Ejemplo en la vida real
Un centro de datos (data center) puede utilizar estas bases de datos para modelar su red. En caso de fallo inesperado de un servidor crítico del centro de datos, la base de datos podrá identificar y destacar rápidamente todas las conexiones físicas directas con el servidor averiado. La base de datos podría rastrear, además, qué clientes o sistemas externos dependen de este servidor.
En sectores como la banca y los seguros, las bases de datos de grafos pueden mejorar la detección de fraudes al reconocer relaciones complejas entre actividades fraudulentas que podrían no ser visibles con herramientas estándar.
Ejemplo en la vida real
Un banco que utiliza una base de datos de grafos puede detectar fraudes identificando patrones inusuales en los datos de sus transacciones. Por ejemplo, si se utilizan varias cuentas para realizar una serie de pequeñas transacciones, que de forma aislada podrían no activar las alarmas, las bases de datos de grafos pueden conectar estas cuentas para revelar un esquema más amplio de actividad fraudulenta.
Para las empresas que manejan grandes cantidades de información, la gestión del conocimiento es clave para mantener la eficiencia. Las bases de datos de grafos pueden ayudar a organizar y recuperar documentos de una manera que haga que el conocimiento sea más accesible, preciso y adaptado a consultas específicas. Al comprender las relaciones entre varios documentos, puede permitir a las empresas extraer la información más relevante rápidamente.
Ejemplo en la vida real
En un bufete de abogados que gestiona miles de documentos legales, estas bases de datos pueden recuperar precedentes de casos o referencias legales relacionadas en función de una consulta específica. En lugar de buscar manualmente en innumerables archivos, se podrán extraer los documentos más relevantes en función de sus relaciones y contenido.
Las bases de datos de grafos pueden ayudar a los profesionales médicos a encontrar rápidamente información relevante en grandes volúmenes de información médica para responder preguntas complejas sobre los síntomas, tratamientos y resultados de los pacientes.
Ejemplo en la vida real
En el entorno de un hospital, las bases de datos de grafos pueden almacenar información sobre sus pacientes, su historial médico y sus tratamientos. Permiten consultas para identificar patrones y tendencias en los datos de los pacientes, como la eficacia de determinados tratamientos para determinadas afecciones o recomendar planes de tratamiento personalizados para los pacientes.
Las bases de datos de grafos son excelentes soluciones para realizar análisis de redes sociales. Estas se pueden usar para representar a las personas y sus conexiones o relaciones. Permiten identificar a las personas influyentes de una red, recomendar nuevas conexiones, o encontrar distintos grupos de personas y comunidades para su perfilado.
Ejemplo en la vida real
Búsqueda de personas clave, identificación de grupos de personas y comunidades o localización de contenidos importantes mediante vecinos comunes son ejemplos de uso de una base de datos de grafos aplicada a una red social.
Características | Bases de datos de vectores | Bases de datos de grafos |
---|---|---|
Modelos y estructuras de datos | Utiliza vectores (embeddings) para representar puntos de datos en un espacio de alta dimensión. Funcionan muy bien para datos no estructurados como texto, imágenes, vídeo, etc. | Utiliza nodos y aristas para representar entidades y relaciones. Funcionan muy bien para datos estructurados y relacionados. |
Métodos de consulta | Utiliza algoritmos de búsqueda por similitud para encontrar el vector más cercano a un vector de consulta determinado. | Utiliza algoritmos de recorrido de grafos para explorar relaciones. |
Escalabilidad y rendimiento | Optimizado para datos a gran escala y alta dimensión. El rendimiento puede variar según la dimensión de los vectores. | Permiten escalar datos complejos e interconectados. El rendimiento puede verse afectado por la complejidad de las relaciones entre las entidades de datos. |
Técnicas de indexación | Utiliza técnicas como IVF o HNSW para una búsqueda por similitud eficiente. | Utiliza índices como listas adyacentes o árboles B para un recorrido rápido de grafos. |
Metodología de trabajo | Se centran en medir la similitud o la distancia entre puntos de datos en un espacio multidimensional. | Utilizadas para comprender y analizar las relaciones entre entidades y aprovechar las conexiones entre nodos. |
Interpretabilidad | Menos interpretable para humanos debido a representaciones numéricas de alta dimensión. Es difícil comprender directamente las relaciones o el razonamiento detrás de la información recuperada. | Representación del conocimiento interpretable por humanos. La estructura del grafo y las relaciones etiquetadas aclaran las conexiones entre entidades. |
Complejidad y curva de aprendizaje | Dependiendo de la base de datos pueden requerir conocimientos específicos, pero resultan más sencillas de utilizar. | Su construcción puede ser un proceso complejo. Requiere conocimiento específico del ámbito de trabajo y tiempo para un buen diseño. Los lenguajes de consulta (ej: Cypher o Gremlin) pueden ser diferentes del SQL estándar y llevar tiempo aprenderlos. |
Razonamiento inferencial | Más limitado. Se basa en similitud de vectores y puede pasar por alto relaciones o inferencias implícitas. Puede identificar información similar, pero no relaciones complejas. | Permite el razonamiento inferencial al recorrer la estructura del grafo y aprovechar las relaciones entre las entidades. Descubre conexiones implícitas y deriva nuevos conocimientos. |
Aunque ambas se utilizan para representar y recuperar información, difieren en sus estructuras de datos subyacentes y en la forma en que manejan la información.
En Standard RAG, las bases de datos de vectores convierten el texto, imagen, audio o vídeo en vectores (embeddings) capturando su significado semántico. Esto permite realizar búsquedas rápidas por similitud. Cuando se le pregunta algo, el sistema encuentra las partes de texto con vectores (embeddings) más parecidos a su consulta. Estos textos ayudan a responder a un Large Language Model (LLM).
En Graph RAG, las bases de datos de grafos son útiles para analizar relaciones y conexiones. Las bases de datos de grafos utilizan Large Language Model (LLM) para encontrar entidades y sus relaciones, cuya configuración inicial es costosa. Así se crea un grafo estructurado de nodos (entidades) y aristas (relaciones). Cuando se le realiza una pregunta, el sistema busca en el grafo las partes relevantes. A continuación, el LLM utiliza esta información y la pregunta para dar una respuesta detallada.
En este post hemos explicado qué son las bases de datos de vectores y de grafos, cuáles son sus ventajas y desventajas, y hemos detallado algunos casos de uso del mundo real donde estas bases de datos podrían encajar con más facilidad. Cada una de ellas tiene sus propios puntos fuertes para manejar diferentes tipos de datos. Saber qué hace mejor cada tipo de base de datos nos ayudará a elegir la más adecuada para nuestras necesidades.
En el mundo de la IA generativa, RAG es el proceso de optimizar la respuesta que nos devuelve un LLM ante una pregunta. Para ello, se necesita consultar una base de datos de conocimiento autorizada fuera de sus fuentes de datos de entrenamiento antes de generar una respuesta. Es en estas bases de datos autorizadas externas donde aparecen las bases de datos de vectores y las bases de datos de grafos.
En RAG podemos distinguir dos flujos principales de desarrollo para nuestras aplicaciones: Standard RAG (que trabaja con bases de datos de vectores) o Graph RAG (que trabaja con bases de datos de grafos). En función de los requisitos de nuestro caso de uso, y también de nuestros tipos de datos, podremos elegir qué base de datos se adapta mejor al problema y, por lo tanto, qué pasos debemos seguir para implementar nuestra aplicación de RAG. Una manera rápida de determinar cuál de ellas elegir es la siguiente:
Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.
Cuéntanos qué te parece.