El problema
Las canalizaciones RAG de vector puro solo se recuperan de un corpus interno estático. Cuando los usuarios preguntan sobre eventos actuales, precios de la competencia, información pública o cualquier cosa que no esté en el corpus, el sistema alucina o responde "No sé", aunque la respuesta esté disponible públicamente.
La solucion de Scavio
Implemente RAG híbrido: enrute cada consulta a través de una base de datos vectorial (para documentos internos) y una API de búsqueda en vivo (para datos públicos actuales). Fusione y vuelva a clasificar los resultados de ambas fuentes, luego proporcione el contexto combinado al LLM. Utilice la clasificación de consultas para determinar si una consulta necesita recuperación interna, búsqueda externa o ambas.
Antes
Antes del RAG híbrido, un agente de atención al cliente solo tenía acceso a la documentación interna. Cuando un cliente preguntó sobre los precios actuales de un competidor, el agente alucinó con un número desactualizado o dijo "No tengo esa información" a pesar de que estaba disponible públicamente en el sitio web del competidor.
Después
Después de agregar la búsqueda en vivo, el agente consulta la base de datos vectorial en busca de documentos internos Y Scavio en busca de datos públicos actuales. Cuando se le pregunta sobre los precios de la competencia, recupera el precio actual de una búsqueda en vivo en Google y lo combina con documentos internos de análisis competitivo para brindar una respuesta precisa y completa.
Para quien es
Ingenieros de inteligencia artificial que crean asistentes con tecnología RAG que necesitan responder preguntas sobre documentación interna e información pública actual.
Beneficios clave
- Responde preguntas sobre actualidad y datos públicos
- Combina conocimiento propio con datos de mercado en vivo
- Reduce las alucinaciones para consultas urgentes
- El enrutamiento de consultas evita llamadas innecesarias a la API de búsqueda para preguntas solo internas
- Los resultados de búsqueda estructurados se integran claramente con las ventanas contextuales de RAG
Ejemplo en Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def hybrid_retrieve(query: str, vector_db, k: int = 5) -> list[dict]:
# Step 1: Classify query
needs_external = _needs_live_search(query)
# Step 2: Always retrieve from vector DB
internal_docs = vector_db.similarity_search(query, k=k)
context = [{'source': 'internal', 'text': doc.page_content} for doc in internal_docs]
# Step 3: Optionally add live search results
if needs_external:
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}, timeout=10).json()
for result in r.get('organic', [])[:3]:
context.append({
'source': 'web', 'title': result.get('title'),
'text': result.get('snippet'), 'url': result.get('link')
})
return context
def _needs_live_search(query: str) -> bool:
live_signals = ['current', 'latest', 'price', '2026', 'today', 'now', 'competitor']
return any(s in query.lower() for s in live_signals)Ejemplo en JavaScript
async function hybridRetrieve(query, vectorDb, k = 5) {
const needsExternal = /current|latest|price|2026|today|competitor/i.test(query);
const internalDocs = await vectorDb.similaritySearch(query, k);
const context = internalDocs.map(doc => ({ source: 'internal', text: doc.pageContent }));
if (needsExternal) {
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 })
}).then(r => r.json());
for (const result of (r.organic || []).slice(0, 3)) {
context.push({ source: 'web', title: result.title, text: result.snippet, url: result.link });
}
}
return context;
}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
Amazon
Búsqueda de productos con precios, calificaciones y reseñas