Sans KYC — pas de pièce d'identité, pas de selfie, pas de documents. Payez en crypto : BTC, USDT, USDC, ETH, SOL, LTC
Langue: Français
Obtenir une clé API

Cas d'usage · retrieval-augmented generation · sources fraîches

RAG depuis le web en direct : retrieval par une recherche, réponse avec citations

Un index vectoriel contient ce que vous avez chargé le mois dernier. Certaines questions exigent ce que dit le web aujourd'hui. Le RAG sur le web en direct fait le retrieval au moment de la question : une recherche, les meilleures pages en Markdown, quelques chunks dans le prompt, et des citations renvoyant à chaque page.

Dernière mise à jour: · 7 min de lecture

Réponse rapide

Comment faire du RAG avec des résultats de recherche web en direct ?

Lancez une recherche web au moment de la question, lisez les meilleures pages, découpez-les en chunks, gardez les plus pertinents et demandez au modèle de répondre avec des citations numérotées. LLMWebSearch gère les deux premières étapes en un seul appel : résultats classés avec les 3 premières pages en Markdown, pour un crédit, à partir de 1,20 $US/1K requêtes. Sans KYC ; paiement en crypto.

Qu'est-ce que le RAG sur le web en direct ?

C'est du retrieval-augmented generation où l'étape de retrieval est une recherche web plutôt qu'une recherche dans votre propre index. La question part vers une API de recherche, l'API renvoie des pages, et le modèle répond à partir de ces pages.

Le schéma convient aux questions sur ce qui change : prix, sorties, règles, calendriers et actualités. Il convient aussi aux questions de longue traîne que vos propres documents n'ont jamais couvertes. Le coût est d'une recherche par question, ou deux quand la première échoue.

Quand faut-il récupérer du frais et quand faut-il stocker ?

Stockez ce qui est stable et vous appartient ; récupérez ce qui change. Les manuels produit, les politiques internes et vos propres documents ont leur place dans un index vectoriel, rafraîchi selon un calendrier. Les prix des concurrents, les réglementations et l'actualité relèvent du retrieval en direct.

De nombreuses équipes combinent les deux. Elles interrogent d'abord leur propre index et n'appellent le web que lorsque l'index n'a pas de bonne correspondance, ou lorsque la question mentionne une date récente.

Si vous décidez de conserver les pages récupérées, notez notre position : Nous n'entraînons aucun modèle sur vos requêtes ni sur ce que renvoie l'API, et nous n'ajoutons aucune règle de notre cru contre la conservation des résultats ; les droits des sites dont vous lisez les pages s'appliquent toujours. Vérifiez les conditions de chaque site avant de constituer une copie permanente de son contenu.

Comment transformer des résultats de recherche en chunks ?

Découpez chaque page sur ses titres, puis ramenez les longues sections à une longueur fixe. Le Markdown facilite cela, car les titres sont des lignes qui commencent par #. Conservez l'URL source et le titre sur chaque chunk pour que les citations survivent au découpage.

L'exemple ci-dessous effectue une recherche, lit trois pages, les découpe en chunks et retient les six chunks qui partagent le plus de mots avec la question. Remplacez le comptage de mots par votre modèle d'embedding en production ; la structure reste identique.

Python : retrieval sur le web en direct avec chunks et sources numérotées
import os
import re

import requests

API = "https://llmwebsearch.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}


def live_chunks(query, read=3, chunk_len=1200):
    """Search, then cut each page that was read into heading-based chunks tagged with its source."""
    body = {"q": query, "max_results": 5, "read": read, "max_chars": 12000}
    results = requests.post(API, headers=HEADERS, json=body, timeout=60).json()["results"]
    chunks = []
    for r in results:
        if r.get("content_status") != "ok":
            continue
        for section in re.split(r"\n(?=#{1,3} )", r["content"]):
            section = section.strip()
            for start in range(0, len(section), chunk_len):
                chunks.append({"url": r["url"], "title": r["title"], "text": section[start:start + chunk_len]})
    return chunks


def top_chunks(chunks, question, k=6):
    """A plain keyword score; swap in your embedding model for better ranking."""
    words = set(re.findall(r"\w{4,}", question.lower()))

    def score(chunk):
        return sum(1 for w in re.findall(r"\w{4,}", chunk["text"].lower()) if w in words)

    return sorted(chunks, key=score, reverse=True)[:k]


def build_prompt(question):
    picked = top_chunks(live_chunks(question), question)
    urls = list(dict.fromkeys(c["url"] for c in picked))
    blocks = [f"[{urls.index(c['url']) + 1}] {c['title']}\n{c['text']}" for c in picked]
    sources = "\n".join(f"[{i}] {u}" for i, u in enumerate(urls, 1))
    return (
        "Use only the context to answer and cite sources as [n].\n\n"
        + "\n\n".join(blocks)
        + f"\n\nSources:\n{sources}\n\nQuestion: {question}"
    )

