Sections de la base de connaissances ▾

Navigation

▸ Commencez ici Par rôles

Catégories

Outils 32
Glossaire 12

Outils

LlamaIndex + Gonka AI — Applications RAG pour une bouchée de pain

LlamaIndex est le framework de référence pour la construction d'applications RAG et d'agents IA en Python (il existe également une version TypeScript : LlamaIndex.TS). Il gère le chargement des documents, le découpage en chunks, l'indexation, la recherche vectorielle et la compilation des réponses ; vous décrivez vos données et LlamaIndex les transforme en un système de questions-réponses exploitant n'importe quel LLM.

Le seul problème est le coût de l'inferenced. Le RAG est intrinsèquement gourmand : pour chaque question, le modèle reçoit la requête ainsi que plusieurs fragments de contexte extraits, et pour l'indexation de grandes collections, des embeddings s'ajoutent. En production, cela représente des milliers de requêtes par jour. Avec OpenAI (2,50 $–15 $ pour 1M de tokens) ou Anthropic (3 $–15 $ pour 1M), même un service de questions-réponses modeste peut générer des dizaines de milliers de dollars par mois.

LlamaIndex fonctionne nativement avec tout endpoint compatible OpenAI via la classe OpenAILike. Cela signifie que JoinGonka Gateway s'intègre en quelques lignes, sans providers personnalisés ni correctifs. Résultat : le même système RAG fonctionne pour 0,003 $ / 1M de tokens en entrée (sortie ×3) via le réseau décentralisé Gonka — des centaines à des milliers de fois moins cher que les API cloud.

Démarrage rapide : connexion via OpenAILike

Clé API JoinGonka : inscrivez-vous sur gate.joingonka.ai/register — nous vous offrons 10M de tokens gratuits au départ — et créez une clé jg-xxx dans le Dashboard.

Installation :

pip install llama-index llama-index-llms-openai-like

Pour toute API compatible OpenAI, LlamaIndex fournit la classe OpenAILike via le package llama_index.llms.openai_like. Exemple minimal de requête à Gonka :

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-votre-cle",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,            # Gonka est un chat-endpoint
    is_function_calling_model=True, # tool calling natif supporté
    context_window=200000,         # 200K pour les modèles du réseau
    max_tokens=8192,               # limite de sortie via Gateway
)

response = llm.complete("Explique ce qu'est le RAG en trois phrases.")
print(response)

Important concernant OpenAILike : spécifiez impérativement is_chat_model=True — sinon LlamaIndex tentera d'utiliser un completion-endpoint que nous ne proposons pas. is_function_calling_model=True active le tool calling natif. Définissez context_window selon le modèle pour que LlamaIndex segmente correctement le contexte.

Exemple : pipeline RAG avec moteur de requête

Le scénario classique de LlamaIndex est la création d'un index sur vos documents et les requêtes via un query_engine. La LLM globale est configurée une fois via Settings.llm, puis tout le pipeline utilise Gonka automatiquement.

from llama_index.core import (
    VectorStoreIndex,
    SimpleDirectoryReader,
    Settings,
)
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# 1. LLM via Gonka (une seule fois - globalement)
Settings.llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-votre-cle",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    context_window=200000,
    max_tokens=8192,
)

# 2. Embeddings locaux (gratuit, sans OpenAI)
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)

# 3. Chargement et indexation des documents depuis ./data
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)

# 4. Requête sur la base de connaissances
query_engine = index.as_query_engine()
response = query_engine.query("De quoi parle ce document ?")
print(response)

Nuance critique sur les embeddings : par défaut, VectorStoreIndex utilise les embeddings d'OpenAI (text-embedding-ada-002) — il s'agit d'appels payants distincts vers OpenAI, et non vers Gonka. Pour vous affranchir totalement d'OpenAI, configurez un modèle d'embeddings local via Settings.embed_model (comme dans l'exemple ci-dessus — HuggingFaceEmbedding, package pip install llama-index-embeddings-huggingface). La génération se fait alors via Gonka, et la vectorisation localement et gratuitement.

