ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo configurar RAG con búsqueda en lugar de vectores
Tutorial

Cómo configurar RAG con búsqueda en lugar de vectores

Reemplace una base de datos vectorial con una API de búsqueda en vivo para RAG. Configuración más sencilla, datos más actualizados y sin costes de integración. Implementación de Python con Anthropic Claude.

Obtener clave API gratisDocumentacion API

RAG basado en búsqueda reemplaza un almacén de vectores con una llamada API de búsqueda en vivo. En lugar de incrustar documentos y realizar búsquedas de similitudes, consulta la web (o una plataforma) en busca de contenido relevante e inyecta los resultados directamente en el contexto del LLM.

Requisitos previos

  • Python 3.9+
  • Clave API de Scavio
  • SDK antrópico

Guia paso a paso

Paso 1: Comprender la diferencia de patrón

RAG tradicional: incrustar documentos -> almacenar vectores -> búsqueda de similitudes -> inyectar. Buscar RAG: consultar API -> obtener fragmentos -> inyectar. Sin paso de incrustación, sin base de datos vectorial.

Python
# Traditional vector RAG (what you're replacing)
# 1. Embed your corpus (expensive, slow)
# 2. Store in Pinecone/Chroma/Weaviate
# 3. Embed the query
# 4. Cosine similarity search
# 5. Retrieve top-k chunks
# 6. Inject into prompt

# Search RAG (this tutorial)
# 1. Convert question to search query
# 2. Call search API (1 API call, 1 credit)
# 3. Extract top snippets
# 4. Inject into prompt
# Done. Fresh data. No embedding costs.

Paso 2: Construya la función de recuperación

El recuperador responde una pregunta, busca contenido relevante y devuelve fragmentos formateados.

Python
import requests

SCAVIO_KEY = "your-scavio-api-key"

def retrieve(question: str, num_results: int = 5, platform: str = None) -> list[dict]:
    payload = {"query": question, "num_results": num_results}
    if platform:
        payload["platform"] = platform
    r = requests.post(
        "https://api.scavio.dev/api/v1/search",
        json=payload,
        headers={"x-api-key": SCAVIO_KEY},
        timeout=15
    )
    r.raise_for_status()
    results = r.json().get("organic_results", [])
    return [{"title": res["title"], "snippet": res.get("snippet", ""), "url": res["link"]} for res in results]

Paso 3: Formatear los documentos recuperados como contexto

Convierta los resultados de la búsqueda en un bloque de contexto al que el LLM pueda hacer referencia.

Python
def format_context(docs: list[dict]) -> str:
    lines = []
    for i, doc in enumerate(docs, 1):
        lines.append(f"[{i}] {doc['title']}\nURL: {doc['url']}\n{doc['snippet']}")
    return "\n---\n".join(lines)

Paso 4: Generar respuesta con Anthropic Claude

Inyecte el contexto recuperado en el mensaje y obtenga una respuesta fundamentada.

Python
import anthropic

ANTHROPIC_KEY = "your-anthropic-key"

def rag_answer(question: str, platform: str = None) -> dict:
    docs = retrieve(question, num_results=5, platform=platform)
    context = format_context(docs)
    prompt = f"""Use the following search results to answer the question. Cite sources by number.

{context}

Question: {question}
Answer:"""

    client = anthropic.Anthropic(api_key=ANTHROPIC_KEY)
    msg = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        messages=[{"role": "user", "content": prompt}]
    )
    return {"answer": msg.content[0].text, "sources": [d["url"] for d in docs]}

result = rag_answer("What are the latest AI models released in 2026?")
print(result["answer"])
print("\nSources:", result["sources"])

Ejemplo en Python

Python
import requests
import anthropic

SCAVIO_KEY = "your-scavio-api-key"
ANTHROPIC_KEY = "your-anthropic-key"

def retrieve(question: str, n: int = 5, platform: str = None) -> list[dict]:
    payload = {"query": question, "num_results": n}
    if platform:
        payload["platform"] = platform
    r = requests.post(
        "https://api.scavio.dev/api/v1/search",
        json=payload,
        headers={"x-api-key": SCAVIO_KEY},
        timeout=15
    )
    r.raise_for_status()
    return [{"title": d["title"], "snippet": d.get("snippet",""), "url": d["link"]}
            for d in r.json().get("organic_results", [])]

