Construcción integral de un sistema de preguntas y respuestas RAG
Cadena RetrievalQA, prompts personalizados, atribución de fuentes y evaluación de RAG con RAGAS.
Construcción integral de un sistema de preguntas y respuestas RAG es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué es RAG?
Retrieval-Augmented Generation fundamenta un LLM en sus propios datos. En el momento de la consulta, recupera fragmentos relevantes de un almacén vectorial y los inserta en el prompt, de modo que el modelo responde basándose en hechos en lugar de adivinar.
El flujo de RAG
Cada consulta RAG sigue cuatro pasos: (1) generar el embedding de la pregunta, (2) recuperar fragmentos similares, (3) incluirlos en el prompt como contexto y (4) el LLM genera una respuesta fundamentada en ese contexto.
Convertir un almacén en un recuperador
Convierta su almacén vectorial en un recuperador con as_retriever. El diccionario search_kwargs controla la recuperación, especialmente k, el número de fragmentos que se obtienen por pregunta.
retriever = db.as_retriever(
search_kwargs={"k": 4}
)Ajustar search_kwargs
search_kwargs también puede establecer un umbral de puntuación o las opciones de MMR. Empiece con k=4; auméntelo si a las respuestas les falta contexto y redúzcalo para disminuir el coste de tokens y el ruido.
retriever = db.as_retriever(
search_type="similarity_score_threshold",
search_kwargs={"k": 6, "score_threshold": 0.5}
)Cadena RetrievalQA
La cadena RetrievalQA conecta la recuperación y la generación. Créela con from_chain_type, pasando su llm y su retriever. Ahora una sola llamada responde a preguntas sobre sus documentos.
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o"),
retriever=retriever
)chain_type: cómo se combina el contexto
chain_type controla cómo se incorporan los fragmentos recuperados al prompt. "stuff" (opción predeterminada) coloca todos los fragmentos en un único prompt: es sencillo y la mejor opción cuando caben en la ventana de contexto. Otros tipos, como "map_reduce", gestionan muchos fragmentos grandes.
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever
)Hacer una pregunta
Ejecute la cadena con invoke, pasando su pregunta bajo la clave query. La cadena recupera los fragmentos, crea el prompt y devuelve la respuesta fundamentada.
response = qa.invoke({"query": "What is the refund window?"})
print(response["result"])Devolver los documentos fuente
Establezca return_source_documents=True para obtener los fragmentos utilizados en la respuesta. Esto permite incluir citas y que los usuarios verifiquen de dónde procede cada hecho, algo fundamental para generar confianza.
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True
)
resp = qa.invoke({"query": "Refund window?"})
for d in resp["source_documents"]:
print(d.metadata)¿Por qué evaluar RAG?
RAG puede fallar de dos formas: la recuperación obtiene fragmentos incorrectos o la generación produce alucinaciones a pesar de contar con buenos fragmentos. Necesita métricas para saber qué parte debe corregir. Revisar las respuestas manualmente no es escalable.
Métricas de RAGAS
RAGAS es una biblioteca que puntúa la calidad de RAG. Sus métricas principales son: faithfulness (la respuesta está respaldada por el contexto), answer_relevancy (la respuesta aborda la pregunta) y context_precision (los fragmentos recuperados son relevantes).
pip install ragas
from ragas.metrics import faithfulness, answer_relevancy, context_precisionEjecutar una evaluación
Construya un conjunto de datos con preguntas, respuestas generadas, contextos recuperados y respuestas de referencia, y después llame a evaluate. Las puntuaciones le indican si debe mejorar la división en fragmentos, el valor de k de la recuperación o el prompt.
from ragas import evaluate
result = evaluate(
dataset,
metrics=[faithfulness, answer_relevancy, context_precision]
)
print(result)Comprobación rápida
Compruebe sus conocimientos sobre RAG.
Repaso: RAG de extremo a extremo
Creó una pipeline RAG completa: db.as_retriever con search_kwargs, una cadena RetrievalQA.from_chain_type sobre su llm y su recuperador, y return_source_documents=True para incluir citas. También aprendió a medir la calidad con métricas de RAGAS, como faithfulness y context precision.
Preguntas frecuentes
¿La lección «Construcción integral de un sistema de preguntas y respuestas RAG» es gratis?
Sí — el texto completo de «Construcción integral de un sistema de preguntas y respuestas RAG» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Construcción integral de un sistema de preguntas y respuestas RAG»?
Cadena RetrievalQA, prompts personalizados, atribución de fuentes y evaluación de RAG con RAGAS. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Construcción integral de un sistema de preguntas y respuestas RAG»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Arquitectura de LangChain y LCEL
- Carga, división y embedding de documentos
- Almacenes vectoriales: Chroma y FAISS
- Construcción integral de un sistema de preguntas y respuestas RAG