Elastic
Jina AI
Модели
API
keyboard_arrow_down
Читатель
Читайте URL-адреса и ищите информацию в Интернете для получения более подходящей подготовки для получения степени магистра права.
Вложения
Мультимодальные многоязычные векторные представления.
Реранкер
Инструмент переранжирования для максимизации релевантности результатов поиска.
Elastic Inference Service
Запускайте модели Jina непосредственно в Elasticsearch.
MCP terminalCLIarticlellms.txtsmart_toyАгентыdata_objectСхемаmenu_bookДокументы



Авторизоваться
login
Выбор текста с помощью субмодулярной оптимизации
Переранжирование фрагментов с помощью субмодульной оптимизации
Выводы
star
Избранное
Технический блог
июль 14, 2025

Субмодульная оптимизация для выбора текста, переранжирования пассажей и контекстной инженерии

В то время как другие полагаются на настройку подсказок и надеются на лучшее, вам следует изучить субмодульную оптимизацию, которая предоставляет принципиальную основу с теоретическими гарантиями для улучшения инженерии контекста.
Han Xiao • 11 минуты чтения
GitHub - jina-ai/submodular-optimization: Submodular optimization for diverse query generation
Submodular optimization for diverse query generation - jina-ai/submodular-optimization
GitHubjina-ai

Все реализации в серии по субмодулярности можно найти в этом репозитории Github.

После моей предыдущей статьи о субмодулярной оптимизации для запросов fan-out в DeepResearch, я получил отличные отзывы с просьбой более подробно рассмотреть субмодулярность и ее применение в информационном поиске и агентном поиске. Сегодня я представлю еще два применения субмодулярной оптимизации: выбор текста и переранжирование фрагментов. Оба подхода решают одну и ту же основную задачу — оптимальный выбор подмножества — которую должна решать каждая система, подобная DeepResearch.

Реальные документы содержат семантическую избыточность – не каждое предложение имеет одинаковую важность для рассуждений LLM. Представьте, что у вас есть длинный документ и вам нужно извлечь наиболее представительную информацию, оставаясь в пределах лимита токенов. Это и есть выбор текста: выбор контента, который отражает суть документа в рамках ограничений кардинальности. Мы хотим, чтобы выборки были ортогональны друг другу — минимизируя общую информацию и максимизируя общее покрытие. Это применимо на нескольких уровнях: выбор предложений из документов или токенов из предложений. Можно также рассматривать выбор текста как оптимизацию или сжатие контекста. Мы уменьшаем потребление токенов LLM, сохраняя при этом семантическое богатство, необходимое для рассуждений.

Иллюстрация выбора текста из документа путем минимизации общей информации и максимизации общего покрытия.

Переранжирование фрагментов сортирует фрагменты-кандидаты по их семантической релевантности пользовательскому запросу. В Jina AI мы создали специализированные重排器 для этого (jina-reranker-m0, jina-reranker-v2-multilingual-base), хотя наши 向量模型 также могут решить эту проблему. Но вот ограничение: большинство 重排器—включая наши—работают поточечно. Они оценивают отдельные пары (query, document) независимо. Они не учитывают общую информацию между фрагментами: если фрагмент 1 и фрагмент 7 оба получают высокие баллы, но содержат в основном идентичную информацию, разве не будет достаточно выбрать только один из них?

Иллюстрация задачи переранжирования фрагментов. В то время как выбор текста оптимизирует чистое разнообразие внутри документа, переранжирование фрагментов должно уравновешивать разнообразие с релевантностью запросу.

В DeepResearch это становится решающим. Когда агенты вызывают поисковые инструменты и собирают веб-фрагменты, мы должны определить, какие фрагменты заслуживают драгоценного места в контекстном окне для следующего этапа рассуждений. Выбор следует тому же принципу «минимизировать перекрытие, максимизировать охват», что и выбор текста, но с добавленной целью — релевантность исходному запросу должна иметь приоритет.

Многие исследователи признают растущую важность контекстной инженерии, где нам нужно создавать, оптимизировать и «упаковывать контекстные окна правильно» (из Andrej Karpathy) для построения более эффективных агентных рабочих процессов. Однако многие просто используют 提示词 LLM для «мягкого» решения этих проблем — никаких гарантий, никакого теоретического обоснования, сомнительная эффективность. Мы можем добиться гораздо большего.

