Noticias
Modelos
Productos
keyboard_arrow_down
Búsqueda profunda
Busca, lee y razona hasta encontrar la mejor respuesta.
Lector
Lea las URL y busque en la web para obtener una base más sólida para su LLM.
Incrustaciones
Integraciones multilingües y multimodales de clase mundial.
reclasificador
Recuperador neuronal de clase mundial para maximizar la relevancia de la búsqueda.
Más
keyboard_arrow_down
Clasificador
Clasificación de cero disparos y pocos disparos para imágenes y texto.
Segmentador
Corta el texto largo en fragmentos y haz tokenización.

Documentación de la API
Generación automática de código para su IDE o LLM de Copilot
open_in_new


Compañía
keyboard_arrow_down
Sobre nosotros
Contactar con ventas
Programa de prácticas
Únete a nosotros
open_in_new
Descargar logotipo
open_in_new
Términos y condiciones


Acceso
login
Implementación
Herramientas
Estado
Prompt
Evaluación
Conclusión
Blog de tecnología
abril 01, 2025

Usando el modelo de razonamiento DeepSeek R1 en DeepSearch

¿LLM estándar o modelo de razonamiento, cuál es mejor para DeepSearch? En esta publicación, exploramos el uso de DeepSeek-R1 en la implementación de DeepSearch para elegir la siguiente acción.
Andrei Ungureanu
Alex C-G
Andrei Ungureanu, Alex C-G • 17 minutos de lectura

En nuestra opinión, DeepSearch es esencialmente un gran bucle while. Dado un presupuesto máximo de tokens, alterna entre buscar, leer y pensar hasta encontrar la mejor respuesta. Una de las tareas clave del LLM es determinar qué acción tomar a continuación basándose en el estado actual de la memoria. ¿Debería continuar buscando? ¿Leer la página web? ¿O responder la pregunta directamente?

En nuestra implementación de node-deepresearch, usamos un LLM estándar (gemini-2.0-flash) para elegir la acción. Lo llamamos "estándar" ya que el proceso de razonamiento está explícitamente delineado mediante ingeniería de prompts, y luego opera como secuencia-entrada, secuencia-salida con la acción elegida devuelta en un objeto JSON. Entonces surge una pregunta natural: ¿reemplazar este paso de decisión con un modelo dedicado de razonamiento mejoraría el rendimiento de DeepSearch?

El paso de decisión de acción del gran bucle while en nuestra implementación de DeepSearch determina, basándose en el contexto y memoria actuales, cuál debe ser la siguiente acción.

En esta publicación, exploramos el uso de DeepSeek R1 671b, un LLM de razonamiento para reemplazar a gemini-2.0-flash en este paso de decisión. Creemos que las habilidades de razonamiento de R1 ayudarán a resolver los problemas complejos en la búsqueda web y el análisis de resultados.

Para probar este concepto, lo pusimos a prueba en un ejemplo práctico: planificar un itinerario completo de vacaciones de tres días, y luego evaluar su desempeño. Los agentes que realizan tareas de búsqueda profunda probablemente encuentren los mismos tipos de problemas que los humanos, así que en nuestra tarea de vacaciones el modelo puede encontrar algunos de los siguientes problemas:

  • Vacíos de conocimiento (información dependiente de otra información): Por ejemplo, quieres visitar la Torre Eiffel, pero no sabes si está abierta en días festivos. Necesitas averiguar tanto el horario de la torre en días festivos como las fechas de los días festivos franceses.
  • Información incorrecta o desactualizada: Un blog de viajes de 2020 sugiere que un restaurante específico en Roma está abierto los domingos, pero al llegar, descubres que ha cambiado sus horarios y ahora está cerrado los domingos.
  • Información contradictoria: Un sitio web de viajes afirma que un hotel particular en Nueva York ofrece desayuno gratuito, mientras que otro sitio indica que el desayuno no está incluido en la tarifa de la habitación.
  • Información ambigua: Una publicación en un foro de viajes menciona "una gran playa cerca de Barcelona" sin especificar qué playa o dar direcciones claras, lo que dificulta localizar la ubicación exacta.

