Новости
Модели
Продукты
keyboard_arrow_down
Читатель
Читайте URL-адреса и ищите информацию в Интернете для получения более подходящей подготовки для получения степени магистра права.
Вложения
Мультимодальные многоязычные вложения мирового класса.
Реранкер
Нейронный ретривер мирового класса для максимального повышения релевантности поиска.
Глубокий поиск
Ищите, читайте и рассуждайте, пока не найдете лучший ответ.
Более
keyboard_arrow_down
Классификатор
Классификация изображений и текста по нулевому и небольшому количеству кадров.
Сегментатор
Разрежьте длинный текст на куски и выполните токенизацию.

API-документы
Автоматическая генерация кода для вашего второго пилота IDE или LLM
open_in_new


Компания
keyboard_arrow_down
О нас
Связаться с отделом продаж
Стажерская программа
Присоединяйтесь к нам
open_in_new
Скачать логотип
open_in_new
Условия использования


Авторизоваться
login
Реализация
Инструменты
Состояние
Промпт
Оценка
Заключение
Технический блог
апрель 01, 2025

Использование модели рассуждений DeepSeek R1 в DeepSearch

Что лучше подходит для DeepSearch - стандартная LLM или модель рассуждений? В этой статье мы исследовали использование DeepSeek-R1 в реализации DeepSearch для выбора следующего действия.
Andrei Ungureanu
Alex C-G
Andrei Ungureanu, Alex C-G • 17 минуты чтения

По нашему мнению, DeepSearch — это, по сути, большой цикл while. С учетом максимальных лимитов токенов, он циклически переключается между поиском, чтением и обдумыванием, пока не найдет лучший ответ. Одна из ключевых задач LLM — определить, какое действие предпринять дальше, основываясь на текущем состоянии памяти. Следует ли продолжить поиск? Прочитать веб-страницу? Или ответить на вопрос напрямую?

В нашей реализации node-deepresearch мы используем стандартную LLM (gemini-2.0-flash) для выбора действия. Мы называем её "стандартной", так как процесс рассуждения явно определен через промпт-инжиниринг и работает как последовательность на входе и выходе, где выбранное действие возвращается в JSON-объекте. Поэтому возникает естественный вопрос: улучшит ли замена этого этапа принятия решений специализированной моделью рассуждений производительность DeepSearch?

Этап принятия решения о действии в большом цикле while нашей реализации DeepSearch определяет, основываясь на текущем контексте и памяти, каким должно быть следующее действие.

В этой статье мы исследуем использование DeepSeek R1 671b, LLM для рассуждений, чтобы заменить gemini-2.0-flash на этом этапе принятия решений. Мы считаем, что навыки рассуждения R1 помогут ему решать сложные задачи при поиске в интернете и анализе результатов.

Чтобы проверить эту концепцию, мы запустили её на практическом примере: планирование комплексного трехдневного туристического маршрута, а затем оценили её работу. Агент, выполняющий задачи глубокого поиска, вероятно, столкнется с теми же проблемами, что и люди, поэтому в нашей задаче планирования отдыха модель может столкнуться со следующими проблемами:

  • Пробелы в знаниях (информация, зависящая от другой информации): Например, вы хотите посетить Эйфелеву башню, но не знаете, открыта ли она в праздничные дни. Вам нужно узнать как расписание работы башни, так и даты французских государственных праздников.
  • Неверная или устаревшая информация: Туристический блог 2020 года предлагает определенный ресторан в Риме, который открыт по воскресеньям, но по прибытии вы обнаруживаете, что он изменил часы работы и теперь закрыт по воскресеньям.
  • Противоречивая информация: Один туристический сайт утверждает, что определенный отель в Нью-Йорке предлагает бесплатный завтрак, в то время как другой сайт указывает, что завтрак не включен в стоимость номера.
  • Неоднозначная информация: Пост на туристическом форуме упоминает "отличный пляж возле Барселоны" без указания конкретного пляжа или четких указаний, что затрудняет определение точного местоположения.

R1 может разбивать сложные задачи на выполнимые шаги, выявлять пробелы и несоответствия и преодолевать препятствия, такие как заблокированные веб-сайты и платный контент. У него есть способности к рассуждению для сбора необходимых знаний и синтеза ответа. Однако он не может спланировать отпуск для нас самостоятельно — для этого требуется поиск в интернете и понимание полученных результатов. Мы должны усовершенствовать его, создав framework и расширив его возможности, прежде чем он будет готов к работе.

