RAGbits: Desarrollo Rápido para Aplicaciones de GenAI

RAGbits: El kit de herramientas para el desarrollo rápido de aplicaciones GenAI

En el vertiginoso mundo de la IA Generativa, los desarrolladores buscan constantemente herramientas robustas y eficientes para dar vida a sus innovadoras aplicaciones. Te presentamos RAGbits, un framework de código abierto creado por deepsense.ai, diseñado específicamente para acelerar la creación de soluciones GenAI fiables y escalables, especialmente aquellas que aprovechan la Generación Aumentada por Recuperación (RAG).

¿Qué es RAGbits?

RAGbits es un conjunto completo de bloques de construcción pensado para agilizar todo el ciclo de vida del desarrollo de aplicaciones GenAI. Ofrece una arquitectura modular y flexible, lo que permite a los desarrolladores integrar solo los componentes que necesitan, reduciendo así las dependencias y optimizando el rendimiento. El framework está fuertemente enfocado en la aplicación práctica, proporcionando características robustas para gestionar Grandes Modelos de Lenguaje (LLMs), manejar diversos tipos de datos y desplegar sofisticadas tuberías (pipelines) RAG.

Características clave de RAGbits:

RAGbits destaca por su potente conjunto de características, que permiten a los desarrolladores construir aplicaciones de IA sofisticadas con facilidad:

🔨 Construye aplicaciones GenAI fiables y escalables

  • Integración flexible de LLMs: Cambia sin problemas entre más de 100 LLMs a través de LiteLLM o integra modelos locales, ofreciendo una flexibilidad inigualable.
  • Llamadas seguras a LLMs: Utiliza genéricos de Python para garantizar una estricta seguridad de tipo durante las interacciones con el modelo, asegurando robustez y reduciendo errores.
  • Utiliza tu propio almacén vectorial: Conéctate con almacenes vectoriales populares como Qdrant, PgVector y muchos más, o integra fácilmente soluciones personalizadas.
  • Herramientas de desarrollo incluidas: Accede a un conjunto de herramientas de línea de comandos para gestionar almacenes vectoriales, configurar tuberías de consulta y probar prompts directamente desde tu terminal.
  • Instalación modular: Instala solo los componentes necesarios, adaptando el framework a las necesidades específicas de tu proyecto y mejorando la eficiencia.

📚 Procesamiento RAG rápido y flexible

  • Ingesta extensiva de datos: Procesa más de 20 formatos de datos, incluyendo PDFs, HTML, hojas de cálculo y presentaciones. Aprovecha potentes analizadores (parsers) como Docling y Unstructured, o implementa analizadores personalizados.
  • Manejo de datos complejos: Extrae contenido estructurado, tablas e imágenes con soporte integrado para Modelos de Lenguaje Visual (VLM).
  • Conectividad con cualquier fuente de datos: Utiliza conectores preconstruidos para servicios de almacenamiento en la nube como S3, GCS y Azure, o desarrolla tus propios conectores.
  • Ingesta escalable: Procesa grandes conjuntos de datos eficientemente utilizando el procesamiento paralelo basado en Ray para una incorporación rápida de datos.

🚀 Despliega y monitorea con confianza

  • Observabilidad en tiempo real: Rastrea el rendimiento de las aplicaciones y obtén información valiosa utilizando OpenTelemetry y análisis CLI completos.
  • Pruebas integradas: Valida y refina tus prompts con las pruebas integradas de promptfoo antes de desplegar tus aplicaciones.
  • Auto-optimización: Evalúa y optimiza continuamente el rendimiento del modelo a través de procesos sistemáticos.
  • Interfaz de chat: Despliega una interfaz de chatbot lista para usar que incluye API, persistencia de datos y mecanismos de comentarios de los usuarios.

Primeros pasos con RAGbits

La instalación es sencilla. Puedes empezar rápidamente con un simple comando pip:

pip install ragbits

Este comando instala un paquete inicial que incluye ragbits-core (herramientas fundamentales), ragbits-agents (para sistemas agénticos), ragbits-document-search (recuperación e ingesta), ragbits-evaluate (evaluación unificada), ragbits-chat (IA conversacional) y ragbits-cli (interfaz de línea de comandos). Alternativamente, los componentes individuales pueden instalarse según sea necesario.