Coût : une requête de pipeline RAG (recherche + génération) consomme ~2–5K tokens LLM. Via Gonka, cela ne représente qu'une fraction de centime ; via OpenAI/Anthropic — c'est 3 à 4 ordres de grandeur plus cher. Sur un flux de milliers de requêtes par jour, la différence représente des dizaines de milliers de dollars d'économie par mois.

Comparaison des coûts de charge RAG

Une application RAG n'est pas un chat ponctuel, mais un flux constant de requêtes : chaque question utilisateur consomme 2 à 5K tokens LLM (la question elle-même plus les fragments de contexte trouvés). Calculons les volumes typiques et leurs coûts sur différents fournisseurs. Tarifs Gonka via JoinGonka Gateway : entrée ~0,003 $ / 1M, sortie ×3.

ScénarioTokens LLMOpenAI / AnthropicJoinGonka Gonka
Une question à la base de connaissances~4K0,01 $ – 0,06 $~0,00002 $
Chatbot de support (1K requêtes/jour)~4M/jour10 $ – 60 $ / jour~0,019 $ / jour
Indexation + Q&A sur corpus (1M mots)~5M12 $ – 75 $~0,024 $
Service production, 50K requêtes/mois~200M/mois500 $ – 3 000 $ / mois~0,96 $ / mois

Avec les 10M de tokens gratuits, vous pouvez déboguer l'ensemble du pipeline RAG, indexer un corpus de test et lancer des milliers de requêtes sans dépenser un centime. En volume de production, JoinGonka Gateway transforme le RAG d'un service coûteux en une ligne de dépense quasi négligeable.

Agents, appel d'outils et sélection de modèle

LlamaIndex sait non seulement répondre à partir de documents, mais aussi construire des agents avec des outils. Les deux modèles Gonka supportent le tool calling natif — les agents appellent des fonctions de manière structurée, sans parsing de texte. Exemple d'agent avec un outil :

import asyncio
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-votre-cle",
    model="MiniMaxAI/MiniMax-M2.7",
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=200000,
    max_tokens=8192,
)

def multiply(a: float, b: float) -> float:
    """Multiplie deux nombres."""
    return a * b

agent = FunctionAgent(
    tools=[multiply],
    llm=llm,
    system_prompt="Tu es un assistant utile. Utilise des outils pour les calculs.",
)

async def main():
    result = await agent.run("Combien font 1234 multiplié par 5678 ?")
    print(result)

asyncio.run(main())

Choix du modèle (champ model et limites context_window / max_tokens correspondantes) :

Modèle (model)ContexteSortie maxQuand l'utiliser
moonshotai/Kimi-K2.6200K8192Défaut : raisonnement puissant, tool calling, agents
MiniMaxAI/MiniMax-M2.7200K8192RAG, contexte long, réponses longues

La limite max_tokens via Gateway est jusqu'à 8192 pour tous les modèles du réseau. Si max_tokens n'est pas spécifié pour une requête non-streaming, 1500 tokens seront renvoyés par défaut — pour les réponses RAG et les étapes d'agent, définissez explicitement la valeur.

TypeScript : pour LlamaIndex.TS, il existe un chemin équivalent — la classe OpenAI du package @llamaindex/openai accepte baseURL et apiKey (ou lit les variables OPENAI_BASE_URL / OPENAI_API_KEY), donc la même Gateway se connecte également dans la stack Node.js. Si vous construisez des applications AI avec des frameworks Python, consultez également le guide sur LangChain.

LlamaIndex + Gonka = RAG et agents prêts pour la production pour une fraction de centime. Connexion via OpenAILike (is_chat_model=True), tool calling natif, embeddings locaux — 0,003 $ / 1M en entrée contre 2,50 $–15 $ chez OpenAI. 10M de tokens gratuits suffisent pour déboguer tout le pipeline.

Vous voulez en savoir plus ?

Explorez d'autres sections ou commencez à gagner des GNK dès maintenant.

Obtenez 10 millions de jetons gratuits →