tagРеализация

Google Colab

Для запуска блокнота вам понадобятся бесплатные API-ключи Jina AI и OpenRouter.

Хотя R1 является движком нашего агента, мы также добавляем некоторые инструменты, объект состояния и, конечно, (довольно большой) промпт. Вот упрощенное представление:

  • Инструменты могут вызываться моделью для поиска и скрапинга веб-страниц, а результаты сохраняются в состоянии.
  • Состояние отслеживает результаты работы инструментов, статус задачи и знания. Оно хранится в самом промпте.
  • Единый промпт предоставляет инструкции, определяя задачу и способ её выполнения, а также хранит состояние.

Мы рассмотрим каждый из этих компонентов более подробно позже в статье, особенно промпт. Но вкратце система работает следующим образом:

Мы начинаем с промпта с незаполненным объектом состояния. Пока задача выполняется (т.е. пытается получить ответ), агент выполняет следующий цикл, пока не получит ответ:

  1. Модель анализирует задачу и её состояние из промпта и рассуждает, как лучше использовать свои инструменты для получения ответа.
  2. Модель выводит JSON-объект, указывающий свой статус (IN PROGRESS или DONE), обновления памяти, вызовы инструментов и ответ (изначально null).
  3. Агент асинхронно вызывает инструменты, и результаты встраиваются обратно в промпт, как и JSON-объект из шага 3.
  4. Промпт (содержащий эту новую информацию) подается обратно в модель для выполнения следующего цикла.

Как только модель предоставляет ответ в своем выводе, задача завершается и ответ доставляется.

💡
Чтобы лучше понять, как работает агент в действии, мы предлагаем вам попробовать блокнот самостоятельно и изучить вывод на каждой итерации.

Теперь, когда у нас есть общий обзор, давайте рассмотрим инструменты, состояние и промпт по очереди:

tagИнструменты

Поскольку R1 не может самостоятельно искать или скрапить веб-страницы, мы используем Reader API от Jina для расширения его возможностей. Это включает два режима:

  • Режим поиска: ищет в интернете релевантные термины и возвращает результаты поисковой системы (включая URL, заголовки и описания каждого результата).
  • Режим чтения: скрапит страницы из результатов поиска и возвращает их в формате Markdown.

Из-за ограниченного контекстного окна R1 мы не можем просто загрузить целую страницу в раздел Tool Results промпта. Нам нужны дополнительные инструменты для выбора только самой релевантной информации перед её передачей модели:

  • LangChain recursive character text splitter: Мы разбиваем длинные выводы на сегменты с помощью RecursiveCharacterTextSplitter, рекурсивно разделяя по параграфам и предложениям, пока не получим желаемый размер сегмента. Это обеспечивает легкое усвоение вывода ограниченным контекстным окном R1.
  • Jina Reranker: Мы переранжируем сегменты с помощью jina-reranker-v2-base-multilingual и объединяем сегменты с наивысшим рейтингом в один результат.

К сожалению, DeepSeek R1 не поддерживает использование инструментов так же, как o3-mini. Например, с o3-mini мы могли бы использовать что-то вроде следующего:

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
)

Пример кода o3-mini для поддержки использования инструментов

Но это не так просто с R1: У него нет параметра tools, который мы можем передать в API, и он не будет возвращать структурированные tool_calls как часть своего ответа. Проще говоря, он не был обучен использованию инструментов (и в ближайшее время не будет их поддерживать). По крайней мере, он не поддерживает их в традиционном смысле. Однако мы можем попросить R1 выводить вызовы инструментов в формате JSON и передавать результаты вызова инструментов обратно в модель для анализа:

You must respond with a valid JSON object containing:
```json
{
  "tool_calls": [
    {"tool": "search", "input": "Cheapest flights from Germany to Crete May 2025"},
    {"tool": "scrape", "input": "<https://www.skyscanner.net/routes/gr/de/germany-to-crete.html>"}
  ]
}
```

Вызовы инструментов как часть промпта R1

После того как модель выводит вызовы инструментов на итерации n, инструменты вызываются, и результаты встраиваются в секцию Tool Results промпта, чтобы модель могла рассуждать с ними на итерации 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 ...
```

Результаты инструментов, показывающие результаты поиска рейсов Германия-Крит

tagСостояние

Состояние отслеживает статус задачи (Status) и знания (Memory), которые модели нужно проанализировать и обновить. Проще говоря, это рабочая память и банк памяти системы. Это хранится в разделе промпта под названием {{ workspace }}, и изначально это пустой лист:

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

Пустой объект состояния

Когда модель рассуждает о задаче, запускает инструменты и собирает вывод, состояние заполняется блоками памяти (полученными из вывода инструментов), каждый со своим случайно назначенным ID. Для нашего примера с планированием отпуска состояние может выглядеть так после выполнения одной итерации агента:

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>

Состояние, заполненное DeepSeek R1

Блоки памяти обновляются путем включения списка memory_updates в JSON-ответ модели:

{
	"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"},
	  ...
	]
}

Обновления памяти как часть JSON-вывода R1

  • Операция add добавляет блок памяти и может использоваться для хранения важной информации, такой как зацепки, находки, пробелы в информации и уже предпринятые действия.
  • Операция delete удаляет блок памяти, позволяя модели удалять старую, ненужную или ложную информацию и поддерживать чистое рабочее пространство.
💡
Мы также тестировали операцию replace, но обнаружили, что модель генерировала большие блоки информации (чрезмерно полагаясь на replace), и решили убрать эту опцию.

По сравнению с вызовом инструментов, R1 менее знаком с управлением собственной памятью. В то время как модель была специально обучена решать сложные математические задачи и задачи программирования — обучение, которое позволяет ей создавать точные JSON-объекты и выполнять вызовы инструментов — она не была обучена управлять состояниями, подобными памяти (как и любая другая известная нам модель).

Хранение информации с использованием компактного состояния памяти имеет несколько преимуществ перед хранением всего вывода модели в каждом раунде. Этот подход сжимает информацию в промпте, предотвращая переполнение контекста и улучшая фокусировку модели на релевантных знаниях. Мы храним как JSON, потому что его легко обновлять, но JSON отображается в человекочитаемом формате в самом промпте.

Тем не менее, управление памятью все еще выходит за рамки основной области применения R1; нам пришлось реализовать несколько инструкций, чтобы направлять модель в правильном обращении с операциями памяти. Вот часть нашего промпта, которая имеет дело с этим:

... другое содержимое промпта ...

## 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

... другое содержимое промпта ...

Инструкции по работе с памятью в промпте

tagПромпт

Мы создали промпт, используя формат шаблона Jinja. Он состоит из нескольких разделов:

  • Контекст (в данном случае текущая дата).
  • Инструкции, охватывающие принцип работы всего и сообщающие модели, какие инструменты доступны.
  • Состояние, обсужденное выше.
  • Выводы инструментов от инструментов search и 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

Полный промпт, используемый в нашей системе глубокого поиска

💡
Макрофункция Jinja в верхней части запроса просто отображает результаты инструментов в более читаемом формате.

tagОценка

Мы протестировали нашу систему на примере планирования отпуска. Вот задача, встроенная в запрос:

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.

Вот окончательный результат (после пяти итераций цикла):

**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).

Результат поиска отпуска после пяти итераций

Этот ответ выглядит правдоподобным. Но действительно ли это так? В конце концов, модели известны своей склонностью к галлюцинациям, и в системе с несколькими компонентами что-то вполне может пойти не так. Давайте проверим некоторые детали в выводе R1:

tagНаправление и общий бюджет

Расчеты для каждого пункта сходятся (ниже мы рассмотрим, насколько точен каждый пункт). В конце концов, R1 был обучен на математических задачах. Направление также подходит; Крит — популярное место.

tagАвиабилеты

Цены на авиабилеты почти сходятся, но давайте посмотрим, где возникли ошибки. Во-первых, вот реальные цены из Skyscanner на рейсы из Франкфурта в Ираклион на май 2025 года, туда и обратно:

Фактические результаты поиска Skyscanner для рейсов Франкфурт-Ираклион на май 2025 года

Мы видим, что цены держатся около отметки в 200 EUR, а не обещанных 154 EUR за билет туда-обратно! Но откуда взялась ошибка? Просматривая логи, мы находим связанный блок памяти, добавленный в третьем раунде:

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

Блок памяти, связанный с рейсами Германия-Крит

Этот блок, похоже, выведен из прикрепленного результата поиска:

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 ...
```

