ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment construire un RAG hybride avec recherche locale + API
Tutoriel

Comment construire un RAG hybride avec recherche locale + API

Apprenez à construire un système RAG qui recherche d'abord un index de documents local et se rabat sur une API de recherche pour les questions en dehors du corpus.

Obtenez une clé API gratuiteDocumentation API

Les systèmes RAG qui ne recherchent que dans un index local ne peuvent pas répondre aux questions en dehors de leur corpus. Ce tutoriel construit un système de récupération hybride : recherche locale de documents pour les questions de domaine connu (rapide, gratuit, privé) avec repli automatique vers l'API de recherche de Scavio pour les questions ouvertes (données web actuelles). Le seuil de confiance détermine quand effectuer le repli, et les étiquettes de source permettent au LLM d'attribuer correctement les réponses.

Prérequis

  • Python 3.8+ installé
  • Un index de recherche local (Meilisearch, Elasticsearch ou SQLite FTS)
  • bibliothèque requests installée
  • Une clé API Scavio depuis scavio.dev

Parcours

Étape 1: Configurer la fonction de recherche locale

Définissez une fonction qui recherche dans votre index local et renvoie des résultats avec des scores de confiance.

Python
# Example with Meilisearch (replace with your index):
import meilisearch

local_client = meilisearch.Client('http://localhost:7700')

def local_search(query: str, top_k: int = 3) -> list:
    results = local_client.index('docs').search(query, {'limit': top_k})
    return [{
        'text': hit['content'],
        'title': hit.get('title', ''),
        'score': hit.get('_rankingScore', 0),
        'source': 'local'
    } for hit in results['hits']]

Étape 2: Configurer la fonction de recherche via API

Définissez une fonction qui recherche via Scavio lorsque les résultats locaux sont insuffisants.

Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}

def api_search(query: str, platform: str = 'google') -> list:
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'platform': platform, 'query': query}, timeout=10)
    return [{
        'text': r.get('snippet', ''),
        'title': r.get('title', ''),
        'url': r.get('link', ''),
        'source': 'web'
    } for r in resp.json().get('organic', [])[:3]]

Étape 3: Construire le récupérateur hybride

Aiguiller vers local ou API selon le seuil de confiance.

Python
CONFIDENCE_THRESHOLD = 0.7

def hybrid_retrieve(query: str) -> dict:
    local_results = local_search(query)
    if local_results and local_results[0]['score'] >= CONFIDENCE_THRESHOLD:
        return {'source': 'local', 'results': local_results}
    web_results = api_search(query)
    if web_results:
        return {'source': 'web', 'results': web_results}
    return {'source': 'none', 'results': local_results or []}

Étape 4: Formater le contexte pour le LLM

Construire une chaîne de contexte de prompt avec des étiquettes de source pour l'attribution.

Python
def format_context(retrieval: dict) -> str:
    source_label = 'Internal docs' if retrieval['source'] == 'local' else 'Web search'
    lines = [f'Source: {source_label}']
    for r in retrieval['results']:
        if r.get('url'):
            lines.append(f"- {r['title']}: {r['text']} (ref: {r['url']})")
        else:
            lines.append(f"- {r['title']}: {r['text']}")
    return '\n'.join(lines)

# Use in your RAG prompt:
# context = format_context(hybrid_retrieve(user_question))
# prompt = f'{context}\n\nQuestion: {user_question}\nAnswer:'

Exemple Python

Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}

def hybrid_rag(query, local_index, threshold=0.7):
    local = local_index.search(query, {'limit': 3})
    if local['hits'] and local['hits'][0].get('_rankingScore', 0) >= threshold:
        return {'source': 'local', 'context': [h['content'] for h in local['hits']]}
    web = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'platform': 'google', 'query': query}, timeout=10).json()
    return {'source': 'web', 'context': [r['snippet'] for r in web.get('organic', [])[:3]]}

Exemple JavaScript

JavaScript
async function hybridRag(query, localIndex, threshold = 0.7) {
  const local = await localIndex.search(query, {limit: 3});
  if (local.hits?.length && local.hits[0]._rankingScore >= threshold) {
    return {source: 'local', context: local.hits.map(h => h.content)};
  }
  const web = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
    body: JSON.stringify({platform: 'google', query})
  }).then(r => r.json());
  return {source: 'web', context: (web.organic || []).slice(0, 3).map(r => r.snippet)};
}

Sortie attendue

JSON
A hybrid RAG retriever that searches local docs first and falls back to web search for out-of-corpus questions.

Tutoriels associés

  • Comment récupérer les résultats de recherche Google en Python

Questions fréquentes

La plupart des développeurs terminent ce tutoriel en 15 à 30 minutes. Vous aurez besoin d'une clé API Scavio (l'offre gratuite suffit) et d'un environnement Python ou JavaScript fonctionnel.

Python 3.8+ installé. Un index de recherche local (Meilisearch, Elasticsearch ou SQLite FTS). bibliothèque requests installée. Une clé API Scavio depuis scavio.dev. Une clé API Scavio vous donne 50 crédits gratuits à l'inscription.

Oui. L'offre gratuite comprend 50 crédits à l'inscription, ce qui est largement suffisant pour terminer ce tutoriel et prototyper une solution fonctionnelle.

Scavio dispose d'un package natif LangChain (langchain-scavio), d'un serveur MCP et d'une API REST simple qui fonctionne avec tout client HTTP. Ce tutoriel utilise the raw REST API, mais vous pouvez l'adapter à votre framework de prédilection.

Ressources connexes

Solution

RAG local avec repli sur l'API de recherche

Read more
Use Case

Application hybride RAG local + API de recherche

Read more
Solution

Améliorez la précision RAG avec la recherche web hybride

Read more
Best Of

Meilleure API de recherche pour applications RAG en 2026

Read more
Best Of

Meilleure API de recherche pour la précision de la RAG en 2026

Read more
Glossary

Index de recherche local pour RAG

Read more

Commencer

Apprenez à construire un système RAG qui recherche d'abord un index de documents local et se rabat sur une API de recherche pour les questions en dehors du corpus.

Obtenez une clé API gratuiteLire la documentation
ScavioScavio

API de recherche en temps réel pour agents IA. Recherchez sur toutes les plateformes, pas seulement Google.

Produit

  • Fonctionnalités
  • Tarifs
  • Tableau de bord
  • Affiliés

Développeurs

  • Documentation
  • Référence API
  • Démarrage rapide
  • Intégration MCP
  • SDK Python

Alternatives

  • Alternative à Tavily
  • Alternative à SerpAPI
  • Alternative à Firecrawl
  • Alternative à Exa

Outils

  • Formateur JSON
  • cURL vers code
  • Compteur de jetons
  • Tous les outils

© 2026 Scavio. Tous droits réservés.

Featured on TAAFT
Conditions d'utilisationPolitique de confidentialité