В этой статье я покажу, что и выбор текста, и переранжирование фрагментов поддаются субмодулярной оптимизации, которая предоставляет строгие решения. Если вы не знакомы с субмодулярными функциями, подумайте об «убывающей отдаче». Мы начинаем с пустого набора и постепенно добавляем выбранный текст или фрагменты. Каждое дополнение приносит пользу, но предельная выгода уменьшается — отражая интуицию, что разнообразные, не избыточные выборки наиболее ценны. Формально, функция fff является субмодулярной, если для любых наборов A⊆BA \subseteq BA⊆B и элемента i∉Bi \notin Bi∈/B:

f(A∪i)−f(A)≥f(B∪i)−f(B)f(A \cup {i}) - f(A) \geq f(B \cup {i}) - f(B)f(A∪i)−f(A)≥f(B∪i)−f(B)

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

tagВыбор текста с помощью субмодулярной оптимизации

0:00
/1:04

Сначала использовал многовекторную функцию jina-embeddings-v4 для извлечения 向量模型 уровня токенов из фрагмента, затем применил субмодулярную оптимизацию для выбора токенов, которые обеспечивают наилучшее покрытие, наконец, вызвал токенизатор и преобразовал выборки обратно в строки в их org. позиции. Думайте об этом как о форме «сжатия» — вы можете настроить ползунок top-k для настройки различных «скоростей сжатия». Можете ли вы все еще понять сжатый текст?

Google Colab

Реализация выбора текста с помощью субмодульной оптимизации.

Начнем с решения задачи выбора текста, поскольку она важна для понимания субмодульности и является предварительным шагом для переранжирования фрагментов. Задача формулируется следующим образом:

Дан документ DDD с nnn элементами (токенами или предложениями), мы хотим выбрать подмножество S⊆1,2,…,nS \subseteq {1, 2, \ldots, n}S⊆1,2,…,n с ∣S∣=k|S| = k∣S∣=k, которое максимизирует функцию покрытия:

f(S)=∑i=1nmax⁡j∈Ssimijf(S) = \sum_{i=1}^{n} \max_{j \in S} \text{sim}_{ij}f(S)=i=1∑n​j∈Smax​simij​

где simij\text{sim}_{ij}simij​ представляет косинусное сходство между векторными моделями элемента iii и jjj. Обратите внимание, что функция покрытия fff является субмодульной, поскольку она удовлетворяет свойству убывающей доходности. Операция max гарантирует, что мы измеряем, насколько хорошо каждый элемент представлен ближайшей выбранной единицей, избегая двойного учета избыточной информации.

tagПолучение векторных моделей на уровне токенов/фрагментов

Для выбора на уровне токенов мы используем новую возможность jina-embeddings-v4 по созданию мультивекторных векторных моделей. Установка return_multivector=True возвращает одну векторную модель на токен, что позволяет нам выбирать на уровне подслов.

Для выбора на уровне фрагментов мы просто разделяем документы по знакам препинания или новым строкам и внедряем каждый фрагмент независимо. В качестве альтернативы, можно также вызвать наш API с поздним чанкингом, чтобы получить контекстуальные векторные модели фрагментов, что обычно приводит к повышению производительности в последующих задачах.

Позднее чанкирование в моделях векторных моделей с длинным контекстом
Разбиение длинных документов на части с сохранением контекстной информации — сложная задача. Мы представляем «Позднее чанкирование», которое использует модели векторных моделей с длинным контекстом для создания контекстных векторных моделей фрагментов для улучшения приложений поиска.
Jina AIMichael Günther, Han Xiao

Стоит отметить, что, поскольку мы измеряем семантическое сходство внутри однородного набора элементов — все они выполняют одну и ту же функциональную роль, а не сравниваем гетерогенные элементы, такие как запросы с документами (как мы увидим при переранжировании фрагментов), — мы вызываем jina-embeddings-v4 с включенным LoRA-адаптером text-matching.

Jina Embeddings v4: Универсальные векторные модели для мультимодального многоязычного поиска
Jina Embeddings v4 — это универсальная модель векторных моделей с 3,8 миллиардами параметров для мультимодального и многоязычного поиска, которая поддерживает вывод как одно-, так и мультивекторных векторных моделей.
Jina AIJina AI

Начиная с jina-embeddings-v3, наши модели векторных моделей оснащены LoRA, оптимизированной для конкретных задач. Узнайте больше о доступных LoRA в наших векторных моделях v4.

tagЖадный алгоритм с отложенными вычислениями

Как и в предыдущей статье, мы используем жадный алгоритм с отложенными вычислениями для решения задачи оптимизации. Для монотонных субмодульных функций этот алгоритм достигает гарантии аппроксимации (1−1/e)≈0.632(1 - 1/e) \approx 0.632(1−1/e)≈0.632 — границы, которая, как доказано, является жесткой. Жадная оптимизация с отложенными вычислениями использует два фундаментальных свойства субмодульных функций: убывающую доходность и сохранение относительного порядка между предельными выигрышами на протяжении итераций. Алгоритм работает следующим образом:

  1. Инициализация: Вычислить начальные предельные выигрыши для всех элементов и сохранить их в очереди с приоритетами
  2. Отложенная оценка: На каждой итерации извлекать элемент с самым высоким кэшированным выигрышем
  3. Проверка: Если выигрыш этого элемента был вычислен на текущей итерации, немедленно выбрать его
  4. Перерасчет: В противном случае пересчитать его текущий предельный выигрыш и повторно вставить в очередь

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

tagПереранжирование фрагментов с помощью субмодульной оптимизации

Google Colab

Задача переранжирования фрагментов расширяет задачу выбора текста, добавляя новую цель: выбранное подмножество должно быть релевантным заданному запросу. В то время как выбор текста оптимизирует чистую диверсификацию внутри документа, переранжирование фрагментов должно сбалансировать диверсификацию с релевантностью запроса. Вот основные обозначения:

  • S⊆{1,2,…,P}S \subseteq \{1, 2, \ldots, P\}S⊆{1,2,…,P} — это выбранное подмножество индексов фрагментов из набора кандидатов из PPP фрагментов — всего контента или воспоминаний в системе DeepResearch на данном шаге. SSS представляет собой тщательно отобранное подмножество, которое мы хотим перенести на следующий шаг рассуждений. У нас есть QQQ запросов и PPP фрагментов-кандидатов. В традиционном поиске ∣Q∣=1|Q|=1∣Q∣=1, но в DeepResearch, где запросы часто перефразируются и генерируются, у нас может быть несколько запросов под рукой.
  • sijs_{ij}sij​ — это сходство между фрагментами iii и jjj. Здесь используется косинусное сходство jina-embeddings-v4 с включенным LoRA task="text-matching" для всех фрагментов, как мы это делали в задаче выбора текста.
  • rqir_{qi}rqi​ — это оценка релевантности между запросом qqq и фрагментом iii. Это вычисляется как косинусное сходство с использованием jina-embeddings-v4 с task="retrieval", prompt_name="query" для запросов и task="retrieval", prompt_name="passage" для фрагментов, что позволяет использовать асимметричный LoRA поиска и создавать гетерогенные векторные модели.

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

tagФормулировка размещения объектов

Каждый фрагмент «покрывается» своим наиболее похожим выбранным фрагментом, взвешенным в зависимости от того, насколько релевантен этот выбранный фрагмент каждому запросу. Эта формулировка выбирает фрагменты, которые одновременно релевантны запросу И репрезентативны для многих других фрагментов.

fFL(S)=∑q=1Q∑i=1Pmax⁡j∈Srqj⋅sijf_{FL}(S) = \sum_{q=1}^{Q} \sum_{i=1}^{P} \max_{j \in S} r_{qj} \cdot s_{ij}fFL​(S)=q=1∑Q​i=1∑P​j∈Smax​rqj​⋅sij​

Мультипликативное взаимодействие между релевантностью запроса (rqjr_{qj}rqj​) и сходством фрагментов (sijs_{ij}sij​) создает «хабы» — фрагменты, которые служат двойным целям: как релевантные ответы и как разнообразные представители. Очень релевантный фрагмент может покрывать множество похожих фрагментов, в то время как менее релевантный фрагмент обеспечивает покрытие только в том случае, если не существует лучшего представителя.

tagФормулировка насыщенного покрытия

Для каждого фрагмента вы получаете кредит, равный минимуму его релевантности запросу или тому, насколько хорошо он покрыт вашим лучшим выбранным представителем. Это стимулирует выбор фрагментов, которые могут «насытить» релевантность многих других фрагментов.

fSC(S)=∑q=1Q∑i=1Pmin⁡(rqi,max⁡j∈Ssij)f_{SC}(S) = \sum_{q=1}^{Q} \sum_{i=1}^{P} \min(r_{qi}, \max_{j \in S} s_{ij})fSC​(S)=q=1∑Q​i=1∑P​min(rqi​,j∈Smax​sij​)

Операция min создает потолок релевантности — вы не можете получить больше кредита покрытия, чем присущая фрагменту релевантность запросу. Эта формулировка более консервативна, предотвращая чрезмерный выбор разнообразных, но нерелевантных фрагментов.

Обе функции являются монотонными и субмодульными, что позволяет использовать один и тот же жадный алгоритм с отложенными вычислениями с гарантиями аппроксимации (1−1/e)(1-1/e)(1−1/e).

tagРезультаты экспериментов

В нашей реализации мы используем Jina Reader для получения обычного текста из наших предыдущих сообщений в блоге и оцениваем различные запросы с использованием переранжирования фрагментов. Я настоятельно рекомендую читателям поэкспериментировать с нашим блокнотом Google Colab, используя свои собственные статьи — контент, с которым они наиболее знакомы, предоставит наиболее значимые сведения.

В наших экспериментах мы выбираем 10 лучших фрагментов из каждого документа. Обратите внимание, что все три алгоритма — только релевантность запроса, размещение объектов и насыщенное покрытие — демонстрируют монотонность: выбор большего kkk не изменяет рейтинг первых k−1k-1k−1 элементов. Например, при сравнении k=9k=9k=9, k=10k=10k=10 или k=11k=11k=11 первые 9 фрагментов остаются идентичными для всех значений. Результаты показаны ниже.

Вот несколько ключевых наблюдений. Во-первых, алгоритмы субмодульной оптимизации в целом следуют оценкам релевантности запросу, но вносят стратегические изменения в порядок — фрагменты "сдвигаются вверх и вниз" в рейтингах. Такое поведение соответствует нашим ожиданиям, поскольку эти алгоритмы оптимизируют минимизацию избыточности, а не чистую релевантность. Полученные рейтинги демонстрируют высокое качество.

Некоторые читатели могут заметить, что в первом, втором и четвертом примерах результаты субмодульной оптимизации, по-видимому, "насыщаются" рано, просто выдавая упорядоченные фрагменты 0, 1, 2 и т. д. Это не алгоритмический сбой — это демонстрирует одну из самых ценных особенностей субмодульной оптимизации, которую не могут обещать существующие重排器.

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

Document=https://jina.ai/news/submodular-optimization-for-diverse-query-generation-in-deepresearch Query="what is diminishing return". The red dashed lines mark the practical saturation points. Beyond these points, the marginal gains become negligible.
Document=https://jina.ai/news/jina-embeddings-v4-universal-embeddings-for-multimodal-multilingual-retrieval Query="how many lora adapters v4 has". The red dashed lines mark the practical saturation points. Beyond these points, the marginal gains become negligible.

Графики выше показывают, как функции Facility Location и Saturated Coverage ведут себя по мере увеличения размера выборки. Обе демонстрируют классический субмодульный паттерн:

  • Быстрый начальный рост: Наибольший прирост происходит в первых нескольких выборках
  • Убывающая отдача: Каждый дополнительный фрагмент приносит все меньше и меньше маржинальной выгоды
  • Плато насыщения: Значения функции выравниваются, указывая на минимальную выгоду от дальнейших добавлений

После этих точек маржинальный прирост становится незначительным. Это объясняет, почему наши более ранние эксперименты по ранжированию показали последовательное упорядочение (0, 1, 2, ...) — алгоритмы правильно определили, что дополнительные фрагменты вносят минимальный вклад.

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

Δi(S)=f(S∪{i})−f(S)≈0\Delta_i(S) = f(S \cup \{i\}) - f(S) \approx 0Δi​(S)=f(S∪{i})−f(S)≈0

для всех оставшихся фрагментов i∉Si \notin Si∈/S.

tagВыводы

Контекстная инженерия стала модным словом в AI, ее часто называют парадигмальным сдвигом в сторону создания агентных систем, которые курируют наиболее релевантную информацию для заполнения контекстного окна LLM, и это часто начинается с извлечения внешних данных через RAG.

Выбор текста и переранжирование фрагментов являются неотъемлемыми компонентами контекстной инженерии, особенно в процессах выбора базы знаний, извлечения и сжатия контекста. Переранжирование фрагментов затем уточняет это, переупорядочивая выбранные тексты на основе релевантности запросу, чтобы гарантировать, что LLM получает наиболее полезную информацию в первую очередь, избегая перегрузки и улучшая качество вывода.

Субмодульная оптимизация предлагает три убедительных преимущества по сравнению с традиционными подходами к выбору текста и переранжированию фрагментов:

tagТеоретическая строгость и вычислительная эффективность

В отличие от эвристических методов, субмодульная оптимизация предоставляет доказуемые гарантии. Ленивый жадный алгоритм выполняется за время O(nklog⁡n)O(nk \log n)O(nklogn) — по сравнению с (nk)\binom{n}{k}(kn​) комбинациями для полного поиска — при этом достигая (1−1/e)≈0.632(1-1/e) \approx 0.632(1−1/e)≈0.632 аппроксимации оптимального решения. Это означает, что математически гарантируется, что наше решение будет как минимум на 63% таким же хорошим, как теоретически наилучший возможный выбор. Никакая эвристика на основе 提示词 не может обещать такой уровень гарантии производительности.

tagУмные критерии остановки

Наблюдаемое нами поведение насыщения предоставляет автоматический механизм остановки: когда маржинальный прирост приближается к нулю, мы знаем, что нужно прекратить добавление элементов. Эта возможность недостижима с существующими поточечными или списочными 重排器, которые работают независимо с каждым элементом, не понимая убывающей отдачи на уровне набора. Сама функция говорит нам, когда мы получили достаточное покрытие.

tagРасширение для нескольких запросов

Фреймворк естественным образом распространяется на сценарии с несколькими запросами — распространенные в DeepResearch, где запросы часто переписываются и перефразируются. Те же теоретические основы и ленивые жадные алгоритмы применяются без проблем. Подходы на основе 提示词 не обладают такой систематической расширяемостью, часто требуя специальных решений для каждого нового сценария.

Эти преимущества проистекают из математических основ субмодульности, а не из инженерных уловок. В то время как другие полагаются на настройку 提示词 и надеются на хорошие результаты, вам следует изучить субмодульную оптимизацию, которая предоставляет принципиальную основу с формальными гарантиями — решающее преимущество при построении надежной, масштабируемой контекстной инженерии.

Категории:
star
Избранное
Технический блог
rss_feed

Читать далее
март 11, 2026 • 7 минуты чтения
Бутстрэппинг аудиоэмбеддингов на базе мультимодальных LLM
Han Xiao
Abstract illustration of a sound wave or heartbeat, formed by blue, orange, and gray dots on a white background.
март 06, 2026 • 6 минуты чтения
Идентификация векторных моделей по сырым числовым значениям
Han Xiao
Fingerprint illustration made from numbers, showcasing digital and high-tech design on a light background.
сентябрь 09, 2025 • 11 минуты чтения
Мультимодальные 向量模型 в Llama.cpp и GGUF
Andrei Ungureanu
Alex C-G
Cartoon llama in the center of a white background, emitting laser-like beams from its eyes. The illustration creates a playfu
Текущий язык / тема
Search Foundation
Читатель
Вложения
Реранкер
Получить API-ключ Jina
Ограничение скорости
О нас
Новости
Загрузить логотип Jina
open_in_new
Скачать логотип Elastic
open_in_new
Статус API
Elastic © 2026.БезопасностьУсловия использованияКонфиденциальностьУправление файлами cookieНе продавайте и не передавайте мою личную информацию третьим лицам.
Данный веб-сайт и весь связанный с ним контент, программное обеспечение, продукты и услуги предназначены исключительно для профессионального использования. Использование в потребительских целях не предполагается и не рекомендуется.