Ejemplos prácticos:

La documentación de RAGbits proporciona guías de inicio rápido claras que demuestran casos de uso comunes. Aquí tienes un vistazo a su sencillez:

  • Definir y ejecutar prompts de LLM: Define fácilmente prompts con seguridad de tipo y genera respuestas de tu LLM elegido.

    # Ejemplo de generación de prompts LLM
    import asyncio
    from pydantic import BaseModel
    from ragbits.core.llms import LiteLLM
    from ragbits.core.prompt import Prompt
    
    class QuestionAnswerPromptInput(BaseModel):
      question: str
    
    class QuestionAnswerPromptOutput(BaseModel):
      answer: str
    
    class QuestionAnswerPrompt(Prompt[QuestionAnswerPromptInput, QuestionAnswerPromptOutput]):
      system_prompt = """
    Eres un agente de respuesta a preguntas. Contesta la pregunta lo mejor que puedas.
    """
      user_prompt = """
    Pregunta: {{ question }}
    """
    
    llm = LiteLLM(model_name="gpt-4.1-nano", use_structured_output=True)
    
    async def main() -> None:
      prompt = QuestionAnswerPrompt(QuestionAnswerPromptInput(question="¿Qué son la memoria alta y la memoria baja en linux?"))
      response = await llm.generate(prompt)
      print(response.answer)
    
    if __name__ == "__main__":
      asyncio.run(main())
    

  • Construir un índice de almacén vectorial: Ingresa documentos y consulta tu base de conocimiento personalizada.

    # Ejemplo de búsqueda de documentos
    import asyncio
    from ragbits.core.embeddings import LiteLLMEmbedder
    from ragbits.core.vector_stores import InMemoryVectorStore
    from ragbits.document_search import DocumentSearch
    
    embedder = LiteLLMEmbedder(model_name="text-embedding-3-small")
    vector_store = InMemoryVectorStore(embedder=embedder)
    document_search = DocumentSearch(vector_store=vector_store)
    
    async def run() -> None:
      await document_search.ingest("web://https://arxiv.org/pdf/1706.03762")
      result = await document_search.search("¿Cuáles son los hallazgos clave presentados en este documento?")
      print(result)
    
    if __name__ == "__main__":
      asyncio.run(run())
    

  • Construir una tubería (pipeline) RAG: Combina LLMs con contexto recuperado para obtener respuestas precisas y relevantes. ```python # Ejemplo de una tubería RAG import asyncio from pydantic import BaseModel from ragbits.core.embeddings import LiteLLMEmbedder from ragbits.core.llms import LiteLLM from ragbits.core.prompt import Prompt from ragbits.core.vector_stores import InMemoryVectorStore from ragbits.document_search import DocumentSearch

    class QuestionAnswerPromptInput(BaseModel): question: str context: list[str]

    class QuestionAnswerPromptOutput(BaseModel): answer: str

    class QuestionAnswerPrompt(Prompt[QuestionAnswerPromptInput, QuestionAnswerPromptOutput]): system_prompt = """ Eres un agente de respuesta a preguntas. Responde la pregunta que se proporcionará utilizando el contexto. Si en el contexto dado no hay suficiente información, niégate a responder. """ user_prompt = """ Pregunta: {{ question }} Contexto: {% for item in context %} {{ item }} {%- endfor %} """

    embedder = LiteLLMEmbedder(model_name="text-embedding-3-small") vector_store = InMemoryVectorStore(embedder=embedder) document_search = DocumentSearch(vector_store=vector_store) llm = LiteLLM(model_name="gpt-4.1-nano", use_structured_output=True)

    async def run() -> None: question = "¿Cuáles son los hallazgos clave presentados en este documento?"

    await document_search.ingest("web://https://arxiv.org/pdf/1706.03762") result = await document_search.search(question)

    prompt = QuestionAnswerPrompt( QuestionAnswerPromptInput( question=question

Artículo original: Ver original

Compartir este artículo