Es una técnica de Artificial Intelligence (Inteligencia Artificial) en la que un Large Language Model (LLM – Modelo de lenguaje de gran tamaño) consulta primero fuentes externas relevantes y, con ese contexto recuperado, genera una respuesta más precisa, actualizada y fundamentada.
Descripción detallada Con Retrieval-Augmented Generation (RAG – Generación aumentada mediante recuperación de información) combinas dos capacidades: Retrieval (Recuperación de información): buscas fragmentos relevantes en una base documental, normalmente mediante Vector Search (Búsqueda vectorial) o mecanismos híbridos. Generation (Generación): entregas esos fragmentos como contexto a un Large Language Model (LLM – Modelo de lenguaje de gran tamaño) para que construya la respuesta final. Este enfoque te permite reducir alucinaciones, mejorar la precisión y aprovechar conocimiento externo sin necesidad de reentrenar el modelo cada vez que cambian los datos. Es especialmente útil en asistentes sobre documentación interna, buscadores semánticos, soporte técnico, bases de conocimiento corporativas y sistemas de preguntas y respuestas. Un flujo típico de RAG incluye ingesta de documentos, fragmentación en chunks (bloques de texto), generación de embeddings (representaciones vectoriales), almacenamiento en una base vectorial, recuperación de los fragmentos más relevantes y envío de ese contexto al modelo generativo.
from sentence_transformers import SentenceTransformer import numpy as np # Documentos de ejemplo documents = [ "RAG combina recuperación de información y generación de texto.", "Los embeddings permiten representar texto como vectores numéricos.", "Una base vectorial facilita búsquedas semánticas." ] query = "¿Qué es RAG y para qué sirve?" model = SentenceTransformer("all-MiniLM-L6-v2") # Crear embeddings doc_embeddings = model.encode(documents) query_embedding = model.encode([query])[0] # Calcular similitud coseno def cosine_similarity(a, b): return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)) scores = [cosine_similarity(query_embedding, doc_emb) for doc_emb in doc_embeddings] top_index = int(np.argmax(scores)) retrieved_context = documents[top_index] # Prompt final para el modelo generativo prompt = f""" Pregunta: {query} Contexto recuperado: {retrieved_context} Respuesta: """ print(prompt)