R1 puede desglosar tareas complejas en pasos accionables, identificar vacíos e inconsistencias, y navegar obstáculos como sitios web bloqueados y muros de suscripción. Tiene las capacidades de razonamiento para recopilar el conocimiento necesario y sintetizar una respuesta. Sin embargo, no puede planear unas vacaciones por sí solo — eso requiere buscar en la web y entender los resultados que obtiene. Tenemos que potenciarlo, colocándolo en un marco y mejorando sus capacidades, antes de que esté listo para el trabajo.

tagImplementación

Google Colab

Para ejecutar el notebook, necesitarás claves API gratuitas de Jina AI y OpenRouter.

Si bien R1 es el motor de nuestro agente, también agregamos algunas herramientas, un objeto de estado y, por supuesto, un prompt (bastante grande). Aquí hay una representación simplificada:

  • Las herramientas pueden ser llamadas por el modelo para buscar y extraer información de la web, y los resultados se almacenan en el estado.
  • El estado mantiene un registro de los resultados de las herramientas, el estado de la tarea y el conocimiento. Se almacena en el propio prompt.
  • Un único prompt proporciona instrucciones, especificando la tarea y cómo abordarla, además de almacenar el estado.

Veremos cada uno de estos en más detalle más adelante en la publicación, especialmente el prompt. Pero, en resumen, el sistema funciona así:

Comenzamos con el prompt con un objeto de estado sin poblar. Mientras la tarea está en progreso (es decir, intentando producir una respuesta) el agente ejecuta el siguiente bucle hasta que produce una respuesta:

  1. El modelo examina la tarea y su estado desde el prompt, y razona cómo usar mejor sus herramientas para obtener una respuesta.
  2. El modelo produce un objeto JSON especificando su estado (IN PROGRESS o DONE), actualizaciones de memoria, llamadas a herramientas y la respuesta (inicialmente null).
  3. El agente llama a las herramientas de forma asíncrona y los resultados se incorporan de nuevo al prompt, así como el objeto JSON del paso 3.
  4. El prompt (que contiene esta nueva información) se alimenta de nuevo al modelo para ejecutar otro bucle.

Tan pronto como el modelo proporciona una respuesta en su salida, la tarea termina y se entrega la respuesta.

💡
Para tener una mejor idea de cómo funciona el agente en acción, sugerimos que pruebes el notebook por ti mismo y examines la salida en cada iteración.

Ahora que tenemos una visión general de alto nivel, veamos las herramientas, el estado y el prompt en orden:

tagHerramientas

Dado que R1 no puede buscar ni extraer información de la web por sí mismo, accedemos a la API Reader de Jina para expandir sus capacidades. Esto incluye dos modos:

  • Modo búsqueda: busca en la web términos relevantes y devuelve resultados del motor de búsqueda (incluyendo URLs, títulos y descripciones de cada resultado).
  • Modo lectura: extrae páginas de los resultados de búsqueda y las devuelve en formato Markdown.

Debido a la ventana de contexto limitada de R1, no podemos simplemente volcar una página completa en la sección Tool Results del prompt. Necesitamos herramientas adicionales para seleccionar solo la información más relevante antes de pasarla al modelo:

  • Divisor de texto recursivo por caracteres de LangChain: Dividimos las salidas largas en segmentos con RecursiveCharacterTextSplitter, dividiendo recursivamente en párrafos y oraciones hasta obtener el tamaño de segmento deseado. Esto asegura que la salida sea fácilmente digerible por la limitada ventana de contexto de R1.
  • Jina Reranker: Reordenamos los segmentos con jina-reranker-v2-base-multilingual y combinamos los segmentos mejor clasificados en un único resultado.

Desafortunadamente, DeepSeek R1 no admite el uso de herramientas de la misma manera que o3-mini. Por ejemplo, con o3-mini, podríamos usar algo como lo siguiente:

def scrape_page(url: str):
    """Scrape a web page with Jina Reader"""

tools = [
    {
        "type": "function",
        "function": {
            "name": "scrape_page",
            "description": "Scrape the content of a webpage",
            "parameters": {
                "url": {"type": "string", "description": "The URL to scrape"}
            }
        }
    }
]

client = OpenAI()
response = client.completions.create(
    model="o3-mini",
    prompt=f"Scrape www.skyscanner.net/routes/gr/de/germany-to-crete.html",
    tools=tools
)

