Construire un RAG avec Agno
Créez votre premier pipeline RAG fonctionnel avec le framework Agno : Knowledge Base, embeddings, vector search hybride et Agent intelligent.
Pourquoi Agno ?
Agno (anciennement Phidata) est un framework Python open-source pour construire des agents IA. Il simplifie énormément la mise en place d''un pipeline RAG en fournissant des composants prêts à l''emploi : Knowledge Base, Vector DB, Embeddings, et Agents.
Avantages d''Agno pour le RAG
| Fonctionnalité | Description |
|---|---|
| Knowledge Base intégrée | Charge PDF, texte, URLs automatiquement |
| Chunking automatique | Découpage intelligent des documents |
| Recherche hybride | Sémantique + mots-clés en une ligne |
| 25+ Vector DBs | LanceDB, PgVector, Pinecone, Weaviate... |
| Multi-modèles | OpenAI, Claude, Gemini, Llama... |
Installation
# Installation minimale pour le RAG
pip install agno openai lancedb tantivy pypdf
# tantivy = moteur de recherche full-text (nécessaire pour la recherche hybride)
# pypdf = lecture de fichiers PDF
LanceDB est recommandé pour débuter car il est embarqué (pas de serveur à installer). Les données sont stockées dans un dossier local. En production, utilisez PgVector (extension PostgreSQL).
Votre Premier RAG en 20 Lignes
from agno.agent import Agent
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.knowledge import Knowledge
from agno.models.openai import OpenAIResponses
from agno.vectordb.lancedb import LanceDb, SearchType
# 1. Configurer la Knowledge Base
knowledge = Knowledge(
vector_db=LanceDb(
uri="tmp/lancedb", # Dossier local pour les données
table_name="mes_documents", # Nom de la table
search_type=SearchType.hybrid, # Sémantique + mots-clés
embedder=OpenAIEmbedder(id="text-embedding-3-small"),
),
)
# 2. Charger des documents
knowledge.insert(url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf")
# 3. Créer l''Agent avec la Knowledge Base
agent = Agent(
model=OpenAIResponses(id="gpt-4o"),
knowledge=knowledge,
instructions="Cherche dans ta base de connaissances avant de répondre. Sois concis.",
markdown=True,
)
# 4. Poser une question
agent.print_response("Comment préparer un Pad Thai ?", stream=True)
Ce qui se passe sous le capot
En 20 lignes, vous avez un pipeline RAG complet : ingestion de PDF, chunking automatique, embeddings, recherche hybride et génération de réponse. Agno gère toute la plomberie.
Charger Différentes Sources de Données
Depuis un fichier PDF local
Depuis une URL
Depuis du texte brut
knowledge.insert(text="""
Le RAG (Retrieval Augmented Generation) est une technique qui combine
la recherche d''information avec la génération de texte par un LLM.
Il permet de réduire les hallucinations en ancrant les réponses
dans des documents réels.
""")
Depuis plusieurs fichiers
import glob
for pdf_path in glob.glob("./documents/*.pdf"):
knowledge.insert(path=pdf_path)
print(f"Indexé : {pdf_path}")
Configurer le Modèle LLM
Agno supporte tous les grands fournisseurs de LLMs :
OpenAI
from agno.models.openai import OpenAIResponses
model = OpenAIResponses(id="gpt-4o") # Le plus capable
model = OpenAIResponses(id="gpt-4o-mini") # Rapide et pas cher
Claude (Anthropic)
Gemini (Google)
Modèle local (Ollama)
Pour le RAG, le choix du modèle d''embedding est plus important que le choix du LLM. Un bon embedding récupère les bons documents, et même un LLM moyen donnera une bonne réponse avec le bon contexte.
Configurer les Embeddings
OpenAI (recommandé pour débuter)
from agno.knowledge.embedder.openai import OpenAIEmbedder
embedder = OpenAIEmbedder(id="text-embedding-3-small") # 1536 dims, pas cher
embedder = OpenAIEmbedder(id="text-embedding-3-large") # 3072 dims, meilleur
Cohere (excellent en multilingue)
from agno.knowledge.embedder.cohere import CohereEmbedder
embedder = CohereEmbedder(id="embed-v4.0")
Types de Recherche
Recherche sémantique uniquement
Recherche hybride (recommandée)
Recherche par mots-clés uniquement
Utilisez toujours la recherche hybride sauf raison spécifique. Elle combine le meilleur des deux mondes : compréhension du sens + précision des mots-clés.
Exercice Pratique : RAG sur Votre Documentation
Créez un agent qui répond aux questions sur votre propre documentation.
Étape 1 : Préparer l''environnement
mkdir mon-rag && cd mon-rag
pip install agno openai lancedb tantivy pypdf
export OPENAI_API_KEY="sk-..."
Étape 2 : Créer le script
# mon_rag.py
from agno.agent import Agent
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.knowledge import Knowledge
from agno.models.openai import OpenAIResponses
from agno.vectordb.lancedb import LanceDb, SearchType
# Knowledge Base
knowledge = Knowledge(
vector_db=LanceDb(
uri="tmp/lancedb",
table_name="ma_doc",
search_type=SearchType.hybrid,
embedder=OpenAIEmbedder(id="text-embedding-3-small"),
),
)
# Charger vos documents (remplacez par vos fichiers)
knowledge.insert(text="""
# FAQ Entreprise
## Comment poser des congés ?
Connectez-vous sur l''intranet > RH > Congés. Sélectionnez les dates
et validez. Votre manager recevra une notification et devra approuver
dans les 48h.
## Quel est le dress code ?
Le dress code est smart casual du lundi au jeudi.
Le vendredi est casual. Les réunions clients nécessitent une tenue formelle.
## Comment réserver une salle de réunion ?
Utilisez l''application Outlook ou Google Calendar. Les salles sont
préfixées par l''étage : S1-A, S2-B, etc. Réservez au minimum 30 min
à l''avance.
""")
# Agent
agent = Agent(
model=OpenAIResponses(id="gpt-4o-mini"),
knowledge=knowledge,
instructions=[
"Tu es l''assistant RH de l''entreprise.",
"Cherche TOUJOURS dans ta base de connaissances avant de répondre.",
"Si l''information n''est pas dans tes documents, dis-le clairement.",
"Réponds en français, de manière concise et professionnelle.",
],
markdown=True,
)
# Boucle de chat
print("Assistant RH (tapez ''quit'' pour quitter)\n")
while True:
question = input("Vous : ")
if question.lower() == "quit":
break
agent.print_response(question, stream=True)
print()
Étape 3 : Tester
python mon_rag.py
# Vous : Comment je pose mes congés ?
# → "Connectez-vous sur l''intranet > RH > Congés..."
# Vous : C''est quoi le dress code le vendredi ?
# → "Le vendredi est casual."
# Vous : Quel est le salaire moyen ?
# → "Je n''ai pas cette information dans ma base de connaissances."
L''agent refuse de répondre quand l''info n''est pas dans ses documents. C''est exactement le comportement souhaité : pas d''hallucination.
Pour Aller Plus Loin
- Ajoutez vos vrais fichiers PDF et testez la qualité des réponses
- Essayez différents modèles d''embedding et comparez les résultats
- Prochain cours : RAG avancé avec Agno — agentic RAG, reranking, production
Specialiste IA — Master Intelligence Artificielle
Diplome d'un Master en Intelligence Artificielle, je travaille au quotidien sur des projets IA en entreprise. J'ai cree IwanttolearnAI pour rendre l'apprentissage de l'IA accessible a tous, gratuitement.
Continuer a apprendre
Stratégies de Chunking et Indexation pour le RAG
La qualité d'un RAG repose à 80% sur le chunking. Découvrez comment découper vos documents pour maximiser la pertinence des réponses de votre agent IA.
GraphRAG et Hybrid Search : BM25 + Vecteur
Le RAG vectoriel pur a ses limites. Hybrid search (BM25 + embedding) et GraphRAG résolvent les cas complexes — apprenez à les implémenter avec Agno et LanceDB.
Vector Databases : pgvector vs Pinecone vs Weaviate : Comparatif Complet
pgvector, Pinecone, Weaviate, LanceDB, Qdrant… comment choisir sa vector database ? Comparatif complet avec intégration Agno et cas pratique Supabase.