Descargar

Contextos y RAG — Guía del usuario | YoBench

Cómo usar el módulo «Contextos y RAG» en YoBench: subida de PDF/DOCX/XLSX, proveedores de embeddings, búsqueda vectorial LanceDB, integración AI Chat.

Para qué sirve el módulo «Contextos y RAG»

El módulo convierte tus documentos en bases de conocimiento disponibles para AI Chat. Creas un contexto, subes archivos (PDF, DOCX, XLSX, CSV, imágenes) o texto; el módulo divide automáticamente el contenido en chunks, calcula los embeddings con el proveedor elegido y guarda los vectores en una LanceDB local. Al hablar con el chat, YoBench recupera los chunks relevantes y los inyecta en el system prompt — el modelo responde a partir de tus documentos, no solo del conocimiento general.

Lo que obtienes:

  • Bases de conocimiento nombradas — un contexto por proyecto/tema.
  • Formatos soportados — PDF, DOCX, XLSX/XLS, CSV, TXT, MD, imágenes (PNG, JPG, GIF, WebP). Imágenes y PDFs pasan por el OCR integrado; XLSX/CSV se convierten a texto plano por hoja.
  • LanceDB local — los vectores viven en userData/lancedb/, una tabla por contexto (ctx_{id}).
  • Múltiples proveedores de embeddings — OpenAI, LM Studio, Ollama (cualquier endpoint compatible OpenAI). Exactamente uno está activo; cambiarlo marca todos los contextos como stale y dispara reindexación asíncrona.
  • Integración con AI Chat — los chunks relevantes se inyectan automáticamente en el system prompt al primer mensaje del usuario.

Estructura de datos

  • Contextoname, embedding_provider_id, embedding_model (snapshot), vectorization_status (ready / stale / indexing / error).
  • Items del contexto — unidades de contenido cargado: tipo (text / file / image / module_ref), content, metadatos del archivo, chunk_count.
  • Vectores (LanceDB) — tabla ctx_{id} con item_id, chunk_index, text, vector.

Proveedores de embeddings

En Gestor de contextos → Proveedores de embeddings añades un proveedor:

  • Nombre — etiqueta libre.
  • Base URL — endpoint /v1/embeddings compatible OpenAI. Ejemplos:
    • OpenAI: https://api.openai.com/v1, modelo text-embedding-3-small.
    • LM Studio (local): http://localhost:1234/v1, modelo text-embedding-nomic-embed-text-v1.5.
    • Ollama (local): http://localhost:11434/v1, modelo bge-m3.
  • API key — cuando hace falta (servidores locales suelen ir vacíos).
  • Modelo — nombre del modelo de embeddings en el servidor.

Un proveedor se marca activo — usado para todos los contextos. Cambiar el proveedor o modelo activo marca los contextos como stale y dispara reindexación en segundo plano.

Chunking y búsqueda

Los parámetros de chunking están fijos en el código:

  • Chunking heading-aware — para Markdown y texto estructurado, el divisor usa los encabezados como puntos de corte para que cada chunk siga siendo una unidad semántica. Para texto plano, recurre a chunks de tamaño fijo.
  • Solapamiento entre chunks adyacentes — preserva el contexto en la frontera.
  • Top-K al buscar — 5 chunks por defecto por consulta.

No están expuestos en la UI — están afinados para modelos típicos.

Modos de búsqueda

Cada sesión de chat elige uno de dos modos de búsqueda:

  • Rápido (por defecto) — búsqueda híbrida (vector + palabra clave) sobre el contexto. Devuelve resultados en una fracción de segundo; ideal para preguntas habituales.
  • Preciso — la misma búsqueda híbrida, seguida de un reranker que reordena los mejores candidatos por relevancia. Algo más lento, claramente mejor en consultas largas o ambiguas.

Formatos soportados

Tipo Lo que hace el módulo
PDF OCR vía servicio integrado, extracción de texto por página.
DOCX Extracción de texto plano vía mammoth.
XLSX, XLS, CSV Hojas convertidas a texto CSV y concatenadas.
TXT, MD Se leen tal cual.
PNG, JPG, GIF, WebP Reconocimiento de texto OCR sobre la imagen.

Integración con AI Chat

En AI Chat eliges un contexto para la conversación. Al primer mensaje del usuario el módulo:

  1. Envía tu consulta como frase de búsqueda a LanceDB.
  2. Obtiene los top-K chunks del contexto.
  3. Los formatea como bloque Markdown (# Reference context: {name} + ## [N] {title} + texto del chunk).
  4. Inyecta el bloque en el system prompt junto con encabezado e instrucciones.

En turnos posteriores el retrieval no se repite (el contexto ya está en el system prompt).

El retrieval se omite cuando:

  • El contexto está en indexing (aún no listo).
  • No hay proveedor de embeddings activo configurado.
  • El snapshot del modelo en el contexto no coincide con el activo — espera a que termine la reindexación.

En esos casos el chat sigue funcionando, sin inyección de contexto.

Ajustes globales

No hay claves context* dedicadas en los ajustes centrales — toda la configuración está en BD (tablas embedding_providers y contexts). Se gestiona desde el propio módulo.

Flujo de uso

1. Conecta un proveedor de embeddings

  1. Abre Gestor de contextos en el menú lateral izquierdo.
  2. Ve a Proveedores de embeddings.
  3. Añade un proveedor: nombre, Base URL, API key, modelo.
  4. Márcalo como activo.

2. Crea un contexto

  1. En la página principal del módulo pulsa Nuevo contexto.
  2. Pónle nombre (por ejemplo, «Documentación de producto», «Corpus legal»).
  3. Guarda.

3. Sube documentos

  1. En el contexto pulsa Añadir archivo o arrastra un archivo al panel.
  2. Formatos: PDF, DOCX, XLSX, CSV, TXT, MD, PNG/JPG/GIF/WebP.
  3. También puedes pegar texto directamente o vincular artículos desde el módulo RSS.
  4. Espera a que termine la indexación (el badge pasa a «Vectores actualizados»).

4. Conecta el contexto al chat

En AI Chat elige el contexto en los ajustes de la sesión. Pregunta — el modelo responderá desde tus documentos.

5. Gestiona el contexto

  • Eliminar elemento — quita un documento concreto.
  • Reindexar — fuerza la reconstrucción de vectores.
  • Eliminar contexto — lo borra junto con su tabla LanceDB.

Siguientes pasos

  • Configura los proveedores de IA para la generación de respuestas.
  • Usa el módulo RSS para alimentar contextos con artículos.
  • El Web Parser puede recolectar datos de sitios en JSON e importarlos a un contexto.

Ayuda y comentarios

¿Quieres embeddings locales por defecto o chunking configurable desde la UI? Escríbenos a través del formulario de contacto.