Este proyecto tiene como objetivo construir un motor de recomendación que aproveche una arquitectura de generación de recuperación de agente (RAG) para proporcionar recomendaciones conscientes de contexto basadas en consultas de los usuarios. El MVP se centra en la modularidad y la escalabilidad al tiempo que utiliza tecnologías de código abierto para la eficiencia de rentabilidad.
Estructura de base de código propuesta:
ragsearch/
├── __init__.py
├── retrieval/
│ ├── __init__.py
│ ├── structured.py # For databases (e.g., DuckDB,sqlLite,MongoDB)
│ ├── unstructured.py # For document loaders (e.g., PDF, Word, HTML)
│ ├── base.py # Abstract base class
├── generation/
│ ├── __init__.py
│ ├── langchain.py # LangChain-based generation
│ ├── llamaindex.py # LlamaIndex-based generation
│ ├── base.py # Abstract base class
├── fusion/
│ ├── __init__.py
│ ├── simple_fusion.py # Simple query-context fusion
│ ├── attention.py # Advanced fusion strategies
│ ├── base.py # Abstract base class
├── reranking/
│ ├── __init__.py # Factory for reranking components
│ ├── bm25_reranker.py # Reranking based on BM25 scores
│ ├── neural_reranker.py # Reranking with neural models
│ ├── base.py # Abstract base class
├── llms/
│ ├── __init__.py # Factory for LLMs
│ ├── openai.py # OpenAI wrapper
│ ├── cohere.py # Cohere wrapper
│ ├── huggingface.py # HuggingFace wrapper
│ ├── base.py # Abstract base class
├── utils/
│ ├── __init__.py
│ ├── logger.py # Logging utilities
│ ├── config.py # Configuration utilities
│ ├── data.py # Data utilities
│ ├── metrics.py # Evaluation metrics
├── tests/
│ ├── __init__.py
│ ├── test_retrieval.py
│ ├── test_generation.py
│ ├── test_fusion.py
│ ├── test_reranking.py
│ ├── test_llms.py
├── main.py # Main entry point
├── config.yaml # Configuration file
├── README.md # Project documentation
├── RAG.md # Documentation for Retrieval-Augmented Generation
├── RAG-FAQ.md # FAQ for Retrieval-Augmented Generation
La generación de recuperación de la generación (RAG) es el proceso de optimizar el resultado de un modelo de lenguaje grande, por lo que hace referencia a una base de conocimiento autorizada fuera de sus fuentes de datos de capacitación antes de generar una respuesta. Los modelos de idiomas grandes (LLM) están capacitados en grandes volúmenes de datos y usan miles de millones de parámetros para generar resultados originales para tareas como responder preguntas, traducir idiomas y completar oraciones. RAG extiende las capacidades ya poderosas de LLM a dominios específicos o la base de conocimiento interno de una organización, todo sin la necesidad de volver a entrenar el modelo. Es un enfoque rentable para mejorar la salida de LLM, por lo que sigue siendo relevante, preciso y útil en varios contextos.
Los LLM son una tecnología clave de inteligencia artificial (IA) que alimenta chatbots inteligentes y otras aplicaciones de procesamiento del lenguaje natural (PNL). El objetivo es crear bots que puedan responder preguntas del usuario en varios contextos mediante la referencia cruzada de fuentes de conocimiento autorizadas. Desafortunadamente, la naturaleza de la tecnología LLM introduce imprevisibilidad en las respuestas de LLM. Además, los datos de entrenamiento de LLM son estáticos e introducen una fecha límite sobre el conocimiento que tiene.
Presentar información falsa cuando no tiene la respuesta. Presentar información desactualizada o genérica Cuando el usuario espera una respuesta actual específica. Creando una respuesta de fuentes no autoritativas. Creación de respuestas inexactas debido a la confusión de la terminología, en la que diferentes fuentes de capacitación usan la misma terminología para hablar sobre cosas diferentes. Puede pensar en el modelo de lenguaje grande como un nuevo empleado demasiado entusiasta que se niega a mantenerse informado con los eventos actuales, pero siempre responderá cada pregunta con absoluta confianza. ¡Desafortunadamente, tal actitud puede afectar negativamente la confianza del usuario y no es algo que quieras que emulen tus chatbots!
Rag es un enfoque para resolver algunos de estos desafíos. Redirige el LLM para recuperar información relevante de fuentes de conocimiento autoritarias y predeterminadas. Las organizaciones tienen un mayor control sobre la salida de texto generada, y los usuarios obtienen información sobre cómo el LLM genera la respuesta.
Rag Technology trae varios beneficios a los esfuerzos generativos de IA de una organización.
El desarrollo de chatbot generalmente comienza a usar un modelo de base. Los modelos de base (FMS) son LLM accesibles para API entrenados en un amplio espectro de datos generalizados y sin etiquetar. Los costos computacionales y financieros de reentrenamiento de FMS para la organización o información específica del dominio son altos. RAG es un enfoque más rentable para introducir nuevos datos a la LLM. Hace que la tecnología generativa de inteligencia artificial (IA generativa) sea más accesible y utilizable.
Incluso si las fuentes de datos de capacitación originales para un LLM son adecuadas para sus necesidades, es difícil mantener la relevancia. RAG permite a los desarrolladores proporcionar las últimas investigaciones, estadísticas o noticias a los modelos generativos. Pueden usar RAG para conectar el LLM directamente con los feeds en las redes sociales en vivo, los sitios de noticias u otras fuentes de información frecuentemente actualizadas. El LLM puede proporcionar la información más reciente a los usuarios.
RAG permite que la LLM presente información precisa con la atribución de origen. La salida puede incluir citas o referencias a fuentes. Los usuarios también pueden buscar documentos fuente si requieren más aclaraciones o más detalles. Esto puede aumentar la confianza y la confianza en su solución de IA generativa.
Con RAG, los desarrolladores pueden probar y mejorar sus aplicaciones de chat de manera más eficiente. Pueden controlar y cambiar las fuentes de información de la LLM para adaptarse a los requisitos cambiantes o el uso interfuncional. Los desarrolladores también pueden restringir la recuperación de información confidencial a diferentes niveles de autorización y garantizar que el LLM genere respuestas apropiadas. Además, también pueden solucionar problemas y hacer correcciones si el LLM hace referencia a fuentes de información incorrectas para preguntas específicas. Las organizaciones pueden implementar la tecnología de IA generativa con más confianza para una gama más amplia de aplicaciones.
Sin RAG, el LLM toma la entrada del usuario y crea una respuesta basada en la información en la que fue entrenado, o lo que ya sabe. Con RAG, se introduce un componente de recuperación de información que utiliza la entrada del usuario para extraer primero la información de una nueva fuente de datos. La consulta de usuario y la información relevante se dan a la LLM. El LLM utiliza el nuevo conocimiento y sus datos de capacitación para crear mejores respuestas. Las siguientes secciones proporcionan una visión general del proceso.
Los nuevos datos fuera del conjunto de datos de entrenamiento original de la LLM se denominan datos externos. Puede provenir de múltiples fuentes de datos, como API, bases de datos o repositorios de documentos. Los datos pueden existir en varios formatos como archivos, registros de bases de datos o texto de forma larga. Otra técnica de IA, llamada modelos de lenguaje de incrustación, convierte los datos en representaciones numéricas y la almacena en una base de datos vectorial. Este proceso crea una biblioteca de conocimiento que los modelos de IA generativos pueden entender.
El siguiente paso es realizar una búsqueda de relevancia. La consulta de usuario se convierte en una representación vectorial y se combina con las bases de datos Vector. Por ejemplo, considere un chatbot inteligente que puede responder preguntas de recursos humanos para una organización. Si un empleado busca, "¿Cuántas vacaciones anual tengo?" El sistema recuperará los documentos de política de licencia anual junto con el registro de licencia pasada del empleado individual. Estos documentos específicos se devolverán porque son muy relevantes para lo que el empleado tiene aportes. La relevancia se calculó y estableció utilizando cálculos y representaciones de vectores matemáticos.
A continuación, el modelo RAG aumenta la entrada del usuario (o indicaciones) agregando los datos recuperados relevantes en contexto. Este paso utiliza técnicas de ingeniería rápida para comunicarse de manera efectiva con el LLM. La solicitud aumentada permite que los grandes modelos de idioma generen una respuesta precisa a las consultas de los usuarios.
La siguiente pregunta puede ser: ¿qué pasa si los datos externos se vuelven obsoletos? Para mantener la información actual para la recuperación, actualice asincrónicamente los documentos y actualice la representación de incrustación de los documentos. Puede hacerlo a través de procesos automatizados en tiempo real o procesamiento por lotes periódicos. Este es un desafío común en el análisis de datos: se pueden utilizar diferentes enfoques de ciencia de datos para la gestión del cambio.
La búsqueda semántica mejora los resultados de RAG para las organizaciones que desean agregar vastas fuentes de conocimiento externas a sus aplicaciones LLM. Las empresas modernas almacenan grandes cantidades de información como manuales, preguntas frecuentes, informes de investigación, guías de servicio al cliente y repositorios de documentos de recursos humanos en varios sistemas. La recuperación del contexto es un desafío a escala y, en consecuencia, reduce la calidad de salida generativa.
Las tecnologías de búsqueda semántica pueden escanear grandes bases de datos de información dispar y recuperar datos con mayor precisión. Por ejemplo, pueden responder preguntas como: "¿Cuánto se gastó en reparaciones de maquinaria el año pasado?" Al asignar la pregunta a los documentos relevantes y devolver el texto específico en lugar de los resultados de búsqueda.
Las soluciones de búsqueda convencionales o de palabras clave en RAG producen resultados limitados para tareas intensivas en conocimiento. Los desarrolladores también deben lidiar con las incrustaciones de palabras, la fragmentación de documentos y otras complejidades a medida que preparan manualmente sus datos. En contraste, las tecnologías de búsqueda semántica hacen todo el trabajo de preparación de la base de conocimiento para que los desarrolladores no tengan que hacerlo. También generan pasajes y palabras de token semánticamente relevantes ordenadas por relevancia para maximizar la calidad de la carga útil de RAG.