Ejemplo de código o3-mini para soportar el uso de herramientas

Pero esto no es tan fácil con R1: No tiene un parámetro tools que podamos pasar a la API, y no devolverá tool_calls estructurados como parte de su respuesta. En pocas palabras, no fue entrenado para usar herramientas (y no las soportará pronto). Al menos, no las soporta en el sentido tradicional. Sin embargo, podemos pedirle a R1 que produzca llamadas a herramientas en formato JSON, y alimentar los resultados de las llamadas a herramientas de vuelta al modelo para analizarlos:

Debes responder con un objeto JSON válido que contenga:
```json
{
  "tool_calls": [
    {"tool": "search", "input": "Vuelos más baratos de Alemania a Creta mayo 2025"},
    {"tool": "scrape", "input": "<https://www.skyscanner.net/routes/gr/de/germany-to-crete.html>"}
  ]
}
```

Llamadas a herramientas como parte del prompt de R1

Después de que el modelo genera llamadas a herramientas en la iteración n, se ejecutan las herramientas y los resultados se incrustan en la sección Tool Results del prompt para que el modelo razone con ellos en la iteración n+1:

Tool Results:

Source 1️: search: Cheapest flights from Germany to Crete May 2025
Result:

```
Title: Affordable flights: Germany - Heraklion (Crete) (HER) | Eurowings URL Source: https://www.eurowings.com/en/booking/offers/flights-from/DE/to/GR/HER.html Description: Affordable flights from Germany to Heraklion (Crete) ✈ Eurowings brings you closer to your dream destination from as little as €89.99*. Book now and enjoy.
Title: Are you a person or a robot? URL Source: https://www.skyscanner.com/routes/fran/her/frankfurt-to-crete-heraklion.html Description: Book a one-way ticket from Frankfurt to Heraklion Airport from $78 or travel return from just $154. The prices shown are based on availability and could change ...
```

Resultados de las herramientas, mostrando resultados de búsqueda para vuelos Alemania-Creta

tagEstado

El estado mantiene un registro del estado de la tarea (Status) y el conocimiento (Memory) que el modelo necesita analizar y actualizar. En resumen, es la memoria de trabajo y los bancos de memoria del sistema. Esto se almacena en una sección del prompt llamada {{ workspace }} y comienza como una pizarra en blanco:

Status: IN_PROGRESS
Memory: 
... no memory blocks ..

Objeto de estado vacío

A medida que el modelo razona sobre la tarea, ejecuta herramientas y recopila resultados, el estado se puebla con bloques de memoria (derivados de la salida de las herramientas), cada uno con su propio ID asignado aleatoriamente. Para nuestro ejemplo de planificación de vacaciones, el estado podría verse así después de ejecutar una iteración del agente:

Status: IN_PROGRESS
Memory: 
<nuz-032>Potential warm May destinations: Malaga (Spain), Crete (Greece), Algarve (Portugal)</nuz-032>
<xwj-969>URL to scrape for Crete hotel details: <https://www.tripadvisor.com/HotelsList-Crete-Beachfront-Cheap-Hotels-zfp13280541.html></xwj-969>
<vsc-583>URL to scrape for flight details: <https://www.expedia.com/lp/flights/fra/her/frankfurt-to-heraklion></vsc-583>

Estado poblado por DeepSeek R1

Los bloques de memoria se actualizan incluyendo una lista de memory_updates en la respuesta JSON del modelo:

{
	"memory_updates": [
	  {"operation": "add", "content": "Round-trip flight from Berlin to Tenerife in May 2025 ranges from €59.99 to €200 round-trip as per the Skyscanner and Iberia sources."},
	  {"operation": "delete", "id": "nuz-032"},
	  ...
	]
}

Actualizaciones de memoria como parte de la salida JSON de R1

  • La operación add agrega un bloque de memoria y puede usarse para almacenar información importante como pistas, hallazgos, vacíos de información y acciones ya realizadas.
  • La operación delete elimina un bloque de memoria, permitiendo que el modelo elimine información antigua, innecesaria o falsa y mantenga un espacio de trabajo limpio.
💡
También probamos una operación replace, pero encontramos que el modelo generaba grandes bloques de información (dependiendo excesivamente de replace), y decidimos eliminar esta opción.

