Temas base para entender EasyChatBot
Embeddings, RAG y cómo tu contenido llega a las respuestas del bot, explicado sin jerga innecesaria.
Volver al índice de documentación
Por qué importa esto
EasyChatBot une dos piezas: tu contenido (páginas que crawleas, textos que configuras) y un modelo de lenguaje (LLM) que redacta respuestas. Los embeddings y el RAG son el puente entre ambas: permiten que el modelo “lea” trozos relevantes de tu material en cada conversación, en lugar de inventarse todo solo con lo que aprendió al entrenarse.
¿Qué es un embedding?
Un embedding es una lista de números (un vector) que resume el significado de un texto de forma que el ordenador pueda compararlo con otros textos. No hace falta entender los números: lo útil es que textos con ideas parecidas quedan “cerca” en ese espacio numérico, y textos distintos, “más lejos”.
Así el sistema puede decir “esta pregunta del usuario se parece a este párrafo de tu web” sin buscar palabras exactas: busca por similitud semántica.
flowchart LR
texto["Texto_o_fragmento"]
modelo["Modelo_de_embeddings"]
vector["Vector_numerico"]
guardar["Guardado_para_buscar"]
texto --> modelo --> vector --> guardar
En la práctica
- El mismo tipo de modelo convierte en embedding tanto fragmentos de tu contenido como la pregunta del usuario.
- La búsqueda recupera los fragmentos cuyos vectores están más cerca del vector de la pregunta.
¿Qué es RAG?
RAG (Retrieval Augmented Generation, “generación aumentada con recuperación”) significa: antes de que el LLM escriba la respuesta, el sistema recupera trozos de texto relevantes de una base de conocimiento y los incluye en el contexto del modelo. La respuesta se “aumenta” con ese material recuperado.
Sin RAG, el modelo solo tendría su entrenamiento general y lo que digas en el prompt del sistema; con RAG, puede citar y razonar sobre tu contenido actualizado (precios, FAQs, políticas, etc.).
flowchart TB
pregunta["Pregunta_del_usuario"]
embQ["Embedding_de_la_pregunta"]
buscar["Buscar_fragmentos_similares"]
contexto["Textos_recuperados"]
prompt["Prompt_con_contexto"]
llm["Modelo_de_lenguaje"]
resp["Respuesta_al_usuario"]
pregunta --> embQ --> buscar --> contexto --> prompt --> llm --> resp
Cómo encaja en EasyChatBot
El crawling y la configuración de contexto generan textos por página; el servicio de RAG los parte en fragmentos, calcula un embedding por fragmento y los guarda en ChromaDB en una colección por bot (por ejemplo bot_123). Cuando una intención activa la acción RAG Search, se embeddea la consulta, se buscan los fragmentos más cercanos y el LLM recibe esos textos junto con la conversación.
Más detalle sobre el origen del contenido: Crawling y contexto.
sequenceDiagram
participant U as Usuario
participant ECB as EasyChatBot
participant C as ChromaDB
participant M as "Modelo LLM"
U->>ECB: Mensaje en el chat
ECB->>ECB: Detectar intencion y acciones
ECB->>C: Busqueda por embedding
C-->>ECB: Fragmentos relevantes
ECB->>M: Prompt con contexto recuperado
M-->>ECB: Texto de respuesta
ECB-->>U: Respuesta