Descripcion general
El modo IA (RAG: Retrieval-Augmented Generation) es una funcionalidad que extiende los resultados de busqueda de Fess con LLM (Modelo de Lenguaje Grande), proporcionando informacion en formato de dialogo. Los usuarios pueden hacer preguntas en lenguaje natural y obtener respuestas detalladas basadas en los resultados de busqueda.
Como funciona el modo IA
El modo IA opera con el siguiente flujo de multiples etapas.
Fase de analisis de intencion: Analiza la pregunta del usuario y extrae las palabras clave mas adecuadas para la busqueda
Fase de busqueda: Busca documentos usando el motor de busqueda de Fess con las palabras clave extraidas
Fase de evaluacion: Evalua la relevancia de los resultados de busqueda y selecciona los documentos mas apropiados
Fase de generacion: El LLM genera una respuesta basada en los documentos seleccionados
Fase de salida: Devuelve la respuesta y la informacion de fuentes al usuario
Este flujo permite respuestas de alta calidad con comprension del contexto, superiores a la simple busqueda por palabras clave.
Configuracion basica
Configuracion basica para habilitar la funcionalidad de modo IA.
app/WEB-INF/conf/system.properties:
# Habilitar la funcionalidad de modo IA
rag.chat.enabled=true
# Seleccionar el proveedor LLM (ollama, openai, gemini)
rag.llm.type=ollama
Para la configuracion detallada de proveedores LLM, consulte:
Configuracion de Ollama - Configuracion de Ollama
Configuracion de OpenAI - Configuracion de OpenAI
Configuracion de Google Gemini - Configuracion de Google Gemini
Parametros de generacion
Parametros que controlan el comportamiento de generacion del LLM.
| Propiedad | Descripcion | Predeterminado |
|---|---|---|
rag.chat.max.tokens | Numero maximo de tokens a generar | 4096 |
rag.chat.temperature | Aleatoriedad de la generacion (0.0-1.0) | 0.7 |
Configuracion de temperature
0.0: Respuestas deterministicas (siempre la misma respuesta para la misma entrada)
0.3-0.5: Respuestas consistentes (apropiado para preguntas basadas en hechos)
0.7: Respuestas equilibradas (predeterminado)
1.0: Respuestas creativas (apropiado para lluvia de ideas, etc.)
Configuracion de contexto
Configuracion del contexto pasado al LLM desde los resultados de busqueda.
| Propiedad | Descripcion | Predeterminado |
|---|---|---|
rag.chat.context.max.documents | Numero maximo de documentos a incluir en el contexto | 5 |
rag.chat.context.max.chars | Numero maximo de caracteres del contexto | 4000 |
rag.chat.content.fields | Campos a obtener de los documentos | title,url,content,... |
rag.chat.evaluation.max.relevant.docs | Numero maximo de documentos relevantes a seleccionar en la fase de evaluacion | 3 |
Campos de contenido
Campos que pueden especificarse en rag.chat.content.fields:
title- Titulo del documentourl- URL del documentocontent- Cuerpo del documentodoc_id- ID del documentocontent_title- Titulo del contenidocontent_description- Descripcion del contenido
Prompt del sistema
El prompt del sistema define el comportamiento basico del LLM.
Configuracion predeterminada
rag.chat.system.prompt=You are an AI assistant for Fess search engine. Answer questions based on the search results provided. Always cite your sources using [1], [2], etc.
Ejemplos de personalizacion
Para priorizar respuestas en espanol:
rag.chat.system.prompt=Eres un asistente de IA para el motor de busqueda Fess. Responde las preguntas basandote en los resultados de busqueda proporcionados. Responde en espanol y siempre cita las fuentes usando [1], [2], etc.
Personalizacion para campo especializado:
rag.chat.system.prompt=You are a technical documentation assistant. Provide detailed and accurate answers based on the search results. Include code examples when relevant. Always cite your sources using [1], [2], etc.
Gestion de sesiones
Configuracion relacionada con la gestion de sesiones de chat.
| Propiedad | Descripcion | Predeterminado |
|---|---|---|
rag.chat.session.timeout.minutes | Tiempo de timeout de sesion (minutos) | 30 |
rag.chat.session.max.size | Numero maximo de sesiones simultaneas | 10000 |
rag.chat.history.max.messages | Numero maximo de mensajes a mantener en el historial de conversacion | 20 |
Comportamiento de sesiones
Cuando un usuario inicia un nuevo chat, se crea una nueva sesion
El historial de conversacion se guarda en la sesion, permitiendo dialogo con contexto mantenido
Las sesiones se eliminan automaticamente despues del tiempo de timeout
Cuando el historial de conversacion excede el numero maximo de mensajes, los mensajes antiguos se eliminan
Limite de tasa
Configuracion de limite de tasa para prevenir sobrecarga de la API.
| Propiedad | Descripcion | Predeterminado |
|---|---|---|
rag.chat.rate.limit.enabled | Habilitar limite de tasa | true |
rag.chat.rate.limit.requests.per.minute | Numero maximo de solicitudes por minuto | 10 |
Consideraciones del limite de tasa
Considere tambien los limites de tasa del proveedor LLM al configurar
En entornos de alta carga, se recomiendan limites mas estrictos
Cuando se alcanza el limite de tasa, se muestra un mensaje de error al usuario
Uso de la API
La funcionalidad de modo IA esta disponible a traves de la API REST.
API sin streaming
Endpoint: POST /api/v1/chat
Parametros:
| Parametro | Requerido | Descripcion |
|---|---|---|
message | Si | Mensaje del usuario |
sessionId | No | ID de sesion (para continuar la conversacion) |
clear | No | true para limpiar la sesion |
Ejemplo de solicitud:
curl -X POST "http://localhost:8080/api/v1/chat" \
-d "message=Por favor explicame como instalar Fess"
Ejemplo de respuesta:
{
"status": "ok",
"sessionId": "abc123",
"content": "El metodo de instalacion de Fess es...",
"sources": [
{"title": "Guia de instalacion", "url": "https://..."}
]
}
API con streaming
Endpoint: POST /api/v1/chat/stream
Transmite respuestas en formato Server-Sent Events (SSE).
Parametros:
| Parametro | Requerido | Descripcion |
|---|---|---|
message | Si | Mensaje del usuario |
sessionId | No | ID de sesion (para continuar la conversacion) |
Ejemplo de solicitud:
curl -X POST "http://localhost:8080/api/v1/chat/stream" \
-d "message=Por favor explicame las caracteristicas de Fess" \
-H "Accept: text/event-stream"
Eventos SSE:
| Evento | Descripcion |
|---|---|
session | Informacion de sesion (sessionId) |
phase | Inicio/fin de fase de procesamiento (intent_analysis, search, evaluation, generation) |
chunk | Fragmento de texto generado |
sources | Informacion de documentos de referencia |
done | Procesamiento completado (sessionId, htmlContent) |
error | Informacion de error |
Para documentacion detallada de la API, consulte Chat API.
Interfaz web
En la interfaz web de Fess, puede usar la funcionalidad de modo IA desde la pantalla de busqueda.
Iniciar chat
Acceda a la pantalla de busqueda de Fess
Haga clic en el icono de chat
Se mostrara el panel de chat
Usar chat
Ingrese una pregunta en el cuadro de texto
Haga clic en el boton de enviar o presione la tecla Enter
Se mostrara la respuesta del asistente de IA
La respuesta incluye enlaces a las fuentes de referencia
Continuar conversacion
Puede continuar la conversacion dentro de la misma sesion de chat
Las respuestas consideran el contexto de las preguntas anteriores
Hacer clic en «Nuevo chat» reinicia la sesion
Solucion de problemas
El modo IA no se habilita
Verificaciones:
Si
rag.chat.enabled=trueesta configuradoSi el proveedor LLM esta configurado correctamente
Si la conexion al proveedor LLM es posible
Baja calidad de respuestas
Mejoras:
Usar un modelo LLM de mayor rendimiento
Aumentar
rag.chat.context.max.documentsPersonalizar el prompt del sistema
Ajustar
rag.chat.temperature
Respuestas lentas
Mejoras:
Usar un modelo LLM mas rapido (ej: Gemini Flash)
Reducir
rag.chat.max.tokensReducir
rag.chat.context.max.chars
Sesiones no se mantienen
Verificaciones:
Si el sessionId se esta enviando correctamente del lado del cliente
Configuracion de
rag.chat.session.timeout.minutesCapacidad del almacenamiento de sesiones
Configuracion de depuracion
Para investigar problemas, puede ajustar el nivel de log para obtener logs detallados.
app/WEB-INF/classes/log4j2.xml:
<Logger name="org.codelibs.fess.llm" level="DEBUG"/>
<Logger name="org.codelibs.fess.api.chat" level="DEBUG"/>
<Logger name="org.codelibs.fess.chat" level="DEBUG"/>
Informacion de referencia
Descripcion general de integracion LLM - Descripcion general de integracion LLM
Configuracion de Ollama - Configuracion de Ollama
Configuracion de OpenAI - Configuracion de OpenAI
Configuracion de Google Gemini - Configuracion de Google Gemini
Chat API - Referencia de Chat API
Busqueda con chat de IA - Guia de busqueda con chat para usuarios finales