En comparación con la emisión de llamadas a herramientas, R1 está menos familiarizado con la gestión de su propia memoria. Si bien el modelo fue específicamente entrenado para razonar problemas matemáticos complejos y tareas de programación—entrenamiento que le permite producir objetos JSON precisos y ejecutar llamadas a herramientas—no fue entrenado para gestionar estados tipo memoria (ni ningún otro modelo que conozcamos).

Almacenar información usando un estado compacto tipo memoria proporciona varias ventajas sobre almacenar toda la salida del modelo en cada ronda. Este enfoque condensa la información dentro del prompt, evitando el desbordamiento del contexto mientras mejora el enfoque del modelo en el conocimiento relevante. Lo mantenemos como JSON porque es fácil de actualizar pero el JSON se renderiza en un formato legible por humanos en el prompt mismo.

Aun así, la gestión de memoria sigue estando fuera del dominio principal de R1; necesitamos implementar múltiples instrucciones para guiar al modelo en el manejo adecuado de las operaciones de memoria. Aquí está la parte de nuestro prompt que trata con eso:

... otros contenidos del prompt ...

## Memory Block Usage
- Each memory block has a unique ID in format <abc-123>content</abc-123>
- Create separate blocks for distinct pieces of information:
  * Discovered URLs (both explored and pending)
  * Information gaps that need investigation
  * Actions already taken (to avoid repetition)
  * Promising leads for future exploration
  * Key facts and findings
  * Contradictions or inconsistencies found
- Keep each block focused on a single idea or piece of information
- Always cite sources when recording information from tool results
- Use IDs to track and manage your knowledge (e.g., deleting outdated information)
- Make sure to store sources (URLs) for the facts and findings you store

## Lead Management
- Since you can only make 3 tool calls per round, store promising leads for later
- Create dedicated memory blocks for URLs to scrape later
- Maintain blocks for potential search queries to explore in future rounds
- Prioritize leads based on relevance to the task

... otros contenidos del prompt ...

Instrucciones de manejo de memoria en el prompt

tagPrompt

Creamos el prompt usando el formato de plantilla Jinja. Consiste en varias secciones:

  • Contexto (en este caso, la fecha actual).
  • Instrucciones, que cubren cómo funciona todo y le dicen al modelo qué herramientas están disponibles.
  • Estado, discutido anteriormente.
  • Salidas de herramientas, de las herramientas search y scrape.
{% macro format_tool_results(tool_records) %}
{% for to in tool_records %}
Source {{ loop.index }}️: {{ to.tool }}: {{ to.input }}
Result:
```
{{ to.output }}
```
{% endfor %}
{% endmacro %}

The date: `{{ current_date }}`.
You are an information analysis and exploration agent that builds solutions through systematic investigation.

## Investigation Cycle
You operate in a continuous investigation cycle:

1. Review current workspace (your memory blocks)
2. Analyze new tool results (or initial task if first round)
3. Update memory with new insights and track investigation progress
4. Decide on next tools to call based on identified leads and information gaps
5. Repeat until task completion

## Memory Structure
Your memory persists between investigation cycles and consists of:
- **Status**: Always the first line, indicates if the task is IN_PROGRESS or DONE
- **Memory**: A collection of discrete information blocks, each with a unique ID

## Memory Block Usage
- Each memory block has a unique ID in format <abc-123>content</abc-123>
- Create separate blocks for distinct pieces of information:
  * Discovered URLs (both explored and pending)
  * Information gaps that need investigation
  * Actions already taken (to avoid repetition)
  * Promising leads for future exploration
  * Key facts and findings
  * Contradictions or inconsistencies found
- Keep each block focused on a single idea or piece of information
- Always cite sources when recording information from tool results
- Use IDs to track and manage your knowledge (e.g., deleting outdated information)
- Make sure to store sources (URLs) for the facts and findings you store

## Lead Management
- Since you can only make 3 tool calls per round, store promising leads for later
- Create dedicated memory blocks for URLs to scrape later
- Maintain blocks for potential search queries to explore in future rounds
- Prioritize leads based on relevance to the task

## Available Tools
- **search**: Use for broad information gathering on new topics or concepts
  * Example: {"tool": "search", "input": "renewable energy statistics 2023"}
