DynamicRAG
DynamicRAG es una aplicación web basada en React que implementa un sistema dinámico de Retrieval-Augmented Generation (RAG). Permite a los usuarios introducir texto, procesarlo en incrustaciones y realizar tareas de respuesta a preguntas mediante una combinación de búsqueda vectorial y Large Language Models.
información
El código fuente completo y las instrucciones detalladas para configurar y ejecutar este ejemplo se pueden encontrar en el repositorio Gaia Cookbook.
Capturas de pantalla
Texto de entrada basado en RAG dinámico
Repo de Github a RAG dinámico
Características
- Tratamiento de textos y fragmentación en tiempo real
- Creación de bases de datos vectoriales dinámicas con Qdrant
- Tratamiento por lotes de grandes volúmenes de texto
- Integración con un nodo Gaia local
- Análisis de repositorios de GitHub con GitIngest
- Seguimiento del progreso y gestión de errores
- Interfaz de usuario limpia y con capacidad de respuesta mediante CSS de Tailwind y componentes shadcn/ui.
Requisitos previos
- Node.js (v16 o superior)
- Python (para la instalación de GitIngest)
- Una instancia Qdrant en ejecución (local o remota)
- Un servidor LLM local a través de Gaia ejecutándose en el puerto 8080 (Tutorial: https://docs.gaianet.ai/node-guide/quick-start)
- En
nomic-embed
modelo de incrustación (autodescargado engaianet
cuando se instala Gaia CLI) - En
llama 3.2
modelo lingüístico (autodescargado engaianet
cuando se instala Gaia CLI. Puede sustituir el modelo en función de su caso de uso)
Configurar
- Clonar el repositorio:
git clone https://github.com/harishkotra/dynamic-rag-gaia
cd dynamic-rag
- Instalar dependencias:
npm instalar
- Instale GitIngest:
pip install gitingest
- Asegúrese de que su servidor Qdrant está funcionando y accesible en http://localhost:6333
- Asegúrese de que su nodo Gaia está funcionando y es accesible en http://localhost:8080 (Tutorial: https://docs.gaianet.ai/node-guide/quick-start)
- Inicie el servidor de desarrollo:
npm run dev
Utilización
- Seleccione el modo de entrada:
- Introducción de texto: Pegue el texto de su base de conocimientos en el área de texto de entrada
- Repositorio GitHub: Introduzca la URL de un repositorio GitHub para analizar su contenido
- Formule preguntas: Introduzca su consulta en el campo de preguntas.
- Procesar: Haga clic en "Enviar" para procesar su consulta. El sistema lo hará:
- Para introducir texto: Divide el texto de entrada en trozos manejables.
- Para los repositorios de GitHub: Obtención y procesamiento del contenido del repositorio mediante GitIngest
- Crear incrustaciones para cada trozo
- Almacenar incrustaciones en una colección Qdrant temporal
- Encontrar el contexto pertinente mediante la búsqueda de similitud vectorial
- Generar una respuesta utilizando el Nodo Gaia local
- Ver resultados: El sistema mostrará la respuesta generada en función del contexto relevante encontrado.
Detalles técnicos
Tratamiento de textos
- Tamaño máximo del trozo: 2000 caracteres
- Tamaño del procesamiento por lotes: 3 trozos cada vez
- Los fragmentos se crean a partir de los límites naturales del texto (párrafos y frases).
Base de datos vectorial
- Utiliza Qdrant para el almacenamiento de vectores y la búsqueda de similitudes
- Crea colecciones temporales para cada sesión de consulta
- Limpia automáticamente las colecciones tras su uso
- Utiliza vectores de 768 dimensiones para las incrustaciones
Integración API
- Compatible con puntos finales de API de tipo OpenAI
- Admite tanto incrustaciones como puntos finales de finalización de chat
- Utiliza el
nomic-embed
modelo para incrustaciones - Utiliza el
llama
modelo de generación de textos - Integración con GitIngest para el análisis de repositorios
- Rutas API de NextJS para la integración de herramientas de línea de comandos
Componentes
DynamicRAG.js
: Componente principal de aplicación del sistema GARapp/api/gitingest/route.js
: Ruta API para el procesamiento de repositorios GitHub- Tratamiento y validación de entradas
- Seguimiento del progreso y visualización de errores
- Gestión de bases de datos vectoriales
- Integración LLM
Tratamiento de errores
El sistema incluye un completo tratamiento de errores para:
- Fallos en el tratamiento de textos
- Errores de obtención y análisis del repositorio GitHub
- Errores de creación de incrustaciones
- Operaciones con bases de datos vectoriales
- Fallos en la consulta LLM
- Problemas de red
Dependencias
- Reaccione
- Tailwind CSS
- componentes shadcn/ui
- Lodash para funciones de utilidad
- Varios componentes de interfaz de usuario (@/components/ui/*)
información
El código fuente completo y las instrucciones detalladas para configurar y ejecutar este ejemplo se pueden encontrar en el repositorio Gaia Cookbook.