Результат поиска рейсов Германия-Крит

Модель не пыталась просканировать эту веб-страницу для подтверждения результатов, но это, вероятно, не имело бы значения. Однако она должна была хотя бы заметить, что в результатах поиска не указан "май" как период.

tagОтель

Отели подтверждаются, но мы выявили некоторые возможные улучшения. Во-первых, хотелось бы, чтобы модель приложила больше усилий для поиска цен на Georgioupolis Beach Hotel и FNK Apartments — хотя она предоставляет другую информацию, цены, к сожалению, отсутствуют. Чтобы понять, что мы имеем в виду, вот необработанный вывод со сканированного URL, который использовался для формирования рекомендаций по отелям. Он показывает цены только для первого и последнего результатов, пропуская три средних:

Источник 3️: скраппинг: https://www.booking.com/region/gr/crete.html
Результат:
```
Показать больше Показать меньше

Moritz Германия

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

Киссамос

От 57$ за ночь

9.5 Превосходно 313 отзывов

Я настоятельно рекомендую остановиться в JT Apartments. Когда мы вошли в апартаменты, нас ждал приятный сюрприз. Все было хорошо оборудовано. Район спокойный, рядом супермаркет. Пляж находится в нескольких минутах ходьбы. Это отличное место, если вы хотите посетить самые красивые пляжи Крита. Благодаря вам наше пребывание было именно таким, о каком мы мечтали :)

Показать больше Показать меньше

Katarzyna Польша
Показать больше Показать меньше

Aitor Германия

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

Агия Пелагия

9.6 Превосходно 64 отзыва

Мы были на Крите неделю. В течение этого времени мы останавливались в FnK Apartments. Froso и Konstantinos были супердружелюбными и замечательными хозяевами. Они всегда были готовы помочь, если у нас возникали вопросы или потребности любого рода. Из самих апартаментов открывается прекрасный вид на Агия Пелагию и окружающие бухты (и даже красивый восход солнца). Мы можем только рекомендовать FnK Apartments!!

Показать больше Показать меньше

Moritz Германия
Показать больше Показать меньше

mary США

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

Лименас Херсониссос, Херсониссос

9.0 Потрясающе 419 отзывов

Если вы хотите почувствовать себя желанным гостем, чтобы к вам относились как к друзьям, быть уверенным, что вам помогут во всем, мы настоятельно рекомендуем остановиться в этом отеле. Огромное спасибо от всего сердца Константину за теплое и очень личное отношение! При следующем посещении Крита мы с радостью снова остановимся в отеле Artemis!

Показать больше Показать меньше

Ирина Израиль
Показать больше Показать меньше

Ann Marie Ирландия

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

Платанес

7.8 Хорошо 198 отзывов

Отличное расположение рядом с пляжем, прекрасные таверны и удобное место для путешествий на автомобиле. Тихий район, идеально подходящий для чудесного отдыха. Просторные номера со всем необходимым. Отличное соотношение цены и качества. Зона бассейна превосходная, и вы можете расслабиться там в любое время дня. Парковка возле отеля была идеальной. Я обязательно вернусь в отель Pinelopi при следующем посещении Крита.

Показать больше Показать меньше

Rita Румыния
Показать больше Показать меньше

Katarzyna Польша

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

Като Даратсо

От 74$ за ночь

9.1 Потрясающе 86 отзывов

У нас было прекрасное пребывание, которое стало еще более особенным благодаря владельцу Эпасу, который постоянно улыбался и был очень helpful, и персоналу, особенно Анне. Мы пару раз завтракали, и порции были более чем достаточными. Апартаменты находятся в идеальном месте для посещения пляжей и ресторанов. Мы настоятельно рекомендуем Elizabeth Suites, они сделали наш первый отдых на Крите 😊

Показать больше Показать меньше

Jean Великобритания
```

Необработанные результаты поиска отелей на Крите на booking.com