- **scrape**: Use for extracting specific details from discovered URLs
  * Example: {"tool": "scrape", "input": "https://example.com/energy-report"}

## Tool Usage Guidelines
- **When to use search**: For new concepts, filling knowledge gaps, or exploring new directions
- **When to use scrape**: For URLs discovered that likely contain detailed information
- **Maximum 3 tool calls per round**
- **Never repeat the exact same tool call**
- **Always record valuable information from tool results in memory blocks**

## Response Format
You must respond with a valid JSON object containing:

```json
{
  "status_update": "IN_PROGRESS or DONE",
  "memory_updates": [
    {"operation": "add", "content": "New insight or lead to investigate"},
    {"operation": "delete", "id": "abc-123"}
  ],
  "tool_calls": [
    {"tool": "search", "input": "specific search query"},
    {"tool": "scrape", "input": "https://discovered-url.com"}
  ],
  "answer": "Your final, comprehensive answer when status is DONE"
}
```

## Important Rules
- The "add" operation creates a new memory block
	You do not need to specify an ID, it will be added automatically by the system.
- The "delete" operation requires the specific ID of the block to remove
- Never invent or fabricate information - only use facts from your memory or tool results
- Never make up URLs - only use URLs discovered through tool results
- CRITICAL: Any information not recorded in your memory blocks will be lost in the next round
  For example, if you find a potential webpage to scrap, you must store the URL and your intention
  Example: `{"operation": "add", "content": "Found relevant URL: https://... to scrape ..."}`
- Set status to "DONE" only when you have fully addressed the task
- Only include the "answer" field when status is "DONE"

Task:
```
{{ task }}
```

Current workspace:
```
{{ workspace }}
```

Tool Results:
{{ format_tool_results(tool_records) if tool_records else '... no previous tool results ...'}}

IMPORTANT: Generate a valid JSON response following the format above.

Think carefully about:
- what information do you need to preserve
- which tools to call next
- how to build your answer systematically with focused memory blocks

Prompt completo usado en nuestro sistema de búsqueda profunda

💡
La función macro de Jinja en la parte superior del prompt simplemente renderiza los resultados de las herramientas en un formato más limpio.

tagEvaluación

Pusimos nuestro sistema a prueba con nuestro ejemplo de planificación de vacaciones. Aquí está la tarea incorporada en el prompt:

Help me plan a 3 day holiday in Europe in May for under 2000 EUR
1. I need specific flight and hotel recommendations.
2. I want the destination to be warm.
3. I want to have a beach nearby the hotel.
I live in Germany.

Aquí está el resultado final (después de cinco iteraciones del ciclo):

**3-Day Crete Holiday Plan (Total ≈ €600-800)**

✈️ *Flights (From Frankfurt):*  
- Skyscanner: €154 round trip (May 2025 dates)  
  Source: <https://www.skyscanner.com/routes/fran/her/frankfurt-to-crete-heraklion.html>  
- Backup: Eurowings €180 round trip  

🏨 *Beachfront Hotels:*  
1. **Georgioupolis Beach Hotel**  
   - Direct beach access, bike rentals €10  
   - Source: <https://www.tripadvisor.com/HotelsList-Crete-Beachfront-Cheap-Hotels-zfp13280541.html>  

2. **JT Apartments**  
   - €57/night, 9.5/10 rating, 5-min walk to beach  
   - Source: <https://www.booking.com/region/gr/crete.html>  

3. **FNK Apartments**  
   - Sea views, 9.6/10 rating  

💰 *Budget Breakdown:*  
- Flights: €154  
- Hotel (3 nights): €171-250  
- Remaining: €1,600+ for meals/activities  

*Note:* All hotels are <5 mins from beaches. Crete averages 25°C in May (Source: TravelSupermarket).

Resultado para la búsqueda de vacaciones, después de cinco iteraciones

Esa respuesta parece legítima. Pero, ¿lo es realmente? Después de todo, se sabe que los modelos alucinan, y con un sistema de múltiples partes móviles, es probable que algo pueda salir mal. Verifiquemos algunos detalles en la salida de R1:

tagDestino y Presupuesto total

Los cálculos para cada elemento suman correctamente (veremos si cada elemento es preciso más adelante). Después de todo, R1 fue entrenado en problemas matemáticos. El destino también es correcto; Creta es un lugar popular.

