idea_world_labDEV JOURNAL
воскресенье, 28 июня 2026 г.

Альтернатива E: Создание профиля запроса Qwen

Поток

raw chunkText
  -> Запросить у Qwen создание JSON для поиска
  -> Поиск BM25/vector с использованием сгенерированного JSON
  -> Возврат кандидатов JSONL

Пример вывода

Если Qwen будет отобран хорошо, можно создать поисковый профиль, как показано ниже.

{
  "search_intent": "Godot 4 2D player movement tutorial",
  "important_literals": [
    "Input.is_action_pressed",
    "Vector2.ZERO",
    "AnimatedSprite2D",
    "position.clamp",
    "screen_size"
  ],
  "likely_doc_topics": [
    "first 2D game",
    "coding the player",
    "player movement",
    "clamp position to screen",
    "play and stop AnimatedSprite2D"
  ],
  "migration_signals": []
}

Преимущества

  • Можно уменьшить количество хардкода.
  • Можно суммировать намерения в сложных чанках.
  • Можно сделать поисковые запросы более удобными для чтения человеком.
  • Можно поручить вывод контекста Godot модели Qwen.

Недостатки

  • Медленно.
  • Дорого.
  • На этапе предпоиска могут появиться галлюцинации.
  • Может возникнуть подсказка без участия Qwen.
  • Неправильный intent миграции может привести к ошибочному переносу api_mapping.

Пример неудачного результата

В базовом чанке есть AnimatedSprite2D, но если Qwen ошибочно суммирует его, это может быть опасно.

{
  "migration_intent": "Godot 3 to Godot 4 migration",
  "important_terms": ["AnimatedSprite", "AnimatedSprite2D"]
}

В этом случае это нормальный код Godot 4, но миграционную карту можно загрузить неправильно.

PoC симуляция

Сначала передайте базовый чанк Qwen, чтобы он создал профиль поиска.

Нет предоставленного фрагмента для перевода.

SOURCE_CODE:
func _process(delta):
  ...
  $AnimatedSprite2D.play()
  position = position.clamp(Vector2.ZERO, screen_size)

Успешный профиль:

{
  "search_intent": "Godot 4 2D player movement tutorial",
  "important_literals": [
    "Input.is_action_pressed",
    "Vector2.ZERO",
    "AnimatedSprite2D",
    "position.clamp",
    "screen_size"
  ],
  "migration_signals": []
}

Если выполнить поиск по этому профилю, ожидаемые кандидаты следующие.

docs_chunks:
  first_2d_game / coding_the_player
  first_2d_game / clamp and screen bounds section

api_mapping:
  почти отсутствует или низко

label_prototypes:
  почти отсутствует или низко

Профиль сбоя:

{
  "search_intent": "Godot 3 to Godot 4 migration",
  "important_literals": [
    "AnimatedSprite",
    "AnimatedSprite2D",
    "KinematicBody2D"
  ],
  "migration_signals": ["AnimatedSprite to AnimatedSprite2D"]
}

Почему профиль сбоя опасен:

В SOURCE_CODE нет AnimatedSprite.  
В SOURCE_CODE нет KinematicBody2D.  
SOURCE_CODE может быть корректным кодом Godot 4.  
Однако, если Qwen создаст migration intent, он может неправильно искать api_mapping/label_prototypes.

Логи, проверяемые в PoC

Поскольку способ Qwen query profile вмешивается в LLM до поиска, следующий журнал обязателен.

1. raw chunkText
2. JSON профиля запроса, созданный Qwen
3. Существует ли important_literals в profile в реальном SOURCE_CODE
4. Существует ли migration_signals в profile в реальном SOURCE_CODE
5. Кандидаты, найденные по profile
6. Разница с кандидатами, найденными по raw chunkText

Видимый вывод:

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

Оценка

Хорошо для экспериментов с качеством поиска  
Будьте осторожны при использовании в качестве первого поискового движка в продакшене

Судя по оригинальной заметке, использование Qwen в качестве валидатора прямых доказательств после поиска безопаснее, чем использовать его в качестве генератора запросов перед поиском.