Resumen
Consulta your local RAG index first. Si el resultado es stale (older than umbral) o confidence es low, fall back to un live search API for fresh datos. Combines local speed con API freshness.
Desencadenador
On usuario consulta
Programación
On-demand (per consulta)
Pasos del flujo de trabajo
Consulta local vector almacenar
Search local embeddings for el usuario consulta.
Verificar freshness y confidence
Si top resultado es older than 7 dias o similarity puntuacion es below 0.7, mark as stale.
Fall back to search API
Si stale, consulta live search API for fresh resultados.
Fusionar y clasificar
Combine local y API resultados, deduplicate, clasificar by relevance.
Implementacion en Python
import requests, os
from datetime import datetime, timedelta
H = {"x-api-key": os.environ["SCAVIO_API_KEY"]}
FRESHNESS_DAYS = 7
def hybrid_search(query, local_results):
# Check if local results are fresh enough
now = datetime.now()
fresh_local = [r for r in local_results
if (now - r.get("indexed_at", now)).days < FRESHNESS_DAYS
and r.get("score", 0) > 0.7]
if fresh_local:
return {"source": "local", "results": fresh_local}
# Fallback to live API
data = requests.post("https://api.scavio.dev/api/v1/search",
headers=H, json={"platform": "google", "query": query}).json()
api_results = [{"title": r["title"], "url": r["link"], "snippet": r.get("snippet", "")}
for r in data.get("organic_results", [])[:5]]
return {"source": "api_fallback", "results": api_results}Implementacion en JavaScript
const search = async (query, localResults) => {
const fresh = localResults.filter(r => r.score > 0.7 && r.daysOld < 7);
if (fresh.length > 0) return {source: "local", results: fresh};
const r = 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})
});
return {source: "api", results: (await r.json()).organic_results?.slice(0, 5)};
};Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA