Расширение запросов долгое время было проверенным методом улучшения поисковых систем, хотя оно отошло на второй план после появления семантических эмбеддингов. Хотя некоторые могут считать его устаревшим в современных реалиях RAG и агентного поиска, не стоит его списывать со счетов. В этом глубоком анализе мы рассмотрим, как сочетание автоматического расширения запросов с jina-embeddings-v3 и LLM может поднять ваш поиск на новый уровень и обеспечить точные результаты.
tagЧто такое расширение запросов?
Расширение запросов было разработано для поисковых систем, которые оценивают релевантность путем сопоставления слов из запросов с документами, содержащими их, как tf-idf или другие схемы "разреженных векторов". Это имеет очевидные ограничения. Различные формы слов мешают сопоставлению, например "бежал" и "бегущий", или "оптимизировать" и "optimize". Предварительная обработка с учетом особенностей языка может смягчить некоторые из этих проблем, но не все. Технические термины, синонимы и связанные слова гораздо сложнее обрабатывать. Например, запрос медицинских исследований о "коронавирусе" не будет автоматически идентифицировать документы, в которых говорится о "COVID" или "SARS-CoV-2", хотя это были бы очень хорошие совпадения.
Расширение запросов было изобретено как решение.
Идея заключается в добавлении дополнительных слов и фраз к запросам для увеличения вероятности нахождения хороших совпадений. Таким образом, к запросу "коронавирус" могут быть добавлены термины "COVID" и "SARS-CoV-2". Это может значительно улучшить эффективность поиска.

Нелегко решить, какие термины следует добавить к запросу, и было проведено много работы над тем, как определить хорошие термины и как их взвешивать для поиска в стиле tf-idf. Общие подходы включают:
- Использование тезауруса, составленного человеком.
- Интеллектуальный анализ больших текстовых корпусов для поиска связанных слов.
- Выявление других терминов, используемых в похожих запросах из журнала запросов.
- Обучение тому, какие слова и фразы подходят для расширения запросов на основе обратной связи от пользователей.
Однако предполагается, что семантические модели эмбеддингов устраняют необходимость в расширении запросов. Хорошие текстовые эмбеддинги для "коронавирус", "COVID" и "SARS-CoV-2" должны быть очень близки друг к другу в векторном пространстве эмбеддингов. Они должны естественным образом совпадать без какого-либо дополнения.
Но хотя теоретически это должно быть так, реальные эмбеддинги, созданные реальными моделями, часто не дотягивают до этого уровня. Слова в эмбеддингах могут быть неоднозначными, и добавление слов к запросу может подтолкнуть его к лучшим совпадениям, если использовать правильные слова. Например, эмбеддинг для "кожная сыпь" может идентифицировать документы о "поспешных действиях" и "креме для кожи", пропуская при этом медицинскую статью о "дерматите". Добавление релевантных терминов, вероятно, подтолкнет эмбеддинг от несвязанных совпадений к лучшим.
tagРасширение запросов с помощью LLM
Вместо использования тезауруса или лексического интеллектуального анализа данных мы рассмотрели использование LLM для расширения запросов. LLM имеют несколько важных потенциальных преимуществ:
- Широкие лексические знания: Поскольку они обучены на больших, разнообразных наборах данных, меньше беспокойства о выборе подходящего тезауруса или получении правильных данных.
- Способность к суждению: Не все предложенные термины расширения обязательно подходят к конкретному запросу. LLM могут не делать идеальных суждений о тематической релевантности, но альтернативы вообще не могут делать суждений.
- Гибкость: Вы можете настроить ваш промпт под потребности задачи поиска, в то время как другие подходы жесткие и могут требовать много работы для адаптации к новым доменам или источникам данных.
После того как LLM предложила список терминов, расширение запросов для эмбеддингов работает так же, как традиционные схемы расширения запросов: мы добавляем термины к тексту запроса, а затем используем модель эмбеддингов для создания вектора эмбеддинга запроса.

