Manejo de preguntas frecuentes con Rasa y Faiss: cómo implementar RAG
En este tutorial práctico aprenderás a configurar un asistente conversacional con Rasa para responder preguntas frecuentes utilizando una base de conocimientos. Si deseas ir directamente al código, puedes revisar estos repositorios: Rasa con Faiss y OpenAI y Rasa con Faiss y Gemini.


Rasa es una plataforma sumamente flexible que se puede integrar con cualquier base de datos vectorial como Faiss, Milvus, Qdrant, Pinecone, Chroma, Weaviate o Atlas de MongoDB. En esta guía nos enfocaremos en Faiss (Facebook AI Similarity Search), una potente librería que permite búsquedas por similitud rápidas y eficientes.
¿Por qué RAG es clave para la IA conversacional?
La generación aumentada por recuperación (RAG, por sus siglas en inglés) se ha convertido en una de las formas más eficaces y accesibles de construir asistentes conversacionales. Este enfoque acelera enormemente el desarrollo, permite responder una mayor variedad de preguntas que los métodos tradicionales de comprensión de lenguaje natural (NLU), y reduce las “alucinaciones” de los modelos generativos al apoyarse en datos empresariales reales.
Muchas organizaciones comienzan sus proyectos de asistentes de IA con una arquitectura RAG y luego integran lógica de negocio para realizar acciones transaccionales. Este enfoque escalonado permite lanzar productos mínimos viables (MVP) de forma rápida y luego evolucionar en función del uso real.
Rasa facilita la implementación de RAG utilizando archivos de texto locales y Faiss en memoria. Para casos más complejos, puedes optar por instalar un servidor vectorial dedicado y construir un pipeline de ingestión de datos acorde a tus necesidades.
Y si ya cuentas con pares de preguntas y respuestas bien estructurados y no deseas usar modelos generativos, puedes explorar también la opción de búsqueda extractiva.

Configuración del entorno de desarrollo
En este tutorial se usará Codespaces, partiendo desde una plantilla preconfigurada de Rasa.
Pasos iniciales
- Crea un nuevo Codespace en la rama main (verifica que hayas iniciado sesión en tu cuenta de GitHub).
- Una vez activo, abre el archivo .env y añade tu licencia de Rasa y tu clave de API de OpenAI:
RASA_PRO_LICENSE=TU_VALOR
OPENAI_API_KEY=TU_VALOR
Cómo obtener las claves:
- Entrena tu asistente ejecutando los siguientes comandos:
rasa train
rasa inspect
Implementando RAG con Rasa, Faiss y OpenAI
Por defecto, la política Enterprise Search Policy de Rasa utiliza embeddings de OpenAI y el modelo LLM gpt-3.5-turbo. Esta política permite gestionar preguntas basadas en conocimiento y puede activarse fácilmente:
Paso 1: Habilitar la política en config.yml
policies:
- name: FlowPolicy
- name: EnterpriseSearchPolicy
Paso 2: Configurar el patrón de flujo
En data/patterns.yml, en el flujo pattern_search, reemplaza action utter_free_chitchat_response por action_trigger_search.
pattern_search:
description: Flujo para preguntas basadas en conocimiento
name: pattern search
steps:
- action: action_trigger_search
Paso 3: Añadir documentos
Crea una carpeta docs en el directorio principal y agrega documentos en formato .txt. Puedes usar subcarpetas según lo necesites. La política indexará todo automáticamente. Luego, reentrena el modelo:
rasa train
rasa inspect
Ahora puedes probar tu asistente en el Rasa Inspector.
Personalización de parámetros
Hasta ahora hemos trabajado con valores por defecto:
- Carpeta de documentos: docs
- LLM: openai/gpt-3.5-turbo
- Modelo de embeddings: openai/text-embedding-ada-002
- Prompt por defecto
Todos estos elementos son personalizables. Veamos cómo modificarlos.
Uso de RAG con Rasa, Faiss y Gemini 2.0 Flash
Configurar el modelo Gemini
- En el archivo .env:
RASA_PRO_LICENSE=TU_VALOR
GEMINI_API_KEY=TU_VALOR
- En config.yml, añade el modelo Gemini a EnterpriseSearchPolicy:
- name: EnterpriseSearchPolicy
vector_store:
type: faiss
source: docs
llm:
model_group: gemini_flash_model
- En endpoints.yml, registra el modelo:
- id: gemini_flash_model
models:
- model: gemini-2.0-flash-001
provider: gemini
Cambiar el modelo de embeddings a Gemini
- En config.yml:
- name: EnterpriseSearchPolicy
vector_store:
type: faiss
source: docs
llm:
model_group: gemini_flash_model
embedding:
model_group: gemini_embeddings
- En endpoints.yml:
- id: gemini_embeddings
models:
- model: text-embedding-004
provider: gemini
Definir un prompt personalizado
- En config.yml:
prompt: prompts/enterprise-search-policy-template.jinja2
- Crea la carpeta prompts en tu directorio principal y dentro, el archivo enterprise-search-policy-template.jinja2 con el siguiente contenido:
DOCUMENT:
{{docs}}
QUESTION:
{{current_conversation}}
INSTRUCTIONS:
Answer to the user's QUESTION using the DOCUMENT text.
Keep your answer short and grounded in the facts of the DOCUMENT.
If the DOCUMENT doesn't contain the facts to answer the QUESTION return "Sorry, I don't know the answer to this question."
Variables disponibles:
- {{current_conversation}}
- {{docs}}
- {{slots}}
Otras configuraciones clave
Habilitar citas de fuentes:
citation_enabled: true
Cantidad de turnos conversacionales en la consulta:
max_messages_in_query: 3
Cantidad de turnos incluidos en el prompt:
max_history: 3
Reentrena y prueba nuevamente:
rasa train
rasa inspect
Puedes explorar el código completo en los repositorios de Rasa con Faiss y OpenAI y Rasa con Faiss y Gemini.
Próximos pasos recomendados
- Añade más documentos a tu base de conocimiento.
- Experimenta con diferentes proveedores de embeddings y modelos LLM.
- Ajusta el contenido del prompt y observa cómo cambia la respuesta.
- Incorpora nuevos flujos para validar diferentes escenarios conversacionales.
- Revisa nuestro webinar bajo demanda: RAG Alone is Not the Answer.
- Mantente atento a nuestra próxima publicación sobre técnicas avanzadas de ingestión para RAG.
Trabaja con expertos en IA conversacional
En 2Brains colaboramos estrechamente con RASA para llevar soluciones conversacionales de última generación al mercado latinoamericano. Desde arquitecturas RAG hasta asistentes transaccionales a escala, ayudamos a las organizaciones a implementar experiencias de usuario más ágiles, precisas y contextualizadas.
Si estás explorando cómo aplicar estas ideas en tu empresa, te invitamos a completar nuestro formulario de contacto. Con gusto te mostraremos cómo podemos adaptar estas tecnologías a tus desafíos específicos.
