RAG Avanzado: Explicación de LongRAG, Self-RAG y GraphRAG
LongRAG, Self-RAG, GraphRAG: técnicas de la próxima generación
Generación Aumentada con Recuperación (RAG) ha evolucionado mucho más allá de la simple búsqueda de similitud vectorial. LongRAG, Self-RAG y GraphRAG representan la vanguardia de estas capacidades.
Los sistemas RAG modernos deben manejar documentos masivos, comprender relaciones complejas entre entidades y mucho más.
Esta bonita imagen está generada por el modelo de IA Flux 1 dev.
La Evolución Más Allá del RAG Básico
Los sistemas RAG tradicionales siguen un patrón simple: fragmentar documentos, convertirlos en vectores, recuperar fragmentos similares mediante similitud coseno y alimentarlos a un LLM. Aunque es efectivo para muchos casos de uso, este enfoque lucha con tres escenarios críticos:
Comprender la distinción entre búsqueda, búsqueda profunda (deepsearch) e investigación profunda (deep research) ayuda a clarificar por qué las variantes avanzadas de RAG son necesarias para tareas complejas de recuperación de información. Para profundizar en estos conceptos, consulta Búsqueda vs. Deepsearch vs. Investigación Profunda.
- Dependencias de largo alcance: El contexto importante puede abarcar miles de tokens a través de múltiples fragmentos.
- Confianza en la recuperación: El sistema no tiene forma de evaluar si el contenido recuperado es realmente relevante.
- Complejidad de relaciones: La similitud vectorial no puede capturar las conexiones intrincadas entre entidades.
Las variantes avanzadas de RAG abordan estas limitaciones con arquitecturas especializadas adaptadas a desafíos específicos.
LongRAG: Conquistando el Contexto Extendido
Resumen de la Arquitectura
LongRAG replantea fundamentalmente la estrategia de fragmentación aprovechando LLMs con ventanas de contexto extendidas (32K, 100K o incluso 1M tokens). En lugar de dividir documentos en fragmentos pequeños de 512 tokens, LongRAG utiliza un enfoque jerárquico:
Incrustación a Nivel de Documento: El documento completo (o secciones muy grandes) se procesa como una sola unidad. Una incrustación a nivel de documento captura el significado semántico general, manteniendo el texto completo para el procesamiento posterior.
Fragmentación Mínima: Cuando es necesaria la fragmentación, LongRAG utiliza fragmentos mucho más grandes (4K-8K tokens) con una superposición significativa (20-30%). Esto preserva el flujo narrativo y reduce la fragmentación del contexto.
Ensamblaje de Contexto: En el momento de la recuperación, LongRAG devuelve documentos completos o secciones coherentes grandes en lugar de fragmentos dispersos. El LLM recibe un contexto continuo que preserva las relaciones estructurales y semánticas.
Estrategia de Implementación
Aquí tienes una implementación conceptual utilizando Python y modelos de incrustación modernos:
from typing import List, Dict
import numpy as np
class LongRAGRetriever:
def __init__(self, model, chunk_size=8000, overlap=1600):
self.model = model
self.chunk_size = chunk_size
self.overlap = overlap
self.doc_embeddings = []
self.documents = []
def create_long_chunks(self, text: str) -> List[str]:
"""Crear fragmentos grandes superpuestos"""
chunks = []
start = 0
while start < len(text):
end = start + self.chunk_size
chunk = text[start:end]
chunks.append(chunk)
start += (self.chunk_size - self.overlap)
return chunks
def index_document(self, doc: str, metadata: Dict):
"""Indexar documento con incrustación jerárquica"""
# Incrustar documento completo
doc_embedding = self.model.embed(doc)
# Crear fragmentos grandes con superposición
chunks = self.create_long_chunks(doc)
chunk_embeddings = [self.model.embed(c) for c in chunks]
self.doc_embeddings.append({
'doc_id': len(self.documents),
'doc_embedding': doc_embedding,
'chunk_embeddings': chunk_embeddings,
'chunks': chunks,
'full_text': doc,
'metadata': metadata
})
self.documents.append(doc)
def retrieve(self, query: str, top_k: int = 3) -> List[Dict]:
"""Recuperar contenido relevante de larga duración"""
query_embedding = self.model.embed(query)
# Puntuar primero a nivel de documento
doc_scores = [
np.dot(query_embedding, doc['doc_embedding'])
for doc in self.doc_embeddings
]
# Obtener los mejores documentos
top_doc_indices = np.argsort(doc_scores)[-top_k:][::-1]
results = []
for idx in top_doc_indices:
doc_data = self.doc_embeddings[idx]
# Para cada documento, encontrar los mejores fragmentos
chunk_scores = [
np.dot(query_embedding, emb)
for emb in doc_data['chunk_embeddings']
]
best_chunk_idx = np.argmax(chunk_scores)
# Devolver contexto extendido alrededor del mejor fragmento
context_chunks = self._get_extended_context(
doc_data['chunks'],
best_chunk_idx
)
results.append({
'text': ''.join(context_chunks),
'score': doc_scores[idx],
'metadata': doc_data['metadata']
})
return results
def _get_extended_context(self, chunks: List[str],
center_idx: int) -> List[str]:
"""Obtener contexto extendido alrededor del fragmento relevante"""
start = max(0, center_idx - 1)
end = min(len(chunks), center_idx + 2)
return chunks[start:end]
Casos de Uso y Rendimiento
LongRAG sobresale en escenarios donde el contexto es crucial:
- Análisis de documentos legales: Los contratos y documentos legales a menudo tienen dependencias que abarcan docenas de páginas.
- Recuperación de artículos de investigación: Comprender la metodología requiere secciones coherentes, no párrafos aislados.
- Repositorios de código: Las funciones y clases deben entenderse dentro de su contexto de módulo.
Características de rendimiento:
- Latencia: Más alta debido al procesamiento de fragmentos grandes (2-5x más lento que el RAG estándar).
- Precisión: Mejora del 15-25% en benchmarks de preguntas y respuestas de larga duración.
- Memoria: Requiere 3-4x más memoria para las ventanas de contexto.
Self-RAG: Recuperación Reflexiva
Principios Centrales
Self-RAG introduce una capa metacognitiva a los sistemas RAG. En lugar de recuperar y generar ciegamente, el sistema reflexiona activamente sobre sus propios procesos a través de tokens de reflexión especiales:
Token de Recuperación: Decide si la recuperación es necesaria para una consulta dada. Token de Relevancia: Evalúa si los documentos recuperados son realmente relevantes. Token de Soporte: Verifica si la respuesta generada está respaldada por el contenido recuperado. Token de Crítica: Evalúa la calidad general de la respuesta generada.
Componentes de la Arquitectura
La arquitectura Self-RAG consiste en tres fases entrelazadas:
class SelfRAGSystem:
def __init__(self, retriever, generator, critic):
self.retriever = retriever
self.generator = generator
self.critic = critic
def generate_with_reflection(self, query: str,
max_iterations: int = 3):
"""Generar respuesta con autorreflexión"""
# Fase 1: Decidir si se necesita recuperación
retrieve_decision = self.critic.should_retrieve(query)
if not retrieve_decision:
# Generación directa sin recuperación
return self.generator.generate(query)
# Fase 2: Recuperar y evaluar relevancia
retrieved_docs = self.retriever.retrieve(query)
relevant_docs = []
for doc in retrieved_docs:
relevance_score = self.critic.assess_relevance(
query, doc
)
if relevance_score > 0.7: # Umbral
relevant_docs.append(doc)
if not relevant_docs:
# Fallback a generación sin recuperación
return self.generator.generate(query)
# Fase 3: Generar y verificar soporte
best_answer = None
best_score = -1
for _ in range(max_iterations):
# Generar respuesta candidata
answer = self.generator.generate(
query, context=relevant_docs
)
# Evaluar soporte y calidad
support_score = self.critic.check_support(
answer, relevant_docs
)
quality_score = self.critic.assess_quality(answer)
total_score = 0.6 * support_score + 0.4 * quality_score
if total_score > best_score:
best_score = total_score
best_answer = answer
# Parada temprana si se logra alta calidad
if total_score > 0.9:
break
return {
'answer': best_answer,
'confidence': best_score,
'sources': relevant_docs,
'reflections': {
'retrieved': retrieve_decision,
'relevance': len(relevant_docs),
'support': support_score
}
}
Entrenamiento de los Mecanismos de Reflexión
Self-RAG requiere entrenar el componente crítico para realizar evaluaciones fiables. Esto generalmente implica:
- Ajuste supervisado en conjuntos de datos anotados con juicios de relevancia.
- Aprendizaje por refuerzo con recompensas por predicciones precisas.
- Aprendizaje contrastivo para distinguir afirmaciones respaldadas de las no respaldadas.
Los tokens de reflexión pueden implementarse como:
- Tokens especiales en el vocabulario (como
[RETRIEVE],[RELEVANT]). - Cabezales de clasificador separados en el modelo.
- Modelos críticos externos (enfoque de conjunto).
Consideraciones de Producción
Al desplegar Self-RAG en sistemas de producción:
Compensaciones de Latencia: Cada paso de reflexión añade un sobrecosto de inferencia del 20-40%. Equilibra la exhaustividad con los requisitos de tiempo de respuesta.
Umbrales de Confianza: Ajusta los umbrales de reflexión según tu caso de uso. Las aplicaciones legales o médicas necesitan mayor confianza que los chatbots generales.
Monitoreo: Rastrea las decisiones de reflexión para identificar patrones. Si la recuperación rara vez es necesaria, podrías beneficiarte de una arquitectura más simple.
GraphRAG: Recuperación Mejorada con Gráficos de Conocimiento
Fundamento Conceptual
GraphRAG transforma el problema de recuperación de similitud vectorial a recorrido de gráficos. En lugar de encontrar fragmentos de texto semánticamente similares, GraphRAG identifica subgráficos relevantes de entidades y relaciones conectadas.
Extracción de Entidades: Identificar entidades nombradas, conceptos y sus tipos. Mapeo de Relaciones: Extraer relaciones entre entidades (temporales, causales, jerárquicas). Construcción de Gráficos: Construir un gráfico de conocimiento con entidades como nodos y relaciones como aristas. Recuperación de Subgráficos: Dada una consulta, encontrar subgráficos conectados relevantes.
Pipeline de Construcción de Gráficos
Construir un gráfico de conocimiento a partir de texto no estructurado implica varias etapas:
class GraphRAGBuilder:
def __init__(self, entity_extractor, relation_extractor):
self.entity_extractor = entity_extractor
self.relation_extractor = relation_extractor
self.graph = NetworkGraph()
def build_graph(self, documents: List[str]):
"""Construir gráfico de conocimiento a partir de documentos"""
for doc in documents:
# Extraer entidades
entities = self.entity_extractor.extract(doc)
# Añadir entidades como nodos
for entity in entities:
self.graph.add_node(
entity['text'],
entity_type=entity['type'],
context=entity['surrounding_text']
)
# Extraer relaciones
relations = self.relation_extractor.extract(
doc, entities
)
# Añadir relaciones como aristas
for rel in relations:
self.graph.add_edge(
rel['source'],
rel['target'],
relation_type=rel['type'],
confidence=rel['score'],
evidence=rel['text_span']
)
def enrich_graph(self):
"""Añadir relaciones derivadas y metadatos"""
# Calcular importancia de nodos (PageRank, etc.)
self.graph.compute_centrality()
# Identificar comunidades/clústeres
self.graph.detect_communities()
# Añadir orden temporal si hay marcas de tiempo disponibles
self.graph.add_temporal_edges()
Procesamiento de Consultas con Gráficos
Las consultas de GraphRAG implican razonamiento de múltiples saltos a través del gráfico de conocimiento:
class GraphRAGRetriever:
def __init__(self, graph, embedder):
self.graph = graph
self.embedder = embedder
def retrieve_subgraph(self, query: str,
max_hops: int = 2,
max_nodes: int = 50):
"""Recuperar subgráfico relevante para la consulta"""
# Identificar entidades semilla en la consulta
query_entities = self.entity_extractor.extract(query)
# Encontrar nodos coincidentes en el gráfico
seed_nodes = []
for entity in query_entities:
matches = self.graph.find_similar_nodes(
entity['text'],
similarity_threshold=0.85
)
seed_nodes.extend(matches)
# Expandir subgráfico mediante recorrido
subgraph = self.graph.create_subgraph()
visited = set()
for seed in seed_nodes:
self._expand_from_node(
seed,
subgraph,
visited,
current_hop=0,
max_hops=max_hops
)
# Clasificar nodos por relevancia
ranked_nodes = self._rank_subgraph_nodes(
subgraph, query
)
# Extraer y formatear contexto
context = self._format_graph_context(
ranked_nodes[:max_nodes],
subgraph
)
return context
def _expand_from_node(self, node, subgraph, visited,
current_hop, max_hops):
"""Expandir subgráfico recursivamente"""
if current_hop >= max_hops or node in visited:
return
visited.add(node)
subgraph.add_node(node)
# Obtener vecinos
neighbors = self.graph.get_neighbors(node)
for neighbor, edge_data in neighbors:
# Añadir arista al subgráfico
subgraph.add_edge(node, neighbor, edge_data)
# Expandir recursivamente
self._expand_from_node(
neighbor,
subgraph,
visited,
current_hop + 1,
max_hops
)
def _format_graph_context(self, nodes, subgraph):
"""Convertir subgráfico a contexto textual"""
context_parts = []
for node in nodes:
# Añadir contexto del nodo
context_parts.append(f"Entidad: {node.text}")
context_parts.append(f"Tipo: {node.entity_type}")
# Añadir información de relaciones
edges = subgraph.get_edges(node)
for edge in edges:
context_parts.append(
f"- {edge.relation_type} -> {edge.target.text}"
)
return "\n".join(context_parts)
Implementación de GraphRAG de Microsoft
GraphRAG de Microsoft adopta un enfoque único generando resúmenes de comunidades:
- Construir gráfico inicial a partir de documentos usando extracción de entidades/relaciones basada en LLM.
- Detectar comunidades usando el algoritmo Leiden o similar.
- Generar resúmenes para cada comunidad usando LLMs.
- Estructura jerárquica: Construir múltiples niveles de abstracciones de comunidad.
- Tiempo de consulta: Recuperar comunidades relevantes y recorrer hacia entidades específicas.
Este enfoque es particularmente efectivo para:
- Consultas exploratorias ("¿Cuáles son los temas principales en este corpus?").
- Razonamiento de múltiples saltos ("¿Cómo está A conectado a C a través de B?").
- Análisis temporal ("¿Cómo evolucionaron las relaciones de esta entidad?").
Análisis Comparativo
Cuándo Usar Cada Variante
Usa LongRAG cuando:
- Los documentos tienen una fuerte coherencia interna.
- Las ventanas de contexto de tu LLM soportan entradas grandes (32K+).
- Las respuestas a las consultas requieren comprender dependencias de largo alcance.
- Estás trabajando con documentos estructurados (informes, artículos, libros).
Usa Self-RAG cuando:
- La precisión y la confiabilidad son críticas.
- Necesitas decisiones de recuperación explicables.
- Los falsos positivos de la recuperación irrelevante son costosos.
- La complejidad de la consulta varía ampliamente (algunas necesitan recuperación, otras no).
Usa GraphRAG cuando:
- Tu dominio tiene ricas relaciones entre entidades.
- Las consultas implican razonamiento de múltiples saltos.
- Las relaciones temporales o jerárquicas importan.
- Necesitas comprender las conexiones entre entidades.
Comparación de Métricas de Rendimiento
| Métrica | RAG Estándar | LongRAG | Self-RAG | GraphRAG |
|---|---|---|---|---|
| Tiempo de Indexado | 1x | 0.8x | 1.1x | 3-5x |
| Latencia de Consulta | 1x | 2-3x | 1.4x | 1.5-2x |
| Uso de Memoria | 1x | 3-4x | 1.2x | 2-3x |
| Precisión (QA) | línea base | +15-25% | +20-30% | +25-40%* |
| Interpretabilidad | Baja | Media | Alta | Alta |
*Las mejoras de GraphRAG dependen altamente del dominio.
Enfoques Híbridos
Los sistemas de producción más potentes a menudo combinan múltiples técnicas:
LongRAG + GraphRAG: Usar la estructura del gráfico para identificar clústeres de documentos relevantes, luego recuperar documentos completos en lugar de fragmentos.
Self-RAG + GraphRAG: Aplicar mecanismos de reflexión a las decisiones de recorrido del gráfico (qué caminos seguir, cuándo detener la expansión).
Pipeline de tres etapas: Usar GraphRAG para la recuperación inicial basada en entidades → Self-RAG para filtrado de relevancia → LongRAG para el ensamblaje del contexto.
Consideraciones de Implementación
Modelos de Incrustación
Diferentes variantes de RAG tienen diferentes requisitos de incrustación:
LongRAG: Necesita incrustaciones que funcionen bien tanto a nivel de documento como a nivel de fragmento. Considera modelos entrenados con aprendizaje contrastivo en secuencias largas.
Self-RAG: Se beneficia de incrustaciones que capturen matices semánticos para una evaluación de relevancia de grano fino.
GraphRAG: Requiere incrustaciones conscientes de las entidades. Los modelos ajustados en tareas de vinculación de entidades funcionan mejor.
La elección del modelo de incrustación impacta significativamente el rendimiento. Al trabajar con modelos locales, herramientas como Ollama ofrecen una forma sencilla de experimentar con diferentes modelos de incrustación antes de comprometerte con un despliegue de producción.
Estrategias de Fragmentación Revisitadas
La fragmentación de tamaño fijo tradicional es insuficiente para RAG avanzado:
Fragmentación semántica: Dividir en límites naturales (párrafos, secciones, cambios de tema). Fragmentación recursiva: Crear fragmentos jerárquicos con relaciones padre-hijo. Ventana deslizante: Usar fragmentos superpuestos para preservar el contexto en los bordes. Consciente de la estructura: Respetar la estructura del documento (encabezados de markdown, etiquetas XML, bloques de código).
Para implementaciones basadas en Python, bibliotecas como LangChain y LlamaIndex ofrecen soporte integrado para estas estrategias de fragmentación.
Integración de Reordenamiento (Reranking)
El reordenamiento mejora drásticamente la calidad de la recuperación en todas las variantes de RAG. Después de la recuperación inicial, un modelo de reordenamiento especializado vuelve a puntuar los resultados basándose en características de interacción consulta-documento. Esto proporciona un aumento significativo de precisión (10-20%) con un impacto mínimo en la latencia cuando se integra de manera inteligente.
Escalado a Producción
Pipeline de indexado:
- Usar procesamiento distribuido (Ray, Dask) para grandes corpora de documentos.
- Implementar indexado incremental para actualizaciones en tiempo real.
- Almacenar incrustaciones en bases de datos vectoriales optimizadas (Pinecone, Weaviate, Qdrant).
Optimización de consultas:
- Caché de consultas frecuentes y sus resultados.
- Implementar enrutamiento de consultas (diferentes variantes de RAG para diferentes tipos de consultas).
- Usar búsqueda de vecino más cercano aproximado para escalado sublineal.
Monitoreo:
- Rastrear puntuaciones de relevancia de recuperación.
- Monitorear decisiones de reflexión en Self-RAG.
- Medir caminos y profundidades de recorrido de gráficos.
- Registrar puntuaciones de confianza y retroalimentación del usuario.
Aplicaciones del Mundo Real
Búsqueda de Documentación Técnica
Un importante proveedor de la nube implementó GraphRAG para su documentación:
- Entidades: Endpoints de API, parámetros, códigos de error, nombres de servicios.
- Relaciones: Dependencias, compatibilidades de versión, rutas de migración.
- Resultado: Reducción del 35% en tickets de soporte, tiempo de resolución 45% más rápido.
Descubrimiento Legal
Una empresa de tecnología legal combinó Self-RAG con LongRAG:
- Self-RAG filtra documentos irrelevantes tempranamente.
- LongRAG preserva el contexto en documentos retenidos.
- Los abogados revisan un 60% menos de falsos positivos.
- La preservación del contexto crítico mejoró del 71% al 94%.
Revisión de Literatura Académica
Motor de búsqueda académico usando enfoque híbrido:
- GraphRAG identifica redes de citas y comunidades de investigación.
- LongRAG recupera secciones completas manteniendo el contexto de la metodología.
- Mejora del 40% en el descubrimiento de artículos relevantes.
- Tiempo reducido para revisión de literatura de semanas a días.
Temas Avanzados
RAG Multimodal
Extender estas variantes para manejar imágenes, tablas y código:
- Anclaje visual: Vincular entidades de texto a imágenes en documentos.
- Comprensión de tablas: Analizar datos estructurados en formato de gráfico.
- Análisis de código: Construir gráficos de dependencias desde bases de código.
RAG Adaptativo
Selección dinámica de estrategia de RAG basada en características de la consulta:
- Clasificador de complejidad de consulta.
- Detector de tipo de documento.
- Optimizador de coste-beneficio para la selección de estrategia.
RAG que Preserva la Privacidad
Implementar estas variantes con restricciones de privacidad:
- Recuperación federada a través de silos de datos.
- Privacidad diferencial en incrustaciones.
- Búsqueda de similitud encriptada.
Primeros Pasos
Inicio Rápido con Python
Para aquellos que buscan implementar estas técnicas, comenzar con una base sólida en Python es esencial. El rico ecosistema de Python para aprendizaje automático lo convierte en la elección natural para el desarrollo de RAG.
Aquí tienes un punto de partida simple para la experimentación:
# Instalar dependencias
# pip install sentence-transformers faiss-cpu langchain
from sentence_transformers import SentenceTransformer
import faiss
import numpy as np
# Configuración básica para experimentar con fragmentos largos
model = SentenceTransformer('all-MiniLM-L6-v2')
documents = [
# Tus documentos de larga duración aquí
]
# Crear incrustaciones
embeddings = model.encode(documents)
# Construir índice FAISS
dimension = embeddings.shape[1]
index = faiss.IndexFlatL2(dimension)
index.add(embeddings.astype('float32'))
# Consulta
query = "Tu pregunta aquí"
query_embedding = model.encode([query])
distances, indices = index.search(
query_embedding.astype('float32'), k=3
)
Selección de Frameworks
LangChain: Ideal para prototipado rápido, integraciones extensas. LlamaIndex: Optimizado para indexado y recuperación de documentos. Haystack: Listo para producción, abstracciones de pipeline sólidas. Personalizado: Cuando necesitas control total y optimización.
Framework de Evaluación
Implementa una evaluación rigurosa antes del despliegue en producción:
Métricas de recuperación:
- Precisión@K, Recall@K, MRR (Rango Recíproco Medio).
- NDCG (Ganancia Acumulativa Descontada Normalizada).
Métricas de generación:
- ROUGE, BLEU para similitud de texto.
- BERTScore para similitud semántica.
- Evaluación humana para la calidad.
Métricas de extremo a extremo:
- Tasa de éxito de la tarea.
- Puntuaciones de satisfacción del usuario.
- Percentiles de latencia (p50, p95, p99).
Conclusión
El panorama de los sistemas RAG ha madurado significativamente más allá de la búsqueda básica de similitud vectorial. LongRAG, Self-RAG y GraphRAG abordan cada uno limitaciones específicas de los enfoques tradicionales:
LongRAG resuelve el problema de fragmentación del contexto adoptando ventanas de contexto extendidas y fragmentación mínima. Es la opción ideal cuando la coherencia del documento importa y tienes los recursos computacionales para manejar contextos grandes.
Self-RAG añade autoconciencia crítica a los sistemas de recuperación. Al reflexionar sobre sus propias decisiones, reduce los falsos positivos y mejora la confiabilidad, esencial para aplicaciones de alto riesgo donde la precisión importa más que la velocidad.
GraphRAG desbloquea el poder de la representación estructurada del conocimiento. Cuando tu dominio involucra relaciones complejas entre entidades, la recuperación basada en gráficos puede revelar conexiones que la similitud vectorial pasa por alto por completo.
El futuro de RAG probablemente involucrará enfoques híbridos que combinen las fortalezas de estas variantes. Un sistema de producción podría usar GraphRAG para identificar clústeres de entidades relevantes, Self-RAG para filtrar y validar recuperaciones, y LongRAG para ensamblar un contexto coherente para el LLM.
A medida que los LLMs continúan mejorando y las ventanas de contexto se expanden, veremos emerger variantes de RAG aún más sofisticadas. La clave es comprender los requisitos específicos de tu caso de uso: estructura de documentos, patrones de consulta, demandas de precisión y restricciones computacionales, y seleccionar la técnica o combinación adecuada.
El ecosistema de herramientas está madurando rápidamente, con frameworks como LangChain, LlamaIndex y Haystack que ofrecen soporte cada vez más sofisticado para estos patrones avanzados. Combinado con potentes entornos de ejecución de LLM locales y modelos de incrustación, nunca ha sido tan fácil experimentar con y desplegar sistemas RAG de grado de producción.
Comienza con lo básico, mide el rendimiento rigurosamente y evoluciona tu arquitectura según lo dicten los requisitos. Las variantes avanzadas de RAG cubiertas aquí proporcionan una hoja de ruta para esa evolución.
Enlaces Útiles
- Reordenamiento con modelos de incrustación
- LLMs y Salida Estructurada: Ollama, Qwen3 & Python o Go
- Proveedores de LLM en la Nube
- Comparación de LLMs: Qwen3:30b vs GPT-OSS:20b
- Tutorial de RAG paso a paso
- Comparación de fragmentación en RAG
- Comparación de bases de datos vectoriales para RAG
Referencias Externas
- Microsoft GraphRAG: Un Sistema Modular de Generación Aumentada con Recuperación Basado en Gráficos
- Self-RAG: Aprender a Recuperar, Generar y Criticar a través de la Autorreflexión
- LongRAG: Mejorando la Generación Aumentada con Recuperación con LLMs de Contexto Largo
- Generación Aumentada con Recuperación para Grandes Modelos de Lenguaje: Una Revisión
- FAISS: Una Biblioteca para Búsqueda Eficiente de Similitud
- Documentación de LangChain: Técnicas Avanzadas de RAG
- HuggingFace: Sentence Transformers para Modelos de Incrustación
- Revisión de RAG: Un Análisis Exhaustivo de la Generación Aumentada con Recuperación