tagVuelos

Los precios de los vuelos casi suman correctamente, pero veamos dónde salieron mal las cosas. En primer lugar, aquí están los precios reales de Skyscanner de Frankfurt a Heraklion, para mayo de 2025, ida y vuelta:

Resultados reales de búsqueda de Skyscanner para vuelos Frankfurt-Heraklion para mayo 2025

¡Podemos ver que los precios están todos alrededor de los 200 EUR, y no los 154 EUR prometidos para ida y vuelta! Pero, ¿de dónde viene el error? Mirando los registros, encontramos un bloque de memoria relacionado que se agregó en la ronda 3:

{"operation": "add", "content": "Crete flight options: Eurowings €89.99* one-way ..."}

Bloque de memoria relacionado con vuelos Alemania-Creta

Este bloque parece inferirse del resultado de búsqueda adjunto:

Source 1️: search: Cheapest flights from Germany to Crete May 2025
Result:
```
... other results ...
Title: Are you a person or a robot?
URL Source: https://www.skyscanner.com/routes/fran/her/frankfurt-to-crete-heraklion.html
Description: Book a one-way ticket from Frankfurt to Heraklion Airport from $78 or travel 
return from just $154. The prices shown are based on availability and could change ...
```

Resultado de búsqueda para vuelos Alemania-Creta

El modelo nunca intentó extraer esta página web para confirmar los resultados, pero probablemente no habría hecho una diferencia. Sin embargo, al menos debería haber notado que los resultados de búsqueda no incluían "mayo" como período.

tagHotel

Los hoteles son correctos, pero identificamos algunas mejoras que podrían hacerse. En primer lugar, nos gustaría que el modelo se hubiera esforzado más en encontrar los precios del Georgioupolis Beach Hotel y FNK Apartments - aunque proporciona otra información, lamentablemente faltan los precios. Para ver a qué nos referimos, aquí está la salida sin procesar de la URL extraída que se usó para generar las recomendaciones de hoteles. Solo muestra precios para el primer y último resultado, omitiendo los tres del medio:

Fuente 3️: scraping: https://www.booking.com/region/gr/crete.html
Resultado:
```
Mostrar más Mostrar menos

Moritz Alemania

*   ### [JT Apartments](https://www.booking.com/hotel/gr/jt-apatments.html?label=gen173nr-1FCAYoXEIFY3JldGVIM1gEaJUCiAEBmAExuAEZyAEM2AEB6AEB-AECiAIBqAIDuALSvqC-BsACAdICJDc5ZWE5ZDJkLTI2ZWEtNGNiMS04MzNlLTJhNWIyMGI5Y2M3NdgCBeACAQ&sid=f21cdd5fe9eb08dcac7d3a0304f9ccc9)

Kissamos

Desde $57 por noche

9.5 Excepcional 313 reseñas

Recomiendo encarecidamente alojarse en JT Apartments. Cuando entramos al apartamento nos encontramos con una agradable sorpresa. Todo estaba bien equipado. El vecindario es tranquilo, supermercado cerca. La playa está a un corto paseo. Es una excelente ubicación si quieres visitar las playas más hermosas de Creta. Gracias a ustedes nuestra estadía fue exactamente como la habíamos soñado :)

Mostrar más Mostrar menos

Katarzyna Polonia
Mostrar más Mostrar menos

Aitor Alemania

*   ### [FNK Apartments with Sea View](https://www.booking.com/hotel/gr/f-amp-k-apartments.html?label=gen173nr-1FCAYoXEIFY3JldGVIM1gEaJUCiAEBmAExuAEZyAEM2AEB6AEB-AECiAIBqAIDuALSvqC-BsACAdICJDc5ZWE5ZDJkLTI2ZWEtNGNiMS04MzNlLTJhNWIyMGI5Y2M3NdgCBeACAQ&sid=f21cdd5fe9eb08dcac7d3a0304f9ccc9)

Agia Pelagia

9.6 Excepcional 64 reseñas

Estuvimos en Creta durante una semana. Durante este tiempo, nos alojamos en FnK Apartments. Froso y Konstantinos fueron anfitriones súper amables y maravillosos para nosotros. Siempre estaban listos para ayudar si teníamos preguntas o necesidades de cualquier tipo. El apartamento en sí tiene una hermosa vista de Agia Pelagia y las bahías circundantes (e incluso el hermoso amanecer). ¡Solo podemos recomendar FnK Apartments!

Mostrar más Mostrar menos

Moritz Alemania
Mostrar más Mostrar menos

mary Estados Unidos

*   ### [Artemis Hotel Apartments](https://www.booking.com/hotel/gr/artemis-hersonisos.html?label=gen173nr-1FCAYoXEIFY3JldGVIM1gEaJUCiAEBmAExuAEZyAEM2AEB6AEB-AECiAIBqAIDuALSvqC-BsACAdICJDc5ZWE5ZDJkLTI2ZWEtNGNiMS04MzNlLTJhNWIyMGI5Y2M3NdgCBeACAQ&sid=f21cdd5fe9eb08dcac7d3a0304f9ccc9)

Limenas Hersonissou, Hersonissos

9.0 Maravilloso 419 reseñas

Si quieres sentirte bienvenido, ser tratado como amigos, saber que recibirás ayuda en todo, te recomendamos encarecidamente alojarte en el hotel. ¡Gracias de todo corazón a Konstantine por el trato cálido y muy personal! ¡En nuestra próxima visita a Creta, estaremos encantados de alojarnos nuevamente en el Hotel Artemis!

Mostrar más Mostrar menos

Irina Israel
Mostrar más Mostrar menos

Ann Marie Irlanda

*   ### [Pinelopi Hotel](https://www.booking.com/hotel/gr/pinelopi.html?label=gen173nr-1FCAYoXEIFY3JldGVIM1gEaJUCiAEBmAExuAEZyAEM2AEB6AEB-AECiAIBqAIDuALSvqC-BsACAdICJDc5ZWE5ZDJkLTI2ZWEtNGNiMS04MzNlLTJhNWIyMGI5Y2M3NdgCBeACAQ&sid=f21cdd5fe9eb08dcac7d3a0304f9ccc9)

Platanes

7.8 Bueno 198 reseñas

Excelente ubicación cerca de la playa, excelentes tabernas y también en una buena ubicación para viajar en coche. Zona tranquila, perfecta para unas maravillosas vacaciones. Habitaciones espaciosas equipadas con todo lo necesario. Excelente relación calidad-precio. La zona de la piscina era excelente y puedes relajarte allí en cualquier momento del día. El estacionamiento cerca del hotel era perfecto. Seguramente volveré al Hotel Pinelopi cuando visite Creta nuevamente.

Mostrar más Mostrar menos

Rita Rumania
Mostrar más Mostrar menos

Katarzyna Polonia

*   ### [Elizabeth Suites](https://www.booking.com/hotel/gr/elizabeth-suites.html?label=gen173nr-1FCAYoXEIFY3JldGVIM1gEaJUCiAEBmAExuAEZyAEM2AEB6AEB-AECiAIBqAIDuALSvqC-BsACAdICJDc5ZWE5ZDJkLTI2ZWEtNGNiMS04MzNlLTJhNWIyMGI5Y2M3NdgCBeACAQ&sid=f21cdd5fe9eb08dcac7d3a0304f9ccc9)

Kato Daratso

Desde $74 por noche

9.1 Maravilloso 86 reseñas

Tuvimos una excelente estadía que fue aún más personal gracias a Epas, el propietario, que siempre tenía una sonrisa y fue muy servicial, y el personal era encantador, especialmente Anna. Desayunamos un par de días y fueron más que abundantes. Los apartamentos estaban en una posición perfecta para playas y restaurantes. Recomendamos encarecidamente The Elizabeth Suites, hicieron nuestras primeras vacaciones en Creta 😊

Mostrar más Mostrar menos

Jean Reino Unido
```

Resultados crudos extraídos de listados de hoteles en Creta en booking.com

En segundo lugar, identificamos un problema adicional al usar Reranker con su predefinido top_n de 5 resultados — resulta que la página extraída contenía más de cinco resultados relevantes - podríamos haber abordado esto verificando realmente la puntuación de relevancia de cada resultado, en lugar de tomar solo los cinco primeros (o la cantidad que sea) resultados. Sin embargo, la configuración ideal de reordenamiento varía según las tareas. Una mejor manera de manejar este problema sería simplemente usar la página completa extraída - lo cual lamentablemente no es posible debido a la limitada longitud de contexto de R1.