Для работы этого подхода вам нужно:
- Доступ к LLM.
- Шаблон промпта для получения терминов расширения от LLM.
- Модель текстовых эмбеддингов.
tagПробуем на практике
Мы провели несколько экспериментов, чтобы проверить, добавляет ли этот подход ценность при поиске текстовой информации. В наших тестах использовались:
- Одна LLM: Gemini 2.0 Flash от Google.
- Две модели эмбеддингов, чтобы проверить, обобщается ли расширение запросов LLM на разные модели: jina-embeddings-v3 и
all-MiniLM-L6-v2
. - Подмножество бенчмарков BEIR для информационного поиска.
Мы проводили наши эксперименты в двух условиях промптинга:
- Использование общего шаблона промпта для получения терминов расширения.
- Использование специфичных для задачи шаблонов промптов.
Наконец, мы написали наши промпты для получения разного количества добавляемых терминов: 100, 150 и 250.
Наш код и результаты доступны на GitHub для воспроизведения.
tagРезультаты
tagИспользование общего промпта
После нескольких проб и ошибок мы обнаружили, что следующий промпт хорошо работает с Gemini 2.0 Flash:
Please provide additional search keywords and phrases for each of the key aspects of the following queries that make it easier to find the relevant documents (about {size} words per query): {query} Please respond in the following JSON schema: Expansion = {"qid": str, "additional_info": str} Return: list [Expansion]
Этот промпт позволяет нам пакетно обрабатывать наши запросы группами по 20-50 штук, присваивая каждому ID и получая обратно строку JSON, которая связывает каждый запрос со списком терминов расширения. Если вы используете другую LLM, возможно, вам придется поэкспериментировать, чтобы найти промпт, который работает для нее.
Мы применили эту настройку с jina-embeddings-v3, используя адаптер асимметричного поиска. При таком подходе запросы и документы кодируются по-разному — используя одну и ту же модель, но разные расширения LoRA — для оптимизации результирующих эмбеддингов для информационного поиска.
Наши результаты по различным бенчмаркам BEIR приведены в таблице ниже. Оценки представляют собой nDCG@10 (нормализованный накопленный дисконтированный выигрыш по десяти лучшим найденным элементам).
Бенчмарк | Без расширения | 100 терминов | 150 терминов | 250 терминов |
---|---|---|---|---|
SciFact (Задача проверки фактов) |
72.74 | 73.39 | 74.16 | 74.33 |
TRECCOVID (Задача медицинского поиска) |
77.55 | 76.74 | 77.12 | 79.28 |
FiQA (Поиск финансовых опционов) |
47.34 | 47.76 | 46.03 | 47.34 |
NFCorpus (Поиск медицинской информации) |
36.46 | 40.62 | 39.63 | 39.20 |
Touche2020 (Задача поиска аргументов) |
26.24 | 26.91 | 27.15 | 27.54 |
Как видно, расширение запросов в большинстве случаев привело к улучшению поиска.
Чтобы проверить надежность этого подхода, мы повторили те же тесты с all-MiniLM-L6-v2
, гораздо меньшей моделью, которая создает векторы вложений меньшего размера.

Результаты представлены в таблице ниже:
Benchmark | No Expansion | 100 terms | 150 terms | 250 terms |
---|---|---|---|---|
SciFact (Fact Checking Task) |
64.51 | 68.72 | 66.27 | 68.50 |
TRECCOVID (Medical Retrieval Task) |
47.25 | 67.90 | 70.18 | 69.60 |
FiQA (Financial Option Retrieval) |
36.87 | 33.96 | 32.60 | 31.84 |
NFCorpus (Medical Information Retrieval) |
31.59 | 33.76 | 33.76 | 33.35 |
Touche2020 (Argument Retrieval Task) |
16.90 | 25.31 | 23.52 | 23.23 |
Здесь мы видим еще большее улучшение показателей поиска. В целом, меньшая модель получила больше пользы от расширения запросов. Среднее улучшение по всем задачам представлено в таблице ниже:
Model | 100 terms | 150 terms | 250 terms |
---|---|---|---|
jina-embeddings-v3 | +1.02 | +0.75 | +1.48 |
all-MiniLM-L6-v2 |
+6.51 | +5.84 | +5.88 |
Большая разница в чистом улучшении между двумя моделями, вероятно, связана с тем, что all-MiniLM-L6-v2
начинала с более низкого уровня производительности. Векторы запросов, создаваемые jina-embeddings-v3 в асимметричном режиме поиска, лучше способны улавливать ключевые семантические связи, и, следовательно, расширению запроса остается меньше пространства для добавления информации. Но этот результат показывает, насколько расширение запроса может улучшить производительность более компактных моделей, которые в некоторых случаях могут быть предпочтительнее больших моделей.
Тем не менее, расширение запроса принесло значимое улучшение поиска даже для высокопроизводительных моделей, таких как jina-embeddings-v3, хотя этот результат не идеально согласуется по всем задачам и условиям.
Для jina-embeddings-v3 добавление более 100 терминов к запросу было контрпродуктивным для тестов FiQA и NFCorpus. Мы не можем сказать, что больше терминов всегда лучше, но результаты по другим тестам показывают, что больше терминов как минимум иногда лучше.
Для all-MiniLM-L6-v2
добавление более 150 терминов всегда было контрпродуктивным, а в трех тестах добавление более 100 не улучшало показатели. В одном тесте (FiQA) добавление даже 100 терминов привело к значительно худшим результатам. Мы полагаем, это связано с тем, что jina-embeddings-v3 лучше справляется с захватом семантической информации в длинных текстах запросов.
Обе модели показали меньшую реакцию на расширение запросов в тестах FiQA и NFCorpus.
tagИспользование специфичных для задачи промптов
Характер результатов, представленных выше, предполагает, что хотя расширение запросов полезно, использование LLM рискует добавить бесполезные термины запроса, которые снижают производительность. Это может быть вызвано общим характером промпта.
Мы взяли два теста — SciFact и FiQA — и создали более специфичные для предметной области промпты, как показано ниже:
Please provide additional search keywords and phrases for each of the key aspects of the following queries that make it easier to find the relevant documents scientific document that supports or rejects the scientific fact in the query field (about {size} words per query): {query} Please respond in the following JSON schema: Expansion = {"qid": str, "additional_info": str} Return: list [Expansion]
Этот подход улучшил производительность поиска практически по всем показателям:
Benchmark | Model | No Expansion | 100 terms |
150 terms |
250 terms |
---|---|---|---|---|---|
SciFact | jina-embeddings-v3 | 72.74 | 75.85 (+2.46) | 75.07 (+0.91) | 75.13 (+0.80) |
SciFact | all-MiniLM-L6-v2 |
64.51 | 69.12 (+0.40) | 68.10 (+1.83) | 67.83 (-0.67) |
FiQA | jina-embeddings-v3 | 47.34 | 47.77 (+0.01) | 48.20 (+1.99) | 47.75 (+0.41) |
FiQA | all-MiniLM-L6-v2 |
36.87 | 34.71 (+0.75) | 34.68 (+2.08) | 34.50 (+2.66) |
Показатели улучшились во всех условиях, кроме добавления 250 терминов к запросам SciFact с all-MiniLM-L6-v2
. Более того, этого улучшения было недостаточно, чтобы all-MiniLM-L6-v2
превзошла свой собственный базовый уровень на FiQA.
Для jina-embeddings-v3 мы видим, что лучшие результаты были получены при добавлении 100 или 150 терминов. Добавление 250 терминов было контрпродуктивным. Это подтверждает нашу интуицию о том, что можно добавить слишком много терминов в запрос, особенно если их значение начинает отклоняться от цели.
tagКлючевые аспекты расширения запросов
Расширение запросов явно может принести выгоду для поиска на основе эмбеддингов, но имеет некоторые оговорки:
tagЗатраты
Взаимодействие с LLM добавляет задержку и вычислительные затраты к информационному поиску, и может добавить реальные затраты, если вы используете коммерческую LLM. Умеренное улучшение, которое оно приносит, может не оправдывать расходы.
tagИнжиниринг промптов
Разработка хороших шаблонов промптов — это эмпирическое и экспериментальное искусство. Мы не утверждаем, что те, которые мы использовали в этой работе, являются оптимальными или переносимыми на другие LLM. Наши эксперименты со специфичными для задач промптами показывают, что изменение промптов может иметь очень значительное влияние на качество результата. Результаты также значительно различаются между доменами.
Эти неопределенности увеличивают стоимость разработки и подрывают поддерживаемость. Любое изменение в системе — смена LLM, моделей эмбеддингов или информационного домена — означает необходимость перепроверки и возможно переработки всего процесса.
tagАльтернативы
Мы видим здесь, что расширение запросов добавило наибольшее улучшение модели эмбеддингов с самой низкой начальной производительностью. Расширение запросов, по крайней мере в этом эксперименте, не смогло закрыть разрыв в производительности между all-MiniLM-L6-v2
и jina-embeddings-v3, в то время как jina-embeddings-v3 увидела более скромные улучшения от расширения запросов.
В этих обстоятельствах пользователь all-MiniLM-L6-v2
получил бы лучшие результаты при меньших затратах, перейдя на jina-embeddings-v3, а не преследуя расширение запросов.
tagБудущие направления
Мы показали здесь, что расширение запросов может улучшить эмбеддинги запросов, и что LLM предлагают простой и гибкий способ получения хороших терминов для расширения запросов. Но относительно скромные улучшения предполагают, что предстоит еще много работы. Мы рассматриваем ряд направлений для будущих исследований:
- Тестирование ценности терминологического улучшения при генерации эмбеддингов документов.
- Изучение возможностей улучшения запросов в других методах AI-поиска, таких как переранжирование.
- Сравнение расширения запросов на основе LLM с более старыми и вычислительно менее затратными источниками терминов, например, тезаурусом.
- Обучение языковых моделей специально для лучшего расширения запросов и предоставление им более специфичного для домена обучения.
- Ограничение количества добавляемых терминов. 100 может быть слишком много для начала.
- Поиск способов идентификации полезных и бесполезных терминов расширения. Любое фиксированное число, которое мы накладываем на расширение запроса, не будет идеально подходить, и если бы мы могли динамически оценивать предлагаемые термины и сохранять только хорошие, результат, вероятно, привел бы к повышению производительности.
Это очень предварительное исследование, и мы оптимистично настроены на то, что такие методы принесут дальнейшие улучшения в базовые продукты поиска Jina AI.