GraphRAG vs Vector RAG: Por qué la búsqueda vectorial falla a gran escala
Vector RAG tiene dificultades con la isolación de fragmentos, el razonamiento entre documentos y la escalabilidad. Ve cómo GraphRAG crea comunidades y resúmenes para solucionarlo, y cuándo elegir cada uno.
Fuentes: GraphRAG: Why Vector Search Fails at Scale (And How Knowledge Graphs Fix It)
La generación mejorada por recuperación permite a un modelo de lenguaje trabajar con datos en los que nunca fue entrenado. La versión clásica divide los documentos en fragmentos, almacena sus embeddings en una base de datos vectorial y, al momento de hacer una consulta, recupera los fragmentos más cercanos a ella para incluirlos en el prompt. Para respuestas a preguntas simples con una colección modesta, esto funciona bien. Pero cuando se trata de datos empresariales complejos, comienza a mostrar deficiencias.
El problema no radica en el paso de recuperación ni en el paso de generación. Proviene de la forma en que se representan los datos una vez que se convierten en vectores.
Dónde falla el RAG con vectores simples
Los fragmentos se convierten en islas
Una vez que un documento se divide en fragmentos, cada fragmento queda aislado en el espacio vectorial. Está separado de los párrafos circundantes y del material relacionado en otros documentos, y toda la estructura que tenía originalmente desaparece. Al momento de la recuperación, el contexto importante que lo rodea se pierde, y el modelo de lenguaje grande puede confundir un hecho parcial con la verdad completa. Al cortar esos vínculos lógicos, se obliga al modelo a juzgar el texto sin tener en cuenta el entorno del que proviene.
Sin razonamiento entre documentos
Algunas preguntas no pueden responderse con un solo pasaje. Piense en “¿qué tendencias y temas aparecen en todos nuestros informes financieros trimestrales?” o “¿puede un empleado solicitar el reembolso de los costos de Wi-Fi incurridos antes de su fecha de ingreso?”. Microsoft Research denomina a este tipo de preguntas consultas de comprensión contextual. Son amplias y requieren un sistema para analizar, combinar y resumir las relaciones dentro de un conjunto de datos, en lugar de extraer un hecho que ya exista.
La búsqueda vectorial se basa en coincidencias semánticas locales: los fragmentos cuyos vectores están más cerca del vector de la consulta. Esto es excelente para preguntas locales, pero falla cuando la respuesta está dispersa en varios fragmentos y documentos. Supongamos que la respuesta requiere vincular el hecho A en un documento con el hecho B en otro y el hecho C en un tercero. Cada fragmento se obtiene de forma independiente, según su similitud con la consulta, por lo que un hecho intermedio con una puntuación de similitud baja queda excluido, aunque la respuesta dependa de él. La cadena de razonamiento se interrumpe.
La precisión disminuye a medida que crecen los datos
Cada sistema RAG que pasa de prototipo a producción amplía su corpus, y ese crecimiento revela un defecto: la precisión en la recuperación de información comienza a disminuir. Más documentos amplían el rango de temas que puede abordar el sistema, pero también reducen su precisión. Cuando un índice pasa de cientos a miles de fragmentos, la proporción de fragmentos relevantes para una pregunta concreta sigue disminuyendo. Los fragmentos relevantes quedan ahogados por otros que son semánticamente similares pero inútiles en el contexto. Más documentos significan una cobertura más amplia, pero también una menor precisión en la recuperación de información al mismo tiempo.
GraphRAG como solución
Microsoft Research presentó GraphRAG en 2024 para abordar estas debilidades. En lugar de vectores desconectados, mantiene las relaciones estructuradas ocultas en el texto al pasar a un grafo de conocimiento. Un grafo de conocimiento representa hechos del mundo real como nodos, que son entidades como personas, lugares o conceptos, conectados por aristas que indican cómo se relacionan. Esa base permite al sistema razonar sobre un conjunto completo de datos en lugar de realizar solo búsquedas locales.
La idea central
GraphRAG convierte documentos dispersos en un mapa conectado de ideas y resume los datos desde temas generales hasta detalles específicos. Dado que esas conexiones se crean de antemano, el LLM obtiene tanto una visión general del conjunto completo de datos como acceso a un contexto detallado. Hay cuatro etapas:
- Construir el grafo. Un LLM crea un grafo de conocimiento en el que los nodos son las entidades clave del corpus y las aristas representan las relaciones entre ellas.
- Encontrar comunidades. El grafo se divide en clústeres anidados, que van desde pequeños grupos locales hasta temas que abarcan todo el conjunto de datos. Una comunidad es un conjunto de nodos estrechamente conectados entre sí y solo ligeramente vinculados al resto de la red.
- Resumir de abajo hacia arriba. Un LLM redacta un resumen para cada comunidad que incluye sus entidades, hechos y relaciones. Los resúmenes se generan siguiendo la jerarquía, de modo que las comunidades de nivel superior absorben los resúmenes de las que están por debajo, dando como resultado una visión estructurada de todo el conjunto de datos.
El flujo de trabajo en detalle
Al igual que el RAG convencional, GraphRAG tiene dos fases: indexación y consulta.
Indexación, realizada fuera de línea
Documentos a fragmentos. El proceso comienza dividiendo los documentos en fragmentos, generalmente de unos 600 tokens, tamaño elegido para maximizar la cantidad de entidades que se pueden identificar.
Fragmentos a entidades y relaciones. El LLM lee cada fragmento por turnos y extrae las entidades importantes y las relaciones entre ellas, junto con breves descripciones de cada una. También puede extraer afirmaciones, que son hechos destacables sobre las entidades como fechas, eventos e interacciones con otras entidades.
Hacia un grafo de conocimiento. Todas las extracciones se consolidan. Las entidades se convierten en nodos y las relaciones en aristas. Para reducir la redundancia, las variantes de la misma entidad se fusionan y sus descripciones se condensan en una sola entrada. Las menciones repetidas de una relación aumentan el peso de su arista, indicando una conexión más fuerte, y las afirmaciones se adjuntan a los nodos y aristas relevantes.
Del grafo a las comunidades. Un algoritmo jerárquico de detección de comunidades, generalmente Leiden, divide la red en clústeres de nodos estrechamente conectados. El resultado es una jerarquía multinivel con clústeres pequeños y detallados en el nivel más bajo y agrupaciones a nivel de todo el dominio en el más alto.
De las comunidades a los resúmenes. Partiendo de los grupos más pequeños y detallados hacia arriba, el LLM elabora un resumen para cada nivel de la jerarquía. Esto permite abordar preguntas de carácter general y permite a los usuarios navegar desde temas amplios hasta detalles precisos. Para respetar los límites de contexto, los resúmenes de nivel más bajo se crean clasificando los datos brutos del grafo según su importancia y rellenando la instrucción con las entidades, relaciones y afirmaciones mejor conectadas hasta agotar el espacio disponible. Los resúmenes de nivel superior se construyen directamente a partir de los resúmenes que se encuentran debajo de ellos, es decir, un resumen de otros resúmenes.
Consultas en tiempo de ejecución
El RAG estándar trata cada solicitud con la misma búsqueda de similitud. GraphRAG envía una consulta por uno de dos caminos según la intención. La búsqueda global se encarga de la interpretación a gran escala en todo el conjunto de datos. La búsqueda local aborda preguntas específicas centradas en entidades que requieren varios pasos para resolverse. En una empresa con política de reembolsos, una consulta global podría preguntar sobre los principales riesgos de cumplimiento y las reglas de aprobación en todos los programas de reembolso. Una consulta local podría preguntar si un empleado puede reclamar un gasto de internet incurrido antes de la fecha oficial de ingreso.
Consultas globales. En lugar de escanear millones de fragmentos brutos, el sistema consulta los resúmenes de la comunidad precalculados mediante un pipeline de map-reduce.
- Elija un nivel de jerarquía, desde supercomunidades amplias hasta clústeres locales detallados (nivel 0, 1, 2, etc.), según el alcance que necesite la respuesta.
- Mapa: enviar la pregunta de forma simultánea a cada resumen de comunidad de ese nivel. Un LLM evalúa cada uno de forma independiente y genera una respuesta intermedia de la comunidad con una puntuación de relevancia del 0 al 100.
- Filtrado y clasificación: descartar las respuestas de baja relevancia y ordenar las restantes en puntos prioritarios.
- Reducción: pasar las ideas mejor clasificadas al LLM dentro de una sola ventana de contexto, la cual las sintetiza en una respuesta completa y sin repeticiones, con citas.
Consultas locales. GraphRAG no descarta los vectores; simplemente cambia su propósito. En la búsqueda local, los vectores solo localizan entidades de anclaje en el grafo. Una vez encontrados esos puntos de entrada, la búsqueda vectorial se detiene y toma el control el recorrido del grafo. Como requisito previo, es necesario generar embeddings para las descripciones de las entidades y almacenarlos en una base de datos vectorial.
Esto marca una diferencia real. En el RAG tradicional, la similitud vectorial es la forma principal de obtener fragmentos de texto en bruto. En GraphRAG se trata de una búsqueda dirigida que relaciona la pregunta con entidades relevantes, las cuales solo sirven como puntos de entrada al grafo. Dependiendo de la configuración, la búsqueda local también puede incorporar y buscar unidades de texto o afirmaciones como puntos de entrada.
- Ejecutar una búsqueda de similitud vectorial contra las representaciones de las descripciones de las entidades para encontrar puntos de entrada.
- Asociar esas entidades a sus documentos y fragmentos de texto originales, recorrer el grafo para recopilar nodos vecinos y descripciones de aristas, obtener covariables como afirmaciones, URLs y fechas, y reunir los resúmenes de las comunidades locales a las que pertenecen las entidades, lo que aporta algo de contexto circundante.
- Que un LLM clasifique cada una de estas asociaciones según su relevancia para la pregunta, descartando las menos relevantes.
- Añada el contexto clasificado al prompt y genere una respuesta fundamentada.
¿Cuál elegir?
Ningún enfoque es mejor en todos los casos. Cada uno es adecuado para preguntas y datos diferentes. La decisión depende de cuán complejo sea el conjunto de datos, qué consultas necesite atender y cuánto pueda invertir.
Elija vector RAG cuando desee una recuperación rápida y económica de hechos aislados de documentos independientes, donde la respuesta se encuentra dentro de un único párrafo o página. Elija GraphRAG cuando sus fuentes sean densas e interconectadas y las preguntas requieran síntesis entre documentos, análisis de tendencias en todo el conjunto de datos o seguimiento de relaciones entre entidades en áreas como el derecho, la investigación y las políticas públicas.
Una forma sencilla de recordarlo: vector RAG busca la aguja en el pajar, mientras que GraphRAG primero mapea todo el pajar y solo luego realiza la búsqueda.
Vector RAG cambió la forma en que los LLM trabajan con conocimientos externos, pero escalar a datos empresariales complejos requiere algo más que búsquedas semánticamente similares. Al organizar el texto en un grafo de conocimiento con resúmenes jerárquicos de comunidades, GraphRAG conecta la recuperación dirigida con el razonamiento sobre todo un conjunto de datos.
Si desea leer más, el artículo original se encuentra en https://arxiv.org/abs/2404.16130 y el diseño de búsqueda local está documentado en https://microsoft.github.io/graphrag/query/local_search/.