Chatbot de generación aumentada de recuperación (RAG) de código abierto basado en Weaviate, que proporciona una solución RAG integral, fluida y fácil de usar.
Descripción Detallada del Proyecto Verba
Resumen del Proyecto
Verba es una aplicación de Generación Aumentada por Recuperación (RAG) de código abierto desarrollada por Weaviate, conocida como "The Golden RAGtriever". Ofrece una solución RAG de extremo a extremo, fluida y fácil de usar, que permite a los usuarios explorar conjuntos de datos y extraer información en pasos sencillos, ya sea utilizando Ollama y Huggingface localmente, o a través de proveedores de LLM como Anthropic, Cohere y OpenAI.
Características Principales
🤖 Soporte de Modelos
- Modelos Locales: Soporta modelos Ollama (como Llama3) y HuggingFace
- Modelos en la Nube: Integra proveedores de servicios de IA líderes como OpenAI, Anthropic, Cohere, Groq, Novita AI, Upstage
- Modelos de Embedding: Soporta múltiples modelos de embedding, incluyendo Weaviate, SentenceTransformers, VoyageAI, entre otros
📁 Soporte de Datos
- Tipos de Archivo: Soporta múltiples formatos como .txt, .md, .pdf, .csv, .docx, .pptx
- Fuentes de Datos: Puede importar datos desde el sistema de archivos local, repositorios de GitHub, URLs, etc.
- Funciones Especiales:
- Rastreo web a través de Firecrawl
- Análisis de documentos a través de UpstageDocumentParse
- Procesamiento de archivos de audio a través de AssemblyAI
✨ Características de RAG
- Búsqueda Híbrida: Combina búsqueda semántica y búsqueda por palabras clave
- Sugerencias de Autocompletado: Ofrece funcionalidad de sugerencias de consulta
- Filtrado Inteligente: Soporta filtrado por documento, tipo de documento, etc.
- Metadatos Personalizables: Control total sobre la configuración de metadatos
- Ingesta Asíncrona: Ingesta de datos asíncrona para mejorar la velocidad de procesamiento
🗡️ Técnicas de Fragmentación de Documentos
- Fragmentación por Token: Fragmentación de documentos basada en tokens
- Fragmentación por Oración: Utiliza spaCy para la fragmentación a nivel de oración
- Fragmentación por Párrafo: Soporta la fragmentación de documentos a nivel de párrafo
Arquitectura Técnica
Verba adopta un diseño de arquitectura modular, descomponiendo el proceso RAG en varios pasos modulares e independientes, que incluyen:
- ReaderManager: Recibe una lista de cadenas (rutas, URLs o texto) y produce una lista de documentos Verba.
- ChunkerManager: Recibe una lista de documentos y fragmenta el texto de cada documento en segmentos más pequeños.
- EmbeddingManager: Recibe una lista de documentos y los incrusta en Weaviate.
Métodos de Despliegue
💻 Despliegue Local
Ejecutar localmente con Weaviate Embedded:
pip install goldenverba
verba start
🐳 Despliegue con Docker
git clone https://github.com/weaviate/Verba
docker compose up -d --build
🌩️ Despliegue en la Nube
Conectarse a una instancia de Weaviate Cloud Services (WCS)
⚙️ Despliegue Personalizado
Soporta la conexión a instancias de Weaviate autoalojadas
Flujo de Uso
1. Configuración del Entorno
Crear un archivo .env
para configurar las claves API:
# Configuración de OpenAI
OPENAI_API_KEY=your_openai_key
# Configuración de Anthropic
ANTHROPIC_API_KEY=your_anthropic_key
# Configuración de Weaviate en la Nube
WEAVIATE_URL_VERBA=your_weaviate_url
WEAVIATE_API_KEY_VERBA=your_weaviate_key
# Configuración local de Ollama
OLLAMA_URL=http://localhost:11434
2. Importación de Datos
- Seleccionar "Import Data" a través de la interfaz web
- Soporta la adición de archivos, directorios o URLs
- Se puede configurar cada archivo individualmente
3. Configuración del Pipeline RAG
En la página "Config":
- Seleccionar el modelo de embedding
- Seleccionar el modelo generativo
- Establecer la estrategia de fragmentación
- Configurar los parámetros de recuperación
4. Iniciar Conversación
En la página "Chat":
- Introducir preguntas para obtener respuestas relevantes
- Ver fragmentos de documentos semánticamente relacionados
- Obtener respuestas sintetizadas generadas por IA
Funciones Destacadas
📊 Visualización 3D de Vectores
Ofrece una interfaz de visualización 3D de datos vectoriales para ayudar a los usuarios a comprender la distribución de los datos.
🎨 Frontend Personalizable
Interfaz de frontend completamente personalizable, que soporta la adaptación de marca.
🔄 Caché Semántica
Utiliza la función de caché semántica de Weaviate, incrustando las respuestas y consultas generadas, asegurando que las consultas repetidas se procesen rápidamente al verificar en la caché si hay consultas semánticamente idénticas procesadas previamente.
🤝 Integración de Librerías RAG
- LangChain: Ya soporta pipelines RAG de LangChain
- Haystack: Soporte planificado
- LlamaIndex: Soporte planificado
Casos de Uso
- Gestión de Conocimiento Personal: Construir un sistema de consulta inteligente para una biblioteca de documentos personal.
- Recuperación de Documentos Corporativos: Ayudar a los empleados a encontrar rápidamente documentos e información corporativa relevante.
- Asistencia en Investigación: Ayudar a los investigadores a analizar y consultar materiales de investigación.
- Servicio al Cliente: Construir un sistema de atención al cliente inteligente basado en la base de conocimientos de la empresa.
- Educación y Capacitación: Crear un sistema interactivo de consulta de materiales de aprendizaje.
Estado del Proyecto
Este proyecto es impulsado por la comunidad, con el apoyo de código abierto de Weaviate. Aunque el equipo se esfuerza por resolver los problemas rápidamente, la urgencia de mantenimiento puede no ser tan alta como la del software de producción. Se agradecen las contribuciones de la comunidad para ayudar a mantener el proyecto estable.
Requisitos Técnicos
- Versión de Python: >=3.10.0, <3.13.0
- Sistema Operativo: Linux, macOS (Weaviate Embedded en Windows no es compatible actualmente)
- Hardware: Depende del modelo seleccionado y la cantidad de datos.
Contribuciones de Código Abierto
El proyecto agradece las contribuciones en diversas formas:
- Mejoras de características y corrección de errores
- Perfeccionamiento de la documentación
- Sugerencias de nuevas funciones
- Pruebas y comentarios
Para más detalles, consulte la Guía de Contribución y la Documentación Técnica del proyecto.
Desarrollo Futuro
Según la hoja de ruta del proyecto, las funciones planificadas incluyen:
- Funciones de consulta avanzadas (delegación de tareas basada en la evaluación de LLM)
- Funciones de reordenamiento (reordenamiento de resultados basado en el contexto)
- Interfaz de evaluación RAG
- Más integraciones de librerías RAG
Verba representa la mejor implementación de prácticas de la tecnología RAG, proporcionando a los usuarios una solución potente y fácil de usar para la consulta inteligente de documentos.