El problema
Las aplicaciones RAG que solo buscan un índice de documentos local no pueden responder preguntas fuera de su corpus. Los usuarios preguntan sobre eventos actuales, información de la competencia o temas no cubiertos en los documentos indexados, y el sistema alucina con los datos de entrenamiento del LLM o responde "No lo sé". Ambas respuestas son insatisfactorias y empujan a los usuarios a volver a la búsqueda manual.
La solucion de Scavio
Implemente una estrategia de recuperación híbrida: busque primero en el índice local y, si la puntuación de relevancia del resultado principal está por debajo de un umbral, recurra a la API de búsqueda de Scavio para obtener resultados web en vivo. El índice local maneja consultas de dominios conocidos con alta precisión y costo de latencia cero. La API de búsqueda maneja todo lo demás con datos web actuales. Combine ambos conjuntos de resultados en el contexto del LLM con etiquetas de origen claras para que el modelo pueda atribuir su respuesta correctamente.
Antes
Antes del enfoque híbrido, un robot de conocimiento de la empresa solo podía responder preguntas sobre documentos internos. Cuando un cliente preguntó "¿cómo se comparan sus precios con los del competidor X?", el robot alucinó con una comparación o dijo que no podía ayudar. Los usuarios aprendieron a no confiar en el bot para nada más que las búsquedas básicas de preguntas frecuentes.
Después
Después de agregar el respaldo de la API de búsqueda, el bot primero verifica los documentos internos. Si la confianza de la búsqueda local es baja, consulta a Scavio sobre la página de precios actual del competidor y genera una comparación precisa. Los usuarios ahora confían en el bot para preguntas tanto internas como externas, y el uso se triplicó.
Para quien es
Desarrolladores que crean aplicaciones RAG que necesitan responder preguntas más allá de su corpus de documentos local sin alucinar ni negarse.
Beneficios clave
- La búsqueda local primero mantiene la mayoría de las consultas rápidas y gratuitas
- El respaldo de la API de búsqueda cubre preguntas fuera del corpus
- El umbral de relevancia evita llamadas API innecesarias
- Las etiquetas de origen en contexto permiten una atribución precisa
- Degradación elegante en lugar de alucinación o rechazo
Ejemplo en Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
CONFIDENCE_THRESHOLD = 0.7
def hybrid_retrieve(query: str, local_index) -> dict:
# Search local index first
local_results = local_index.search(query, top_k=3)
if local_results and local_results[0].score >= CONFIDENCE_THRESHOLD:
return {'source': 'local', 'results': [r.text for r in local_results]}
# Fallback to Scavio
resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}, timeout=10)
web_results = resp.json().get('organic', [])[:3]
return {'source': 'web', 'results': [f"{r['title']}: {r['snippet']}" for r in web_results]}
# Use in RAG pipeline:
# context = hybrid_retrieve(user_question, my_meilisearch_index)
# prompt = f"Source: {context['source']}\n{chr(10).join(context['results'])}\nQuestion: {user_question}"Ejemplo en JavaScript
const CONFIDENCE_THRESHOLD = 0.7;
async function hybridRetrieve(query, localIndex) {
const localResults = await localIndex.search(query, { limit: 3 });
if (localResults.hits?.length && localResults.hits[0]._rankingScore >= CONFIDENCE_THRESHOLD) {
return { source: 'local', results: localResults.hits.map(h => h.content) };
}
const resp = 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 })
});
const data = await resp.json();
return { source: 'web', results: (data.organic || []).slice(0, 3).map(r => `${r.title}: ${r.snippet}`) };
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit
YouTube
Búsqueda de videos con transcripciones y metadatos