Combien de pages chaque question doit-elle lire ?

Trois est un bon départ, et cela maintient la recherche à un crédit. La plupart des questions factuelles trouvent leur réponse dans les deux ou trois premières pages d'une bonne requête.

Demandez des pages plus longues que dans un agent de chat, car le chunker écartera de toute façon l'essentiel du texte. Un max_chars de 10 000 à 15 000 par page donne au ranker de quoi choisir. Si la réponse dépend d'un site connu, ajoutez-le avec include_domains plutôt que de lire plus de pages.

Comment faire citer ses sources au modèle ?

Numérotez les sources dans le prompt et demandez les numéros dans la réponse. Une instruction courte suffit : utilisez uniquement le contexte, citez chaque affirmation sous la forme [n] et signalez quand le contexte ne couvre pas la question.

Placez la liste des sources à la fin du prompt, avec une URL par numéro. Affichez ensuite [n] comme lien dans votre interface. Les utilisateurs font confiance aux réponses qu'ils peuvent vérifier, et les citations erronées se repèrent facilement en relecture.

Que faire si une page est bloquée ou vide ?

Ignorez-la et utilisez les autres. Chaque résultat porte un content_status ; seuls les résultats ok ont du texte. Une page peut manquer parce que Notre lecteur respecte robots.txt : il s'annonce comme LLMWebSearch, suit les règles qu'un site écrit pour lui ou pour tous les robots, et laisse de côté le contenu de toute page qu'il n'est pas autorisé à lire.

Quand toutes les pages d'une recherche reviennent vides, réessayez une fois avec une autre requête ou ajoutez include_domains pour un site dont vous savez qu'il est ouvert. Quand un site refuse notre lecteur, le résultat revient sans contenu et avec le statut du site : nous ne résolvons jamais de CAPTCHA, ne nous connectons pas à des comptes et ne contournons ni un blocage ni un paywall.

Combien coûte le RAG sur le web en direct ?

Une recherche par question dans la plupart des cas. Un assistant de support qui répond à 5 000 questions par mois, avec une seconde recherche pour une question sur cinq, utilise environ 6 000 recherches. 25 000 requêtes à 41,25 $US couvre quatre mois de ce type.

Votre modèle lit aussi les chunks que vous lui envoyez. Six chunks de 1 200 caractères ajoutent environ 2 000 tokens par question, ce que vous maîtrisez via la taille et le nombre de chunks.

Quel pack convient à une charge de travail RAG ?

Un crédit par question pour la plupart des pipelines. Les crédits de recherche n'ont pas de date d'expiration : ce que vous n'utilisez pas ce mois-ci est toujours là l'année prochaine.

Essayez

5 000 requêtes

9,25 $US

1,85 $US/1K requêtes

  • Branchez-le sur un agent
  • La même API que le plus grand pack
  • Les crédits n'expirent jamais
Choisir 5 000 requêtes

Builder

25 000 requêtes

41,25 $US

1,65 $US/1K requêtes

  • Un agent de code ou un assistant de recherche
  • Prêt pour MCP, LangChain et n8n
  • Les crédits n'expirent jamais
Choisir 25 000 requêtes

Production

100 000 requêtes

145 $US

1,45 $US/1K requêtes

  • Agents en production
  • Rate limit plus élevé sur demande
  • Les crédits n'expirent jamais
Choisir 100 000 requêtes

Dans chaque formule: 3 meilleures pages lues en Markdown · Filtres par pays, langue, heure et domaine · Appels échoués non facturés · Les crédits n'expirent jamais

RAG sur le web en direct : questions fréquentes

Puis-je utiliser LangChain ou LlamaIndex ?

Oui. La page LangChain et LlamaIndex intègre la recherche comme retriever et comme outil.

Puis-je récupérer le contenu d'URL que je connais déjà ?

Oui, avec l'endpoint extract. Lire des pages dont vous avez déjà les URLs coûte 1 crédit par groupe de 3 pages entamé, renvoyées avec leur contenu, jusqu'à 20 URLs par appel ; les URLs refusées ou en échec ne sont pas comptées.

Est-ce que LLMWebSearch stocke les pages qu'il lit pour moi ?

Non. Chaque appel laisse une ligne de log : l'heure, le compte, les 60 premiers caractères de la requête, le nombre de résultats et de pages renvoyés, et les crédits. Les lignes sont supprimées au bout de 30 jours. Le contenu des pages que nous lisons n'est pas conservé. Le numéro de compte, les commandes, les recharges et les totaux de crédits restent tant que le compte existe, puis seulement le temps que la loi comptable l'exige. Les autorités ne reçoivent des données que lorsqu'une loi nous y oblige.

Puis-je restreindre la récupération à une langue ou un pays ?

Oui. Définissez language et country, par exemple language=de et country=de pour des résultats en allemand depuis l'Allemagne.

À partir de 1,20 $US/1K requêtes · sans KYC

Obtenir une clé API