tagRendimiento General y Posibles Mejoras

El modelo comenzó bien inicialmente, pero notamos que raramente intentaba cambiar de estrategias o desarrollar planes complejos a menos que se le indicara específicamente. Si bien R1 naturalmente emplea estos enfoques para problemas de matemáticas y programación (áreas en las que fue específicamente entrenado), no aplica el mismo razonamiento a tareas de búsqueda. Si bien podríamos ajustar más el prompt (o incluso usar múltiples prompts) para abordar esta limitación, ese no era nuestro objetivo principal.

También observamos que R1 no manejaba adecuadamente la información sensible al tiempo. En resumen, si los resultados de búsqueda no mencionan explícitamente una fecha incorrecta, el modelo asume que la información es válida sin mayor verificación. Por ejemplo, al planear un vuelo para el 1 de mayo:

  • Alemania a Creta $80 1 de mayo: Correcto - El modelo puede confiar en esta información.
  • Alemania a Creta $80 1 de enero: Incorrecto - El modelo identifica y descarta esto apropiadamente.
  • Alemania a Creta $80: Falso positivo - Cuando no se especifica fecha, el modelo no verifica la información y asume incorrectamente su validez.

Si continuáramos con este proyecto, podríamos considerar implementar varias mejoras potenciales:

  • Rastrear el conteo de bloques de memoria y solicitar al modelo que resuma entradas cuando el estado se vuelve demasiado grande.
  • Instruir al modelo para que agote todas las pistas antes de finalizar la exploración y responder consultas.
  • Enfatizar la verificación de información sensible al tiempo.
  • Asegurar que el modelo verifique dos veces los resultados extrayendo datos de las URLs devueltas por la herramienta de búsqueda.
  • Probar nuestro sistema con futuros modelos de razonamiento que admitan ventanas de contexto más grandes, aunque esto requeriría una refactorización y pruebas sustanciales para adaptar el prompt a un modelo diferente.

tagConclusión

Incluso desde el lanzamiento bastante reciente de R1, el panorama ha evolucionado significativamente. Han surgido proyectos que entrenan modelos de razonamiento a costos notablemente bajos—algunos por tan solo $5. Esta democratización significa que entrenar modelos especializados es más accesible que nunca. Nuestros experimentos con R1 proporcionan una línea base útil mientras continuamos explorando cómo los LLMs enfocados en el razonamiento pueden mejorarse con herramientas para abordar tareas complejas de búsqueda.

Si bien nuestro ejemplo de planificación de vacaciones demostró resultados prometedores (especialmente para un proyecto de demostración rápida), también reveló los límites de R1 en el manejo de tareas de búsqueda y memoria en comparación con sus fortalezas en matemáticas y programación. Si bien el sistema produjo exitosamente un plan de viaje dentro de las restricciones presupuestarias, quedó corto en áreas como la verificación de información sensible al tiempo y la exploración exhaustiva de todas las opciones disponibles, destacando la brecha entre el enfoque de entrenamiento del modelo y su aplicación a diferentes dominios.

Categorías:
Blog de tecnología
rss_feed
Oficinas
location_on
Sunnyvale, California
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, EE. UU.
location_on
Berlín, Alemania (sede central)
Prinzessinnenstraße 19-20, 10969 Berlín, Alemania
location_on
Beijing, China
Piso 5, Edificio 6, No.48 Haidian West St. Pekín, China
location_on
Shenzhen, China
Piso 402, Edificio de Tecnología Fu'an, Shenzhen, China
Fundación de búsqueda
Búsqueda profunda
Lector
Incrustaciones
reclasificador
Clasificador
Segmentador
Documentación API
Obtener la clave API de Jina
Límite de velocidad
Estado de la API
Compañía
Sobre nosotros
Contactar con ventas
Sala de prensa
Programa de prácticas
Únete a nosotros
open_in_new
Descargar logotipo
open_in_new
Términos
Seguridad
Términos y condiciones
Privacidad
Administrar cookies
email
Jina AI © 2020-2025.