RAGbits : Développez vos applications GenAI en un éclair
RAGbits : La boîte à outils pour le développement rapide d'applications GenAI
Dans le paysage en pleine mutation de l'IA Générative, les développeurs recherchent constamment des outils robustes et efficaces pour concrétiser leurs applications innovantes. Découvrez RAGbits, une solution open source de deepsense.ai, conçue spécifiquement pour accélérer la création de solutions GenAI fiables et évolutives, en particulier celles exploitant la Génération Augmentée par la Récupération (RAG).
Qu'est-ce que RAGbits ?
RAGbits est un ensemble complet de modules fondamentaux, pensé pour optimiser l'intégralité du cycle de vie du développement d'applications GenAI. Son architecture modulaire et flexible permet aux développeurs d'intégrer uniquement les composants nécessaires, réduisant ainsi les dépendances et améliorant les performances. Le framework est fortement axé sur l'application pratique, fournissant des fonctionnalités solides pour gérer les Grands Modèles Linguistiques (LLM), traiter des types de données variés et déployer des pipelines RAG sophistiqués.
Principales fonctionnalités de RAGbits :
RAGbits se distingue par son puissant éventail de fonctionnalités, permettant aux développeurs de créer des applications IA sophistiquées avec une grande facilité :
🔨 Créez des applications GenAI fiables et évolutives
- Intégration LLM flexible : Basculez en toute fluidité entre plus de 100 LLM via LiteLLM ou intégrez des modèles locaux, offrant une flexibilité inégalée.
- Appels LLM à typage sûr : Utilisez les génériques Python pour garantir une stricte sécurité de type lors des interactions avec les modèles, assurant robustesse et réduction des erreurs.
- Utilisez vos propres magasins de vecteurs : Connectez-vous à des magasins de vecteurs populaires comme Qdrant, PgVector, et bien d'autres, ou intégrez facilement des solutions personnalisées.
- Outils pour développeurs inclus : Accédez à une suite d'outils en ligne de commande pour gérer les magasins de vecteurs, configurer les pipelines de requêtes et tester les invites directement depuis votre terminal.
- Installation modulaire : N'installez que les composants nécessaires, adaptant le framework aux besoins spécifiques de votre projet et améliorant l'efficacité.
📚 Traitement RAG rapide et flexible
- Ingestion de données étendue : Traitez plus de 20 formats de données, y compris les PDF, HTML, feuilles de calcul et présentations. Tirez parti de puissants analyseurs comme Docling et Unstructured, ou implémentez des analyseurs personnalisés.
- Gestion de données complexes : Extrayez du contenu structuré, des tableaux et des images grâce au support intégré des Modèles de Langage Visuels (VLM).
- Connectivité à n'importe quelle source de données : Utilisez des connecteurs pré-intégrés pour les services de stockage cloud comme S3, GCS et Azure, ou développez vos propres connecteurs.
- Ingestion évolutive : Traitez efficacement de grands ensembles de données grâce au traitement parallèle basé sur Ray pour une intégration rapide des données.
🚀 Déploiement et surveillance en toute confiance
- Observabilité en temps réel : Suivez les performances des applications et obtenez des informations grâce à OpenTelemetry et une analyse CLI complète.
- Tests intégrés : Validez et affinez vos invites avec les tests
promptfoo
intégrés avant de déployer vos applications. - Optimisation automatique : Évaluez et optimisez en permanence les performances des modèles grâce à des processus systématiques.
- Interface utilisateur de Chat : Déployez une interface de chatbot prête à l'emploi avec API, persistance des données et mécanismes de feedback utilisateur.
Premiers pas avec RAGbits
L'installation est simple. Vous pouvez démarrer rapidement avec une simple commande pip
:
pip install ragbits
Cette commande installe un pack de démarrage, comprenant ragbits-core
(outils fondamentaux), ragbits-agents
(pour les systèmes agentiques), ragbits-document-search
(recherche et ingestion), ragbits-evaluate
(évaluation unifiée), ragbits-chat
(IA conversationnelle) et ragbits-cli
(interface en ligne de commande). Alternativement, les composants individuels peuvent être installés selon les besoins.
Exemples pratiques :
La documentation de RAGbits fournit des guides de démarrage rapide clairs, illustrant des cas d'utilisation courants. Voici un aperçu de sa simplicité :
-
Définir et exécuter des invites LLM : Définissez facilement des invites typées et générez des réponses à partir de votre LLM choisi.
# Exemple de génération d'invite 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 = """ Vous êtes un agent de réponse aux questions. Répondez à la question au mieux de vos capacités. """ user_prompt = """ Question: {{ question }} """ llm = LiteLLM(model_name="gpt-4.1-nano", use_structured_output=True) async def main() -> None: prompt = QuestionAnswerPrompt(QuestionAnswerPromptInput(question="Qu'est-ce que la mémoire haute et la mémoire basse sous Linux ?")) response = await llm.generate(prompt) print(response.answer) if __name__ == "__main__": asyncio.run(main())
-
Construire un index de magasin de vecteurs : Ingérez des documents et interrogez votre base de connaissances personnalisée.
# Exemple de recherche de document 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("Quelles sont les principales conclusions présentées dans cet article ?") print(result) if __name__ == "__main__": asyncio.run(run())
-
Construire un pipeline RAG : Combinez les LLM avec le contexte récupéré pour des réponses précises et pertinentes.
# Exemple d'un pipeline 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 = """ Vous êtes un agent de réponse aux questions. Répondez à la question qui vous sera fournie en utilisant le contexte. Si le contexte donné ne contient pas suffisamment d'informations, refusez de répondre. """ user_prompt = """ Question: {{ question }} Contexte: {% 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 = "Quelles sont les principales conclusions présentées dans cet article ?" await document_search.ingest("web://https://arxiv.org/pdf/1706.03762") result = await document_search.search(question) prompt = QuestionAnswerPrompt( QuestionAnswerPromptInput( question=question