Во-вторых, мы выявили дополнительную проблему при использовании Reranker с предустановленным параметром top_n из 5 результатов — оказалось, что на странице содержалось больше релевантных результатов - мы могли бы решить это, проверяя фактический рейтинг релевантности каждого результата, вместо того чтобы брать только первые пять (или сколько бы то ни было) результатов. Однако идеальная конфигурация ранжирования варьируется в зависимости от задач. Лучшим способом решения этой проблемы было бы просто использование всей страницы целиком - что, к сожалению, невозможно из-за ограниченного контекстного окна R1.

tagОбщая производительность и потенциальные улучшения

Модель хорошо начала изначально, но мы заметили, что она редко пыталась менять стратегии или разрабатывать сложные планы, если её специально не побуждали к этому. Хотя R1 естественным образом применяет эти подходы для математических и кодинговых задач (областей, на которых она специально обучалась), она не применяет такие же рассуждения к поисковым задачам. Хотя мы могли бы дополнительно настроить промпт (или даже использовать несколько промптов) для решения этого ограничения, это не было нашей основной целью.

Мы также заметили, что R1 недостаточно хорошо обрабатывает информацию, зависящую от времени. Коротко говоря, если в результатах поиска явно не указана неверная дата, модель предполагает, что информация действительна без дополнительной проверки. Например, при планировании полета 1 мая:

  • Германия-Крит 80$ 1 мая: Верно - Модель может доверять этой информации.
  • Германия-Крит 80$ 1 января: Неверно - Модель правильно идентифицирует и отбрасывает это.
  • Германия-Крит 80$: Ложноположительный результат - Когда дата не указана, модель не проверяет информацию и неправильно предполагает её действительность.

Если бы мы продолжили этот проект, мы могли бы рассмотреть внедрение нескольких потенциальных улучшений:

  • Отслеживание количества блоков памяти и побуждение модели суммировать записи, когда состояние становится слишком большим.
  • Инструктирование модели исчерпать все зацепки перед завершением исследования и ответом на запросы.
  • Усиление проверки информации, зависящей от времени.
  • Обеспечение того, чтобы модель перепроверяла результаты путем скрапинга URL-адресов, возвращаемых поисковым инструментом.
  • Тестирование нашей системы с будущими моделями рассуждений, поддерживающими большие контекстные окна, хотя это потребовало бы существенного рефакторинга и тестирования для адаптации промпта под другую модель.

tagЗаключение

Даже с момента довольно недавнего выпуска R1 ландшафт значительно изменился. Появились проекты, которые обучают модели рассуждений за удивительно низкую стоимость — некоторые всего за 5$. Эта демократизация означает, что обучение специализированных моделей стало более доступным, чем когда-либо. Наши эксперименты с R1 предоставляют полезную базу для дальнейшего изучения того, как LLM, ориентированные на рассуждения, могут быть улучшены с помощью инструментов для решения сложных поисковых задач.

Хотя наш пример планирования отпуска продемонстрировал многообещающие результаты (особенно для быстрого демо-проекта), он также выявил ограничения R1 в обработке поисковых задач и задач с памятью по сравнению с её сильными сторонами в математике и кодировании. Хотя система успешно создала план путешествия в рамках бюджетных ограничений, она не справилась в таких областях, как проверка информации, зависящей от времени, и тщательное исследование всех доступных вариантов, что подчеркивает разрыв между фокусом обучения модели и её применением в различных областях.

Категории:
Технический блог
rss_feed
Офисы
location_on
Саннивейл, Калифорния
710 Lakeway Dr, Ste 200, Саннивейл, Калифорния 94085, США
location_on
Берлин, Германия (штаб-квартира)
Prinzessinnenstraße 19-20, 10969 Берлин, Германия
location_on
Пекин, Китай
Уровень 5, здание 6, ул. Хайдянь Вест, д. 48, Пекин, Китай
location_on
Шэньчжэнь, Китай
402, этаж 4, здание Fu'an Technology, Шэньчжэнь, Китай
Поиск Фонда
Читатель
Вложения
Реранкер
Глубокий поиск
Классификатор
Сегментатор
API-документация
Получить API-ключ Jina
Ограничение скорости
Статус API
Компания
О нас
Связаться с отделом продаж
отдел новостей
Стажерская программа
Присоединяйтесь к нам
open_in_new
Скачать логотип
open_in_new
Условия
Безопасность
Условия использования
Конфиденциальность
Управление файлами cookie
email
Jina AI © 2020-2025.