Una publicación de r/Rag preguntó qué raspador usar para datos RAG de gran tamaño. La reformulación: para el contenido público indexado, las API de búsqueda reemplazan a los scrapers. Sin gestión de proxy, sin luchas anti-bot, JSON estructurado desde el principio.
Requisitos previos
- Clave API de Scavio
- Base de datos de vectores (Chroma, Pinecone o Weaviate)
- Clave API de LLM
Guia paso a paso
Paso 1: Generar consultas semilla
Cree entre 50 y 200 consultas iniciales para su dominio de conocimiento.
seed_queries = [
'AI agent architecture patterns 2026',
'multi-agent orchestration frameworks',
'LLM tool calling best practices',
# ... 50-200 queries covering your domain
]Paso 2: Obtener resultados estructurados de Scavio
Busque en Google + Reddit cada consulta.
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def fetch_sources(query):
google = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}).json()
reddit = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'reddit', 'query': query}).json()
return {'google': google, 'reddit': reddit}Paso 3: Extraer y deduplicar contenido
Extraiga URL únicas, use /extract para ver el contenido completo si es necesario.
seen_urls = set()
def extract_unique(results):
docs = []
for r in results.get('organic_results', []):
if r['link'] not in seen_urls:
seen_urls.add(r['link'])
docs.append({'url': r['link'], 'title': r['title'], 'snippet': r['snippet']})
return docsPaso 4: Fragmentar e incrustar
Divida el contenido en fragmentos y genere incrustaciones.
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
embeddings = OpenAIEmbeddings()
def process_doc(doc):
chunks = splitter.split_text(doc['snippet'])
return [(c, embeddings.embed_query(c)) for c in chunks]Paso 5: Consultar el oleoducto RAG
Incruste la consulta, recupere fragmentos relevantes, genere una respuesta.
def rag_query(question):
q_emb = embeddings.embed_query(question)
# Retrieve top-5 chunks from vector DB
# Feed to LLM with: 'Answer based on these sources: {chunks}'
# Return answer with source URLsEjemplo en Python
# Cost math: 200 seed queries × 2 platforms = 400 API calls = $2
# Each call returns 10 results = 4,000 unique sources
# Top 2,000 via /extract = ~$10 additional
# Total corpus build: ~$12 for 2,000 high-quality documentsEjemplo en JavaScript
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: seedQuery})
});Salida esperada
RAG pipeline sourcing documents from Google + Reddit via Scavio. No scraping infrastructure, no proxy costs, structured JSON throughout.