Descripción general
Fess soporta la funcionalidad de modo de búsqueda IA (RAG: Retrieval-Augmented Generation) que aprovecha los modelos de lenguaje de gran escala (LLM). Esta funcionalidad permite a los usuarios obtener información mediante un diálogo interactivo con un asistente de IA basado en los resultados de búsqueda.
La funcionalidad de integración con LLM se proporciona como plugins fess-llm-*. Instale el plugin correspondiente al proveedor LLM que desea utilizar.
Proveedores compatibles
Fess soporta los siguientes proveedores de LLM.
| Proveedor | Valor de configuración | Plugin | Descripción |
|---|---|---|---|
| Ollama | ollama | fess-llm-ollama | Servidor LLM de código abierto que se ejecuta en entorno local. Puede ejecutar modelos como Llama, Mistral, Gemma. Configuración predeterminada. |
| OpenAI | openai | fess-llm-openai | API en la nube de OpenAI. Disponible para modelos como GPT-4. |
| Google Gemini | gemini | fess-llm-gemini | API en la nube de Google. Disponible para modelos Gemini. |
Instalación del plugin
La funcionalidad LLM se proporciona como plugin. Es necesario colocar el archivo JAR del plugin fess-llm-{provider} correspondiente al proveedor que desea utilizar en el directorio de plugins.
Por ejemplo, para usar el proveedor OpenAI, descargue fess-llm-openai-15.7.0.jar y colóquelo en el siguiente directorio.
Después de colocarlo, reinicie Fess para que el plugin sea cargado.
Arquitectura
La funcionalidad de modo de búsqueda IA opera con el siguiente flujo.
Entrada del usuario: El usuario ingresa una pregunta en la interfaz de chat
Análisis de intención (intent): El LLM analiza la pregunta del usuario y extrae palabras clave de búsqueda
Ejecución de búsqueda (search): Busca documentos relacionados usando el motor de búsqueda de Fess
Evaluación de resultados (evaluate): El LLM evalúa la relevancia de los resultados de búsqueda y selecciona los documentos más apropiados
Regeneración de consulta (si es necesario): Si no se obtienen resultados de búsqueda o no se encuentran documentos relevantes en la evaluación, el LLM regenera la consulta y realiza una nueva búsqueda
Obtención de contenido (fetch): Se obtiene el cuerpo de texto de los documentos seleccionados
Generación de respuesta (answer): El LLM genera una respuesta basada en los documentos obtenidos (con renderizado Markdown)
Cita de fuentes: La respuesta incluye enlaces a los documentos de referencia
Nota
El procesamiento interno se compone de cinco fases: intent, search, evaluate, fetch y answer. El progreso de cada fase se notifica al cliente mediante streaming (SSE).
Configuración básica
La configuración de la funcionalidad LLM se realiza en los siguientes dos lugares.
Configuración general de la pantalla de administración / system.properties
Se configura en la configuración general de la pantalla de administración o en system.properties. Se usa para la selección del proveedor LLM.
fess_config.properties
Se configura en app/WEB-INF/conf/fess_config.properties. Además de habilitar el modo de búsqueda IA y configurar sesiones e historial, también se describen en este archivo la configuración específica del proveedor (URL de conexión, clave API, parámetros de generación, etc.).
Para la configuración detallada de cada proveedor, consulte los siguientes documentos.
Configuracion de Ollama - Configuración de Ollama
Configuracion de OpenAI - Configuración de OpenAI
Configuracion de Google Gemini - Configuración de Google Gemini
Configuración común
Elementos de configuración utilizados en común por todos los proveedores LLM. Estos se configuran en fess_config.properties.
Configuración de contexto
| Propiedad | Descripción | Predeterminado |
|---|---|---|
rag.chat.context.max.documents | Número máximo de documentos a incluir en el contexto | 5 |
rag.chat.content.fields | Campos a obtener de los documentos | title,url,content,doc_id,content_title,content_description |
Nota
El número máximo de caracteres del contexto (context.max.chars) ha sido modificado a una configuración por proveedor y por tipo de prompt. Configúrelo en fess_config.properties como rag.llm.{provider}.{promptType}.context.max.chars.
Prompt del sistema
Los prompts del sistema se gestionan en el archivo DI XML de cada plugin, no en archivos de propiedades.
Los prompts del sistema están definidos en el archivo fess_llm++.xml incluido dentro del archivo JAR de cada plugin fess-llm-*. Dado que este archivo es un recurso de classpath incluido en el JAR del plugin, para personalizar los prompts es necesario editar el archivo DI XML dentro del JAR.
Verificación de disponibilidad
| Propiedad | Descripción | Predeterminado |
|---|---|---|
rag.llm.{provider}.availability.check.interval | Intervalo para verificar la disponibilidad del LLM (segundos). 0 para deshabilitar | 60 |
Esta configuración se realiza en fess_config.properties. Fess verifica periódicamente el estado de conexión del proveedor LLM.
Gestión de sesiones
Configuración relacionada con las sesiones de chat. Estas se configuran en fess_config.properties.
| Propiedad | Descripción | Predeterminado |
|---|---|---|
rag.chat.session.timeout.minutes | Tiempo de espera de la sesión (minutos) | 30 |
rag.chat.session.max.size | Número máximo de sesiones | 10000 |
rag.chat.history.max.messages | Número máximo de mensajes a mantener en el historial de conversación | 30 |
Control de concurrencia
Configuración que controla el número de solicitudes simultáneas al LLM. Se configura en fess_config.properties.
| Propiedad | Descripción | Predeterminado |
|---|---|---|
rag.llm.{provider}.max.concurrent.requests | Número máximo de solicitudes simultáneas al proveedor | 5 |
rag.llm.{provider}.concurrency.wait.timeout | Tiempo máximo de espera (en milisegundos) cuando se alcanza el límite de concurrencia. Si no se obtiene disponibilidad dentro de este tiempo, se produce un error de límite de tasa | 30000 |
Por ejemplo, para configurar el número de solicitudes simultáneas del proveedor OpenAI, se hace de la siguiente manera.
Configuración de evaluación
Configuración relacionada con la evaluación de los resultados de búsqueda. Se configura en fess_config.properties.
| Propiedad | Descripción | Predeterminado |
|---|---|---|
rag.llm.{provider}.chat.evaluation.max.relevant.docs | Número máximo de documentos relevantes a seleccionar en la fase de evaluación | 3 |
Configuración por tipo de prompt
Los parámetros de generación se pueden configurar por tipo de prompt. Esto permite ajustes detallados según el uso. La configuración se realiza en fess_config.properties.
Lista de tipos de prompt
| Tipo de prompt | Valor de configuración | Descripción |
|---|---|---|
| Análisis de intención | intent | Analiza la pregunta del usuario y extrae palabras clave de búsqueda |
| Evaluación | evaluation | Evalúa la relevancia de los resultados de búsqueda |
| Pregunta ambigua | unclear | Genera una respuesta cuando la pregunta no está clara |
| Sin resultados de búsqueda | noresults | Genera una respuesta cuando no se encuentran resultados de búsqueda |
| Documento no encontrado | docnotfound | Genera una respuesta cuando no existe el documento correspondiente |
| Generación de respuesta | answer | Genera una respuesta basada en los resultados de búsqueda |
| Resumen | summary | Genera un resumen del documento |
| FAQ | faq | Genera una respuesta en formato FAQ |
| Respuesta directa | direct | Genera una respuesta directa sin pasar por la búsqueda |
| Regeneración de consulta | queryregeneration | Regenera la consulta cuando no se obtienen resultados de búsqueda |
Patrón de configuración
La configuración por tipo de prompt se especifica con el siguiente patrón.
Ejemplo de configuración (en el caso del proveedor OpenAI):
Nota
temperature, max.tokens y context.max.chars son parámetros comunes a todos los proveedores. Además, cada proveedor soporta parámetros específicos como thinking.budget, top.p y reasoning.effort. Consulte la documentación de cada proveedor para más detalles.
Siguientes pasos
Configuracion de Ollama - Configuración detallada de Ollama
Configuracion de OpenAI - Configuración detallada de OpenAI
Configuracion de Google Gemini - Configuración detallada de Google Gemini
Configuracion de la funcionalidad de modo de búsqueda IA - Configuración detallada de la funcionalidad de modo de búsqueda IA
Configuración de Rank Fusion - Configuración de Rank Fusion (fusión de resultados de búsqueda híbrida)