def format_context(docs: list) -> str:
    return "\n---\n".join(f"[{i}] {d['title']}\n{d['snippet']}\n{d['url']}" for i, d in enumerate(docs, 1))

def rag_answer(question: str, platform: str = None) -> dict:
    docs = retrieve(question, n=5, platform=platform)
    context = format_context(docs)
    prompt = f"Use these search results to answer. Cite source numbers.\n\n{context}\n\nQuestion: {question}\nAnswer:"
    client = anthropic.Anthropic(api_key=ANTHROPIC_KEY)
    msg = client.messages.create(model="claude-sonnet-4-6", max_tokens=1024,
                                  messages=[{"role": "user", "content": prompt}])
    return {"answer": msg.content[0].text, "sources": [d["url"] for d in docs]}

if __name__ == "__main__":
    questions = [
        "What are the most popular vector databases in 2026?",
        "Latest AI coding assistants compared"
    ]
    for q in questions:
        result = rag_answer(q)
        print(f"Q: {q}")
        print(f"A: {result['answer'][:300]}...\n")

Ejemplo en JavaScript

JavaScript
const SCAVIO_KEY = 'your-scavio-api-key';
const ANTHROPIC_KEY = 'your-anthropic-key';

async function retrieve(question, n = 5, platform = null) {
  const payload = { query: question, num_results: n };
  if (platform) payload.platform = platform;
  const res = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', 'x-api-key': SCAVIO_KEY },
    body: JSON.stringify(payload)
  });
  const data = await res.json();
  return (data.organic_results ?? []).map(d => ({ title: d.title, snippet: d.snippet ?? '', url: d.link }));
}

function formatContext(docs) {
  return docs.map((d, i) => `[${i+1}] ${d.title}\n${d.snippet}\n${d.url}`).join('\n---\n');
}

async function ragAnswer(question, platform = null) {
  const docs = await retrieve(question, 5, platform);
  const context = formatContext(docs);
  const prompt = `Use these search results to answer. Cite source numbers.\n\n${context}\n\nQuestion: ${question}\nAnswer:`;

  const res = await fetch('https://api.anthropic.com/v1/messages', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', 'x-api-key': ANTHROPIC_KEY, 'anthropic-version': '2023-06-01' },
    body: JSON.stringify({ model: 'claude-sonnet-4-6', max_tokens: 1024, messages: [{ role: 'user', content: prompt }] })
  });
  const msg = await res.json();
  return { answer: msg.content[0].text, sources: docs.map(d => d.url) };
}

const result = await ragAnswer('What are the most popular vector databases in 2026?');
console.log(result.answer);

Salida esperada

JSON
Based on the search results, the most popular vector databases in 2026 include:

1. Pinecone - serverless, widely used in production [1]
2. Weaviate - open source with hybrid search [2]
3. Qdrant - performance-focused, Rust-based [3]
4. Chroma - popular for local development [4]
5. pgvector - PostgreSQL extension for teams already using Postgres [5]

Sources: https://pinecone.io, https://weaviate.io, ...

Tutoriales relacionados

  • Cómo conectar a tierra la salida de LLM con datos SERP en vivo
  • Cómo crear un agente de investigación de fuentes múltiples
  • Cómo integrar una API de búsqueda con CrewAI

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Python 3.9+. Clave API de Scavio. SDK antrópico. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

La mejor API de búsqueda para aplicaciones RAG en 2026

Read more
Best Of

La mejor API de búsqueda para precisión RAG en 2026

Read more
Glossary

Patrón de base de conocimientos local de LLM

Read more
Comparison

Local Search Index vs Search API (Scavio)

Read more
Solution

RAG local con respaldo de API de búsqueda

Read more
Solution

Mejore la calidad de las respuestas de RAG con Search Grounding

Read more

Empieza a construir

Reemplace una base de datos vectorial con una API de búsqueda en vivo para RAG. Configuración más sencilla, datos más actualizados y sin costes de integración. Implementación de Python con Anthropic Claude.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad