Семантический поиск

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{well|Статья написана с использованием LLM '''DeepSeek-V4''' и проверена участником Участник:Dan-Кhaiaa Lakpazhap 18:29, 30...)
 
(6 промежуточных версий не показаны.)
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''DeepSeek-V4''' и проверена участником [[Участник:Dan-Кhaiaa Lakpazhap]] 18:29, 30 июня 2026 (MSD).
 
-
Промпт приводится полностью в [[Обсуждение:Байесовский вывод]].
 
-
}}
 
{{TOCright}}
{{TOCright}}
-
'''Семантический поиск''' — это технология поиска информации, которая фокусируется на понимании ''смысла'' поискового запроса пользователя, а не просто на подборе ключевых слов. Цель семантического поиска — предоставить наиболее релевантные результаты, учитывая контекст, намерения и синонимы, связанные с запросом.
+
 
 +
'''Семантический поиск''' (англ. ''semantic search'') совокупность методов [[Информационный поиск|информационного поиска]], предназначенных для сопоставления запросов и документов с учётом их значения, контекста, отношений между понятиями и предполагаемой [[Информационная потребность|информационной потребности]] пользователя. В отличие от поиска, основанного только на буквальном совпадении слов, семантический поиск может учитывать [[Синонимия|синонимию]], многозначность, тематическую близость, связи между сущностями, структуру предметной области и контекст запроса.
 +
 
 +
Термин «семантический поиск» не обозначает один определённый алгоритм. К нему относят использование [[Тезаурус|тезаурусов]] и [[Онтология (информатика)|онтологий]], поиск по [[Граф знаний|графам знаний]], методы [[Дистрибутивная семантика|дистрибутивной семантики]], тематические модели, нейросетевые модели представления текста, [[Обучение ранжированию|обучение ранжированию]] и гибридные системы, объединяющие лексические и семантические сигналы.
 +
 
 +
Семантический поиск не обязательно заменяет традиционный поиск по словам. Точные совпадения особенно важны для имён, кодов, цитат, чисел, названий организаций и специальных терминов. Поэтому современные поисковые системы обычно объединяют инвертированный индекс, векторный поиск, модели ранжирования, графы знаний и фильтры по метаданным.
 +
 
 +
== Терминология ==
 +
 
 +
В широком смысле семантика поиска связана с вопросом о том, насколько содержание документа соответствует информационной потребности пользователя. При этом различают:
 +
 
 +
* '''лексическое совпадение''' (англ. ''lexical matching'') — наличие одинаковых или морфологически связанных слов в запросе и документе;
 +
* '''семантическое сходство''' (англ. ''semantic similarity'') — близость значений двух текстов;
 +
* '''релевантность''' (англ. ''relevance'') — практическая полезность документа для конкретного запроса;
 +
* '''намерение пользователя''' (англ. ''search intent'') — задача, которую пользователь пытается решить;
 +
* '''контекст''' — сведения, влияющие на интерпретацию запроса: предыдущие реплики, предметная область, язык, время, местоположение и другие факторы;
 +
* '''поисковый кандидат''' (англ. ''retrieval candidate'') — документ, выбранный быстрым первым этапом для последующей более точной оценки.
 +
 
 +
Семантическое сходство не тождественно релевантности. Например, документы «причины высокой температуры» и «как повысить температуру тела» могут содержать похожие слова и относиться к одной теме, но отвечают на разные информационные потребности. Полноценная поисковая система должна учитывать отрицания, направление отношений, временные ограничения и тип требуемого ответа.
 +
 
 +
'''Векторный поиск''' (англ. ''vector search'') также не является полным синонимом семантического поиска. Это технический способ находить близкие объекты в векторном пространстве. Насколько найденная близость отражает смысл и релевантность, зависит от модели представления, данных обучения, функции сходства и способа индексирования.
== История ==
== История ==
-
Первые попытки создания интеллектуальных систем поиска информации начались ещё в середине XX века, однако современное понимание семантического поиска сформировалось с развитием [[Искусственный интеллект|искусственного интеллекта]] и [[Машинное обучение|машинного обучения]]. Значительный вклад внесли работы в области [[Обработка естественного языка|обработки естественного языка]] (англ. ''Natural Language Processing'', NLP) и [[Компьютерная лингвистика|компьютерной лингвистики]].
+
Исследования автоматического поиска информации начались задолго до появления современных нейронных сетей. В 1950—1970-х годах развивались методы индексирования документов, статистической оценки важности терминов и представления текстов в виде числовых векторов. Одной из основных моделей стала [[Векторная модель|векторная модель]], в которой запрос и документ рассматриваются как точки в пространстве терминов, а их близость определяется, например, косинусной мерой.<ref name="salton1975">{{статья
 +
|автор=Salton G., Wong A., Yang C. S.
 +
|заглавие=A Vector Space Model for Automatic Indexing
 +
|издание=Communications of the ACM
 +
|год=1975
 +
|том=18
 +
|номер=11
 +
|страницы=613—620
 +
|doi=10.1145/361219.361220
 +
|ссылка=https://dl.acm.org/doi/10.1145/361219.361220
 +
|язык=en
 +
}}</ref>
-
== Принципы работы ==
+
В 1980—1990-х годах появились методы выявления скрытой структуры коллекции документов. [[Латентно-семантический анализ]] использовал [[Сингулярное разложение|сингулярное разложение матрицы]], чтобы перейти от отдельных терминов к латентным направлениям, приблизительно соответствующим темам или совместно встречающимся группам слов.<ref name="lsa">{{статья
 +
|автор=Deerwester S., Dumais S. T., Furnas G. W., Landauer T. K., Harshman R.
 +
|заглавие=Indexing by Latent Semantic Analysis
 +
|издание=Journal of the American Society for Information Science
 +
|год=1990
 +
|том=41
 +
|номер=6
 +
|страницы=391—407
 +
|doi=10.1002/(SICI)1097-4571(199009)41:6&lt;391::AID-ASI1&gt;3.0.CO;2-9
 +
|язык=en
 +
}}</ref> Позднее были предложены вероятностный латентно-семантический анализ и [[Латентное размещение Дирихле|латентное размещение Дирихле]].<ref name="plsi">{{статья
 +
|автор=Hofmann T.
 +
|заглавие=Probabilistic Latent Semantic Indexing
 +
|издание=Proceedings of the 22nd Annual International ACM SIGIR Conference
 +
|год=1999
 +
|страницы=50—57
 +
|doi=10.1145/312624.312649
 +
|язык=en
 +
}}</ref><ref name="lda">{{статья
 +
|автор=Blei D. M., Ng A. Y., Jordan M. I.
 +
|заглавие=Latent Dirichlet Allocation
 +
|издание=Journal of Machine Learning Research
 +
|год=2003
 +
|том=3
 +
|страницы=993—1022
 +
|ссылка=https://www.jmlr.org/papers/v3/blei03a.html
 +
|язык=en
 +
}}</ref>
-
Семантический поиск использует ряд методов для понимания смысла запроса:
+
Параллельно развивались символические методы представления знаний. Лексические сети, такие как [[WordNet]], описывали синонимические группы и отношения между значениями слов.<ref name="wordnet">{{статья
 +
|автор=Miller G. A.
 +
|заглавие=WordNet: A Lexical Database for English
 +
|издание=Communications of the ACM
 +
|год=1995
 +
|том=38
 +
|номер=11
 +
|страницы=39—41
 +
|doi=10.1145/219717.219748
 +
|язык=en
 +
}}</ref> Исследования [[Семантическая паутина|семантической паутины]] привели к распространению форматов [[Resource Description Framework|RDF]] и [[Web Ontology Language|OWL]].<ref name="rdf">{{cite web
 +
|url=https://www.w3.org/TR/rdf11-concepts/
 +
|title=RDF 1.1 Concepts and Abstract Syntax
 +
|publisher=World Wide Web Consortium
 +
|lang=en
 +
|accessdate=2026-07-26
 +
}}</ref><ref name="owl">{{cite web
 +
|url=https://www.w3.org/TR/owl2-syntax/
 +
|title=OWL 2 Web Ontology Language: Structural Specification and Functional-Style Syntax
 +
|publisher=World Wide Web Consortium
 +
|lang=en
 +
|accessdate=2026-07-26
 +
}}</ref>
-
* '''Анализ естественного языка (NLP):'''
+
В 2010-х годах широкое распространение получили распределённые векторные представления слов, включая [[Word2vec]], [[GloVe]] и [[FastText]]. Следующий этап был связан с контекстуальными языковыми моделями, в частности [[BERT]], в которых представление слова зависит от окружающего текста.<ref name="bert">{{статья
-
** '''Токенизация''' — разбиение текста на слова или фразы.
+
|автор=Devlin J., Chang M.-W., Lee K., Toutanova K.
-
** '''Лемматизация и стемминг''' — приведение слов к их базовой форме.
+
|заглавие=BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
-
** '''Синтаксический анализ''' — определение грамматической структуры предложения.
+
|издание=Proceedings of NAACL-HLT
-
** '''Семантический анализ''' — выявление смысла слов и отношений между ними.
+
|год=2019
-
* '''Онтологии и графы знаний''' — использование структурированных баз данных (например, [[WordNet]], [[Google Knowledge Graph]]) для понимания связей между понятиями, их свойств и отношений.
+
|страницы=4171—4186
-
* '''Машинное обучение:'''
+
|doi=10.18653/v1/N19-1423
-
** '''Векторные представления слов (word embeddings)''' — модели, такие как [[Word2Vec]], [[GloVe]], [[FastText]], позволяют представлять слова в виде числовых векторов, где семантически близкие слова имеют схожие векторы. Это позволяет находить синонимы и связанные понятия.
+
|ссылка=https://aclanthology.org/N19-1423/
-
** '''Модели на основе трансформеров''' — современные модели, такие как [[BERT]], [[GPT]], способны понимать контекст слова в предложении и улавливать более сложные смысловые нюансы. Они обучаются на огромных массивах текстов и могут использоваться для ранжирования результатов поиска, классификации запросов и извлечения информации.
+
|язык=en
-
** '''Ранжирование с помощью машинного обучения (англ. ''Learning to Rank'', LTR)''' — алгоритмы, которые обучаются на данных о релевантности документов запросам, чтобы оптимизировать порядок выдачи результатов.
+
}}</ref>
-
* '''Понимание намерений пользователя (англ. ''intent recognition'')''' — определение того, что именно хочет найти пользователь (информацию, товар, услугу, выполнить действие).
+
-
== Математическая формализация ==
+
В 2020-х годах основными направлениями стали плотный нейросетевой поиск (англ. ''dense retrieval''), обучаемые разреженные представления (англ. ''learned sparse retrieval''), позднее взаимодействие токенов (англ. ''late interaction''), гибридное ранжирование и использование поиска в системах [[Генерация, дополненная поиском|генерации, дополненной поиском]].
-
В современном семантическом поиске задача обычно формулируется следующим образом:
+
== Формальная постановка задачи ==
-
Пусть дан запрос <tex>q</tex> и множество документов <tex>D = \{d_1, d_2, \dots, d_N\}</tex>. Цель — для каждого документа вычислить оценку релевантности <tex>s(q, d_i)</tex> и выдать документы с наибольшими оценками.
+
Пусть задан запрос <tex>q</tex>, коллекция документов
-
=== Векторное представление ===
+
<tex>D=\{d_1,d_2,\ldots,d_N\}</tex>
-
В большинстве нейросетевых подходов запрос и документ отображаются в общее векторное пространство:
+
и, возможно, дополнительный контекст <tex>c</tex>. Поисковая система строит функцию релевантности
-
<tex>\mathbf{q} = f(q; \Theta_Q), \quad \mathbf{d} = g(d; \Theta_D)</tex>,
+
-
где <tex>f</tex> и <tex>g</tex> — нейросетевые кодировщики (часто основанные на [[Трансформер (архитектура нейронной сети)|трансформерах]]).
+
-
Релевантность вычисляется как косинусное расстояние между векторами:
+
<tex>s(q,d\mid c)\in\mathbb{R},</tex>
-
<tex>s(q, d) = \cos(\mathbf{q}, \mathbf{d}) = \frac{\mathbf{q} \cdot \mathbf{d}}{\|\mathbf{q}\| \|\mathbf{d}\|}</tex>.
+
-
=== Функции потерь для обучения ===
+
после чего упорядочивает документы по убыванию оценки:
-
Для обучения таких моделей используются различные подходы:
+
<tex>\pi_q=\operatorname{argsort}_{d\in D}\,s(q,d\mid c).</tex>
-
* '''Pairwise loss''' (например, [[Triplet loss]]): модель учится так, чтобы для каждого запроса релевантный документ имел более высокую оценку, чем нерелевантный:
+
Первые <tex>k</tex> документов образуют результат поиска:
-
<tex>\mathcal{L} = \sum_{(q, d^+, d^-)} \max(0, \gamma - s(q, d^+) + s(q, d^-))</tex>,
+
-
где <tex>\gamma</tex> — отступ (margin).
+
-
* '''Listwise loss''' (например, [[Softmax cross-entropy]]): модель обучается предсказывать вероятность того, что документ будет выбран пользователем среди множества кандидатов:
+
<tex>\operatorname{TopK}(q,D)=\{d_{\pi_1},\ldots,d_{\pi_k}\}.</tex>
-
<tex>\mathcal{L} = -\sum_{i} \log \frac{\exp(s(q, d_i))}{\sum_{j \in \text{top-k}} \exp(s(q, d_j))}</tex>.
+
-
* '''Контастное обучение''' (''contrastive learning'') — активно используется в современных моделях (например, [[SimCSE]], [[E5]]) для улучшения качества эмбеддингов без явных меток релевантности.
+
Функция <tex>s</tex> может учитывать совпадение слов, статистическую важность терминов, семантическое сходство векторов, отношения между сущностями, категории онтологии, структуру графа, метаданные, качество и актуальность источника.
-
== Архитектуры моделей ==
+
Во многих системах различают два этапа:
-
Существует несколько поколений моделей для семантического поиска:
+
# '''извлечение кандидатов''' (англ. ''candidate retrieval'') — быстрый поиск сравнительно небольшого множества потенциально релевантных документов;
 +
# '''переранжирование''' (англ. ''reranking'') — более точная, но вычислительно дорогая оценка найденных кандидатов.
-
{| class="wikitable"
+
== Общая архитектура ==
-
|-
+
-
! Поколение !! Примеры !! Особенности
+
-
|-
+
-
| '''Классические (лексические)''' || [[BM25]], [[TF-IDF]] || Поиск по точному совпадению терминов, статистическая важность слов.
+
-
|-
+
-
| '''Эмбеддинговые (non-contextual)''' || [[Word2Vec]], [[GloVe]], [[FastText]] || Векторы слов фиксированы, не учитывают контекст; качество ограниченное.
+
-
|-
+
-
| '''Контекстуальные (трансформеры)''' || [[BERT]], [[SBERT]] (Sentence-BERT) || Учитывают контекст слова, дают качественные эмбеддинги для предложений; используются для задачи ''семантического сходства''.
+
-
|-
+
-
| '''Специализированные для поиска''' || [[DPR]] (Dense Passage Retriever)<ref name="dpr">Karpukhin et al., 2020</ref>, [[ColBERT]]<ref name="colbert">Khattab & Zaharia, 2020</ref> || DPR использует двухбашенную архитектуру (отдельные кодировщики для запроса и документа) с контрастным обучением. ColBERT вводит поочередное (''late interaction'') сравнение векторов токенов, что повышает точность.
+
-
|-
+
-
| '''Современные (масштабируемые)''' || [[GTR]] (Google), [[E5]] (Microsoft)<ref name="e5">Liang et al., 2022</ref>, [[OpenAI embeddings]] || Обучаются на огромных корпусах с использованием разнообразных методов (контрастное обучение, синтетические данные, дистилляция). Показывают state-of-the-art результаты на бенчмарках (например, [[BEIR]], [[MTEB]]).
+
-
|}
+
-
Гибридные подходы, комбинирующие лексический поиск (BM25) и плотные векторные представления (семантический), становятся стандартом в промышленных системах<ref name="hybrid">Yang et al., 2021</ref>. Они используют взвешенную сумму оценок:
+
=== Обработка коллекции ===
-
<tex>s_{\text{hybrid}}(q, d) = \lambda \cdot s_{\text{BM25}}(q, d) + (1 - \lambda) \cdot s_{\text{emb}}(q, d)</tex>,
+
Документы очищаются, разбиваются на фрагменты, снабжаются метаданными и преобразуются в индексируемое представление. Разбиение на фрагменты называется '''чанкингом''' (англ. ''chunking''). Слишком короткие фрагменты теряют контекст, а слишком длинные могут содержать несколько тем.
-
где <tex>\lambda</tex> — гиперпараметр, регулирующий вклад каждого компонента.
+
На этом этапе выполняются [[Токенизация|токенизация]], [[Лемматизация|лемматизация]], выделение именованных сущностей, связывание сущностей (англ. ''entity linking''), тематическая классификация, вычисление [[Эмбеддинг|эмбеддингов]], построение графов и сохранение терминов в инвертированном индексе.
-
== Отличие от традиционного поиска ==
+
=== Анализ запроса ===
 +
 
 +
Система может определять язык, исправлять опечатки, выделять сущности, распознавать намерение пользователя и преобразовывать запрос в одно или несколько представлений. Например, запрос «ягуар скорость» может относиться к животному или автомобилю.
 +
 
 +
=== Извлечение кандидатов и переранжирование ===
 +
 
 +
Для первоначального поиска применяются инвертированный индекс, поиск по онтологии, обход графа знаний, поиск ближайших векторов, обучаемый разреженный поиск и объединение нескольких индексов. Найденные кандидаты затем оцениваются более сложной моделью, способной учитывать взаимное расположение слов, структуру текста, свежесть источника и другие признаки.
 +
 
 +
=== Постобработка ===
 +
 
 +
После ранжирования применяются фильтрация, устранение дубликатов, диверсификация результатов, проверка прав доступа, группировка по темам и формирование объяснений.
 +
 
 +
== Основные подходы ==
{| class="wikitable"
{| class="wikitable"
|-
|-
-
! Признак !! Традиционный (ключевые слова) !! Семантический поиск
+
! Подход
 +
! Основное представление
 +
! Преимущества
 +
! Ограничения
|-
|-
-
| '''Фокус''' || Совпадение слов || Смысл, контекст, намерение
+
| Лексический и вероятностный поиск
 +
| Термины, частоты, инвертированный индекс
 +
| Высокая скорость, интерпретируемость, точный поиск названий и редких терминов
 +
| Ограниченный учёт синонимов и перефразировок
|-
|-
-
| '''Гибкость''' || Низкая || Высокая
+
| Онтологии и тезаурусы
 +
| Понятия, классы, явно заданные отношения
 +
| Объяснимость и логические ограничения
 +
| Высокая стоимость разработки и сопровождения
|-
|-
-
| '''Понимание синонимов''' || Ограниченное || Полное
+
| Графы знаний
 +
| Сущности и отношения
 +
| Поддержка структурированных и многошаговых запросов
 +
| Неполнота графа и ошибки связывания сущностей
|-
|-
-
| '''Обработка опечаток''' || Базовая || Продвинутая
+
| Латентные и тематические модели
 +
| Скрытые факторы или распределения по темам
 +
| Выявление общей тематики, снижение размерности
 +
| Ограниченный учёт порядка слов
|-
|-
-
| '''Релевантность''' || Зависит от точности запроса || Высокая, независимо от формулировки
+
| Плотные нейросетевые представления
 +
| Один вектор запроса и один вектор документа
 +
| Работа с перефразировками, быстрый поиск после индексирования
 +
| Потеря деталей и зависимость от обучающих данных
 +
|-
 +
| Позднее взаимодействие
 +
| Векторы отдельных токенов
 +
| Точное сопоставление частей запроса и документа
 +
| Более крупный индекс
 +
|-
 +
| Обучаемый разреженный поиск
 +
| Взвешенные термины расширенного словаря
 +
| Совместимость с инвертированным индексом
 +
| Рост индекса и стоимость обучения
 +
|-
 +
| Гибридный поиск
 +
| Несколько представлений одновременно
 +
| Устойчивость к разным типам запросов
 +
| Необходимость настройки объединения
|}
|}
-
== Примеры ==
+
=== Лексические и вероятностные методы ===
 +
 
 +
Одним из базовых представлений является [[TF-IDF]]. Широко используемая функция [[Okapi BM25|BM25]] имеет вид:
 +
 
 +
<tex>
 +
\operatorname{BM25}(q,d)=
 +
\sum_{t\in q}
 +
\operatorname{IDF}(t)
 +
\frac{f(t,d)(k_1+1)}
 +
{f(t,d)+k_1\left(1-b+b\frac{|d|}{\operatorname{avgdl}}\right)}.
 +
</tex>
 +
 
 +
Здесь <tex>f(t,d)</tex> — частота термина, <tex>|d|</tex> — длина документа, <tex>\operatorname{avgdl}</tex> — средняя длина документа, <tex>k_1</tex> и <tex>b</tex> — параметры модели. BM25 остаётся сильным базовым методом при сравнении с нейросетевыми системами.<ref name="bm25">{{статья
 +
|автор=Robertson S., Zaragoza H.
 +
|заглавие=The Probabilistic Relevance Framework: BM25 and Beyond
 +
|издание=Foundations and Trends in Information Retrieval
 +
|год=2009
 +
|том=3
 +
|номер=4
 +
|страницы=333—389
 +
|doi=10.1561/1500000019
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Онтологии, тезаурусы и графы знаний ===
 +
 
 +
[[Онтология (информатика)|Онтология]] представляет предметную область через классы объектов, свойства, отношения и формальные ограничения. Поиск на её основе включает распознавание сущностей, связывание с понятиями, '''расширение запроса''' (англ. ''query expansion''), применение логических правил и ранжирование.
 +
 
 +
В RDF знания задаются тройками «субъект — предикат — объект», например <code>(Париж, столица государства, Франция)</code>. OWL позволяет описывать классы, эквивалентность, несовместимость и ограничения на свойства.
 +
 
 +
[[Граф знаний]] (англ. ''knowledge graph'') представляет объекты вершинами, а отношения — рёбрами. Поиск может выполняться сопоставлением шаблонов, обходом путей, распространением активации или ранжированием вершин. Упрощённая формула случайного блуждания имеет вид:
 +
 
 +
<tex>
 +
r(v)=(1-\alpha)p(v)+
 +
\alpha\sum_{u\in N^-(v)}
 +
\frac{w_{uv}}{\sum_{z\in N^+(u)}w_{uz}}r(u).
 +
</tex>
 +
 
 +
Для связи текста с графом требуется связывание сущностей. Графы знаний часто используются совместно с обычным текстовым индексом.<ref name="kgir">{{книга
 +
|автор=Reinanda R., Meij E., de Rijke M.
 +
|заглавие=Knowledge Graphs: An Information Retrieval Perspective
 +
|место=Boston
 +
|издательство=Now Publishers
 +
|год=2020
 +
|серия=Foundations and Trends in Information Retrieval
 +
|doi=10.1561/1500000063
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Латентные и тематические модели ===
 +
 
 +
В латентно-семантическом анализе строится матрица «термин — документ»
 +
 
 +
<tex>X\in\mathbb{R}^{m\times n}</tex>
 +
 
 +
и выполняется сингулярное разложение:
 +
 
 +
<tex>X=U\Sigma V^T,\qquad X\approx U_k\Sigma_kV_k^T.</tex>
 +
 
 +
В модели LDA для документа задаётся распределение тем
 +
 
 +
<tex>\theta_d\sim\operatorname{Dirichlet}(\alpha),</tex>
 +
 
 +
а для каждой позиции выбираются тема и слово:
 +
 
 +
<tex>z_{dn}\sim\operatorname{Categorical}(\theta_d),\qquad w_{dn}\sim\operatorname{Categorical}(\phi_{z_{dn}}).</tex>
 +
 
 +
Тематические модели полезны для навигации и кластеризации, но принадлежность к одной теме не гарантирует релевантности.
 +
 
 +
=== Дистрибутивные и контекстуальные представления ===
 +
 
 +
Модели [[Word2vec]], [[GloVe]] и [[FastText]] преобразуют слова в плотные векторы:
 +
 
 +
<tex>w\mapsto\mathbf{v}_w\in\mathbb{R}^m.</tex>
 +
 
 +
Косинусное сходство определяется как
 +
 
 +
<tex>
 +
\cos(\mathbf{v}_a,\mathbf{v}_b)
 +
=
 +
\frac{\mathbf{v}_a^T\mathbf{v}_b}
 +
{\|\mathbf{v}_a\|_2\|\mathbf{v}_b\|_2}
 +
</tex>
 +
 
 +
Word2vec обучает представления через предсказание слова по контексту или контекста по слову.<ref name="word2vec">{{статья
 +
|автор=Mikolov T., Chen K., Corrado G., Dean J.
 +
|заглавие=Efficient Estimation of Word Representations in Vector Space
 +
|издание=arXiv
 +
|год=2013
 +
|номер=1301.3781
 +
|ссылка=https://arxiv.org/abs/1301.3781
 +
|язык=en
 +
}}</ref> GloVe использует глобальную статистику совместной встречаемости слов.<ref name="glove">{{статья
 +
|автор=Pennington J., Socher R., Manning C. D.
 +
|заглавие=GloVe: Global Vectors for Word Representation
 +
|издание=Proceedings of EMNLP
 +
|год=2014
 +
|страницы=1532—1543
 +
|doi=10.3115/v1/D14-1162
 +
|ссылка=https://aclanthology.org/D14-1162/
 +
|язык=en
 +
}}</ref>
 +
 
 +
В контекстуальных моделях представление слова зависит от предложения. [[Sentence-BERT]] специально обучается для сравнения предложений по косинусному сходству.<ref name="sbert">{{статья
 +
|автор=Reimers N., Gurevych I.
 +
|заглавие=Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
 +
|издание=Proceedings of EMNLP-IJCNLP
 +
|год=2019
 +
|страницы=3982—3992
 +
|doi=10.18653/v1/D19-1410
 +
|ссылка=https://aclanthology.org/D19-1410/
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Кросс-энкодеры, двухбашенные модели и позднее взаимодействие ===
 +
 
 +
'''Кросс-энкодер''' (англ. ''cross-encoder'') получает запрос и документ одновременно:
 +
 
 +
<tex>
 +
\mathbf{h}_{\mathrm{CLS}}
 +
=
 +
\operatorname{Encoder}_\theta
 +
([\mathrm{CLS}],q,[\mathrm{SEP}],d,[\mathrm{SEP}]),
 +
\qquad
 +
s_{\mathrm{CE}}(q,d)
 +
=
 +
\mathbf{w}^{T}\mathbf{h}_{\mathrm{CLS}}+b
 +
</tex>
 +
 
 +
Он обеспечивает точное сопоставление, но требует отдельной обработки каждой пары и обычно используется для переранжирования.<ref name="bert-reranker">{{статья
 +
|автор=Nogueira R., Cho K.
 +
|заглавие=Passage Re-ranking with BERT
 +
|издание=arXiv
 +
|год=2019
 +
|номер=1901.04085
 +
|ссылка=https://arxiv.org/abs/1901.04085
 +
|язык=en
 +
}}</ref>
 +
 
 +
В двухбашенной архитектуре (англ. ''bi-encoder'', ''dual encoder'') запрос и документ кодируются независимо:
 +
 
 +
<tex>
 +
\mathbf{q}=f_\theta(q),
 +
\qquad
 +
\mathbf{d}=g_\phi(d)
 +
</tex>
 +
 
 +
Оценка соответствия задаётся скалярным произведением или косинусной близостью. Известным примером такой архитектуры является [[Dense Passage Retrieval|Dense Passage Retriever]].<ref name="dpr">{{статья
 +
|автор=Karpukhin V., Oguz B., Min S., Lewis P., Wu L., Edunov S., Chen D., Yih W.-t.
 +
|заглавие=Dense Passage Retrieval for Open-Domain Question Answering
 +
|издание=Proceedings of EMNLP
 +
|год=2020
 +
|страницы=6769—6781
 +
|doi=10.18653/v1/2020.emnlp-main.550
 +
|ссылка=https://aclanthology.org/2020.emnlp-main.550/
 +
|язык=en
 +
}}</ref>
 +
 
 +
В моделях позднего взаимодействия сохраняются векторные представления отдельных токенов. В модели ColBERT оценка соответствия вычисляется по формуле:
 +
 
 +
<tex>
 +
s_{\mathrm{ColBERT}}(q,d)
 +
=
 +
\sum_{i=1}^{|q|}
 +
\max_{1\leq j\leq |d|}
 +
\mathbf{q}_i^{T}\mathbf{d}_j
 +
</tex>
 +
 
 +
Для каждого токена запроса выбирается наиболее близкий токен документа, после чего полученные значения суммируются.<ref name="colbert">{{статья
 +
|автор=Khattab O., Zaharia M.
 +
|заглавие=ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT
 +
|издание=Proceedings of SIGIR
 +
|год=2020
 +
|страницы=39—48
 +
|doi=10.1145/3397271.3401075
 +
|ссылка=https://arxiv.org/abs/2004.12832
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Обучаемые разреженные представления ===
 +
 
 +
Разреженные нейросетевые модели формируют вектор размерности словаря, в котором большинство координат равны нулю. Они могут активировать не только слова документа, но и семантически связанные термины. К этому направлению относятся SPLADE и DeepImpact.<ref name="splade">{{статья
 +
|автор=Formal T., Piwowarski B., Clinchant S.
 +
|заглавие=SPLADE: Sparse Lexical and Expansion Model for First Stage Ranking
 +
|издание=Proceedings of SIGIR
 +
|год=2021
 +
|страницы=2288—2292
 +
|doi=10.1145/3404835.3463098
 +
|язык=en
 +
}}</ref><ref name="deepimpact">{{статья
 +
|автор=Mallia A., Khattab O., Suel T., Tonellotto N.
 +
|заглавие=Learning Passage Impacts for Inverted Indexes
 +
|издание=Proceedings of SIGIR
 +
|год=2021
 +
|страницы=1723—1727
 +
|doi=10.1145/3404835.3463030
 +
|язык=en
 +
}}</ref>
 +
 
 +
== Обучение моделей ==
 +
 
 +
=== Источники обучающих данных ===
 +
 
 +
Для обучения поисковых моделей используются экспертные оценки релевантности, пары «вопрос — ответ», переходы пользователей по результатам, время взаимодействия с документом, поисковые журналы, ссылки и цитирования, слабая разметка и автоматически сгенерированные запросы.
 +
 
 +
Поведение пользователей является удобным, но смещённым источником разметки: пользователь чаще нажимает на результаты, уже расположенные высоко, а отсутствие перехода не обязательно означает нерелевантность.
 +
 
 +
=== Контрастное обучение ===
 +
 
 +
Пусть для запроса <tex>q</tex> известен релевантный документ <tex>d^+</tex> и набор отрицательных документов <tex>d_1^-,\ldots,d_m^-</tex>. Распространённая контрастная функция потерь имеет вид:
 +
 
 +
<tex>
 +
\mathcal{L}=-\log
 +
\frac{\exp(s(q,d^+)/\tau)}
 +
{\exp(s(q,d^+)/\tau)+\sum_{i=1}^{m}\exp(s(q,d_i^-)/\tau)},
 +
</tex>
 +
 
 +
где <tex>\tau</tex> — температура (англ. ''temperature'').
 +
 
 +
Тематически близкие, но нерелевантные документы называются '''сложными отрицательными примерами''' (англ. ''hard negatives''). Среди них могут оказаться неразмеченные релевантные документы — '''ложные отрицательные примеры''' (англ. ''false negatives'').
 +
 
 +
=== Попарные и списочные функции потерь ===
 +
 
 +
Попарная функция требует, чтобы релевантный документ оценивался выше нерелевантного:
 +
 
 +
<tex>
 +
\mathcal{L}_{\mathrm{pair}}=
 +
\max\bigl(0,\gamma-s(q,d^+)+s(q,d^-)\bigr),
 +
</tex>
 +
 
 +
где <tex>\gamma</tex> — требуемый отступ.
 +
 
 +
В списочном обучении (англ. ''listwise learning'') рассматривается сразу множество документов. Модель может оптимизировать вероятность правильного порядка или приближение поисковой метрики, например [[Normalized Discounted Cumulative Gain|nDCG]].
 +
 
 +
=== Дистилляция знаний ===
 +
 
 +
При [[Дистилляция знаний|дистилляции знаний]] сложная модель-учитель, например кросс-энкодер, создаёт оценки для большого числа пар. Более быстрая модель-ученик обучается воспроизводить эти оценки.
 +
 
 +
== Гибридный поиск ==
 +
 
 +
Лексические и нейросетевые методы совершают разные ошибки. Плотная модель хорошо находит перефразировки, но может пропустить редкий код или фамилию. BM25 сохраняет точные совпадения, но может не найти синонимичную формулировку.
 +
 
 +
=== Линейное объединение ===
 +
 
 +
После нормализации оценок применяется взвешенная сумма:
 +
 
 +
<tex>
 +
s_{\mathrm{hybrid}}(q,d)=
 +
\lambda s_{\mathrm{lex}}(q,d)+(1-\lambda)s_{\mathrm{sem}}(q,d),
 +
</tex>
 +
 
 +
где <tex>\lambda\in[0,1]</tex> регулирует вклад лексического поиска.
 +
 
 +
=== Reciprocal Rank Fusion ===
 +
 
 +
Метод [[Reciprocal Rank Fusion]] использует позиции документов:
 +
 
 +
<tex>
 +
\operatorname{RRF}(d)=
 +
\sum_{m=1}^{M}\frac{1}{k_0+\operatorname{rank}_m(d)}.
 +
</tex>
 +
 
 +
<ref name="rrf">{{статья
 +
|автор=Cormack G. V., Clarke C. L. A., Büttcher S.
 +
|заглавие=Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods
 +
|издание=Proceedings of SIGIR
 +
|год=2009
 +
|страницы=758—759
 +
|doi=10.1145/1571941.1572114
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Многоэтапное ранжирование ===
 +
 
 +
Распространённая схема включает:
 +
 
 +
# BM25, разреженный ретривер или плотную модель для поиска кандидатов;
 +
# объединение кандидатов из нескольких источников;
 +
# кросс-энкодер для переранжирования;
 +
# модель, учитывающую качество и свежесть;
 +
# фильтрацию, устранение дубликатов и диверсификацию.
 +
 
 +
== Индексирование и масштабирование ==
 +
 
 +
=== Инвертированный индекс ===
 +
 
 +
В инвертированном индексе для каждого термина хранится список документов, в которых он встречается. Дополнительно могут храниться позиции слов, частоты, поля документа и предварительно вычисленные веса.
 +
 
 +
=== Приближённый поиск ближайших соседей ===
 +
 
 +
Для плотных представлений применяются методы [[Приближённый поиск ближайших соседей|приближённого поиска ближайших соседей]] (англ. ''approximate nearest-neighbor search'', ANN): графы HNSW, инвертированные файловые индексы, кластеризация, [[Квантование векторов|квантование]] и локально-чувствительное хеширование.
 +
 
 +
HNSW строит многоуровневый граф, по которому поиск постепенно приближается к области ближайших векторов.<ref name="hnsw">{{статья
 +
|автор=Malkov Y. A., Yashunin D. A.
 +
|заглавие=Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs
 +
|издание=IEEE Transactions on Pattern Analysis and Machine Intelligence
 +
|год=2020
 +
|том=42
 +
|номер=4
 +
|страницы=824—836
 +
|doi=10.1109/TPAMI.2018.2889473
 +
|язык=en
 +
}}</ref>
 +
 
 +
Библиотека Faiss предоставляет методы поиска и кластеризации плотных векторов, включая реализации для графических процессоров.<ref name="faiss">{{статья
 +
|автор=Johnson J., Douze M., Jégou H.
 +
|заглавие=Billion-Scale Similarity Search with GPUs
 +
|издание=IEEE Transactions on Big Data
 +
|год=2021
 +
|том=7
 +
|номер=3
 +
|страницы=535—547
 +
|doi=10.1109/TBDATA.2019.2921572
 +
|ссылка=https://arxiv.org/abs/1702.08734
 +
|язык=en
 +
}}</ref>
 +
 
 +
Приближённый индекс вводит компромисс между скоростью, памятью и полнотой поиска.
 +
 
 +
== Оценка качества ==
 +
 
 +
Для оценки поисковой системы создаётся набор запросов и суждений о релевантности документов — '''qrels''' (англ. ''query relevance judgments'').
 +
 
 +
=== Precision и Recall ===
 +
 
 +
<tex>
 +
\operatorname{Precision@}k=
 +
\frac{\text{число релевантных документов в первых }k}{k},
 +
</tex>
 +
 
 +
<tex>
 +
\operatorname{Recall@}k=
 +
\frac{\text{число найденных релевантных документов}}
 +
{\text{общее число релевантных документов}}.
 +
</tex>
 +
 
 +
Для извлечения кандидатов особенно важна полнота: документ, не найденный на первом этапе, не может быть восстановлен переранжированием.
 +
 
 +
=== Mean Reciprocal Rank ===
 +
 
 +
<tex>
 +
\operatorname{MRR}=
 +
\frac{1}{|Q|}\sum_{q\in Q}\frac{1}{\operatorname{rank}_q}.
 +
</tex>
 +
 
 +
=== nDCG ===
 +
 
 +
<tex>
 +
\operatorname{DCG@}k=
 +
\sum_{i=1}^{k}\frac{2^{\operatorname{rel}_i}-1}{\log_2(i+1)},
 +
</tex>
 +
 
 +
<tex>
 +
\operatorname{nDCG@}k=
 +
\frac{\operatorname{DCG@}k}{\operatorname{IDCG@}k}.
 +
</tex>
 +
 
 +
<ref name="ndcg">{{статья
 +
|автор=Järvelin K., Kekäläinen J.
 +
|заглавие=Cumulated Gain-Based Evaluation of IR Techniques
 +
|издание=ACM Transactions on Information Systems
 +
|год=2002
 +
|том=20
 +
|номер=4
 +
|страницы=422—446
 +
|doi=10.1145/582415.582418
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Бенчмарки ===
 +
 
 +
[[BEIR]] содержит разнородные наборы данных для проверки переноса поисковых моделей между предметными областями.<ref name="beir">{{статья
 +
|автор=Thakur N., Reimers N., Rücklé A., Srivastava A., Gurevych I.
 +
|заглавие=BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models
 +
|издание=NeurIPS Datasets and Benchmarks
 +
|год=2021
 +
|ссылка=https://openreview.net/forum?id=wCu6T5xFjeJ
 +
|язык=en
 +
}}</ref>
 +
 
 +
[[MTEB]] оценивает текстовые эмбеддинги в поиске, классификации, кластеризации, семантическом сходстве и других задачах.<ref name="mteb">{{статья
 +
|автор=Muennighoff N. et al.
 +
|заглавие=MTEB: Massive Text Embedding Benchmark
 +
|издание=Proceedings of EACL
 +
|год=2023
 +
|страницы=2014—2037
 +
|doi=10.18653/v1/2023.eacl-main.148
 +
|ссылка=https://aclanthology.org/2023.eacl-main.148/
 +
|язык=en
 +
}}</ref>
 +
 
 +
Для русского языка предложен бенчмарк ruMTEB, включающий задачи семантического сходства, классификации, переранжирования и поиска.<ref name="rumteb">{{статья
 +
|автор=Snegirev A., Tikhonova M., Maksimova A., Fenogenova A., Abramov A.
 +
|заглавие=The Russian-focused embedders’ exploration: ruMTEB benchmark and Russian embedding model design
 +
|издание=Proceedings of NAACL
 +
|год=2025
 +
|страницы=236—254
 +
|doi=10.18653/v1/2025.naacl-long.12
 +
|ссылка=https://aclanthology.org/2025.naacl-long.12/
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Онлайн-оценка ===
 +
 
 +
В работающих системах измеряются частота переходов, доля успешных поисковых сессий, число переформулировок, время до нахождения ответа, пользовательская оценка, задержка ответа и вычислительная стоимость. Поведенческие метрики могут быть смещены и не всегда отражают истинную полезность.
-
* Запрос: «лучшие рестораны рядом со мной где подают вегетарианские блюда»
+
Качество рекомендуется проверять отдельно на коротких и длинных запросах, редких сущностях, числах и датах, отрицаниях, перефразировках, опечатках, новых документах, разных языках и неоднозначных формулировках.
-
** Семантический поиск поймёт, что «рядом со мной» означает поиск по геолокации, «вегетарианские блюда» — фильтр по типу кухни, а «лучшие» — необходимость ранжирования по отзывам или рейтингу.
+
-
* Запрос: «сколько лет было президенту США когда он умер»
+
-
** Семантический поиск распознает, что требуется числовой ответ (возраст), и сможет найти эту информацию, даже если в тексте документа указано «Президент [имя] скончался в возрасте [X] лет».
+
== Применение ==
== Применение ==
-
* '''Веб-поиск''' — [[Google]], [[Яндекс]] и другие поисковые системы используют элементы семантического поиска для улучшения результатов.
+
=== Веб-поиск ===
-
* '''Корпоративные поисковые системы''' — поиск по внутренней документации компаний.
+
-
* '''Виртуальные ассистенты и чат-боты''' — понимание и выполнение запросов пользователей.
+
-
* '''Системы рекомендаций''' — предложение контента или товаров на основе понимания интересов пользователя.
+
-
== Проблемы и вызовы ==
+
Семантические методы используются для распознавания сущностей, исправления и расширения запросов, формирования информационных панелей и ранжирования веб-страниц.
-
* '''Неоднозначность языка''' — многие слова имеют несколько значений, и выбор правильного зависит от контекста.
+
=== Корпоративный поиск ===
-
* '''Сложность понимания сарказма, иронии, метафор'''.
+
-
* '''Контекстная зависимость''' — смысл может меняться в зависимости от предыдущих запросов или пользовательских предпочтений.
+
-
* '''Масштабируемость''' — обработка огромных объёмов данных и сложных моделей требует значительных вычислительных ресурсов.
+
-
* '''Доменная адаптация''' — модели, обученные на общих корпусах (например, Википедия), могут плохо работать в узких предметных областях (медицина, юриспруденция) без дополнительного дообучения.
+
-
* '''Защита от атак''' — устойчивость к вредоносным запросам (adversarial queries) остаётся открытой проблемой.
+
-
== Актуальные исследования ==
+
Семантический поиск применяется к внутренним инструкциям, отчётам, договорам, базам знаний и переписке. Важны соблюдение прав доступа, работа с отраслевой терминологией и указание источника.
-
Современные исследования сосредоточены на:
+
=== Электронная коммерция ===
-
* '''Улучшении моделей глубокого обучения''' для NLP: разрабатываются более эффективные архитектуры (например, [[Retro]] и [[FiD]] для извлечения фактов из больших корпусов).
+
Запрос «лёгкая непромокаемая куртка для осени» должен быть связан с атрибутами товаров, даже если описание использует слова «водоотталкивающая» или «демисезонная».
-
* '''Создании универсальных мультиязычных эмбеддингов''' (например, [[Multilingual E5]], [[mDPR]]).
+
 
-
* '''Интеграции графовых нейронных сетей''' для учета структурных связей между документами.
+
=== Медицинский и научный поиск ===
-
* '''Персонализации поиска''' с учётом истории взаимодействия пользователя.
+
 
-
* '''Обеспечении конфиденциальности''' данных (приватный поиск, дифференциальная приватность).
+
В научных системах используются термины, онтологии, цитирования, авторские связи и семантические представления аннотаций. В медицине особенно важны точность терминов и происхождение данных.
-
* '''Гибридных подходах''', комбинирующих лексический и семантический поиск, что даёт наилучшие результаты на многих бенчмарках.
+
 
-
* '''Использовании больших языковых моделей (LLM)''' для генерации синтетических запросов и документов с целью улучшения обучения плотных ретриверов.
+
=== Поиск программного кода ===
 +
 
 +
Запрос может описывать требуемое поведение естественным языком, а система — находить функции или фрагменты программы с похожей функциональностью. Синтаксическое сходство и сходство поведения не всегда совпадают.
 +
 
 +
=== Диалоговые системы и RAG ===
 +
 
 +
В системах генерации, дополненной поиском (англ. ''retrieval-augmented generation'', RAG), сначала находятся документы, а затем языковая модель формирует ответ на их основе.<ref name="rag">{{статья
 +
|автор=Lewis P. et al.
 +
|заглавие=Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
 +
|издание=Advances in Neural Information Processing Systems
 +
|год=2020
 +
|том=33
 +
|страницы=9459—9474
 +
|ссылка=https://arxiv.org/abs/2005.11401
 +
|язык=en
 +
}}</ref>
 +
 
 +
Нерелевантный, устаревший или намеренно вредоносный фрагмент может повлиять на сгенерированный ответ. Поэтому необходимы проверка источников, фильтрация, цитирование и оценка соответствия ответа найденным материалам.
 +
 
 +
== Ограничения и проблемы ==
 +
 
 +
=== Неоднозначность и семантический дрейф ===
 +
 
 +
Короткий запрос может иметь несколько интерпретаций. '''Семантический дрейф''' (англ. ''semantic drift'') возникает, когда расширение запроса или поиск близких векторов уводит систему к связанной, но другой теме.
 +
 
 +
=== Отрицания, числа и точные значения ===
 +
 
 +
Модели могут переоценивать сходство предложений, различающихся отрицанием. Небольшое изменение числа, даты, дозировки, артикула или версии программы может полностью менять ответ, но слабо влиять на общий вектор текста.
 +
 
 +
=== Длинные документы ===
 +
 
 +
Один вектор может недостаточно точно представлять документ с несколькими темами. Чанкинг решает часть проблемы, но требует выбора размера фрагмента, перекрытия и способа сохранения контекста.
 +
 
 +
=== Доменный сдвиг и многоязычность ===
 +
 
 +
'''Доменный сдвиг''' (англ. ''domain shift'') возникает, когда рабочие данные отличаются от обучающих. Модель, обученная на веб-страницах, может хуже работать с юридическими или медицинскими текстами. Качество разных языков в одной модели также может различаться.
 +
 
 +
=== Неполнота графов и объяснимость ===
 +
 
 +
Отсутствие факта в графе не означает его ложность. Для плотного нейросетевого поиска объяснить близость двух векторов сложнее, чем показать совпавшие слова в лексическом поиске.
 +
 
 +
=== Смещения, конфиденциальность и безопасность ===
 +
 
 +
Модели наследуют статистические смещения обучающих данных. Индексы и эмбеддинги могут содержать конфиденциальную информацию. В корпоративных системах права доступа должны проверяться до передачи фрагментов языковой модели. Системы RAG уязвимы к намеренно добавленным документам с ложной информацией или инструкциями для модели.
 +
 
 +
=== Вычислительная стоимость ===
 +
 
 +
На практике приходится искать компромисс между качеством, задержкой, объёмом памяти и стоимостью вычислений.
 +
 
 +
== Современные направления исследований ==
 +
 
 +
=== Универсальные и инструктивные эмбеддинги ===
 +
 
 +
Модели семейства E5 обучаются на разнородных парах текстов с использованием слабой разметки и контрастной функции потерь.<ref name="e5">{{статья
 +
|автор=Wang L., Yang N., Huang X., Jiao B., Yang L., Jiang D., Majumder R., Wei F.
 +
|заглавие=Text Embeddings by Weakly-Supervised Contrastive Pre-training
 +
|издание=arXiv
 +
|год=2022
 +
|номер=2212.03533
 +
|ссылка=https://arxiv.org/abs/2212.03533
 +
|язык=en
 +
}}</ref>
 +
 
 +
Большие языковые модели используются для создания синтетических обучающих данных для эмбеддингов.<ref name="llmembed">{{статья
 +
|автор=Wang L., Yang N., Huang X., Yang L., Majumder R., Wei F.
 +
|заглавие=Improving Text Embeddings with Large Language Models
 +
|издание=Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics
 +
|год=2024
 +
|страницы=11897—11916
 +
|doi=10.18653/v1/2024.acl-long.642
 +
|ссылка=https://aclanthology.org/2024.acl-long.642/
 +
|язык=en
 +
}}</ref>
 +
 
 +
BGE-M3 объединяет плотный, разреженный и многовекторный режимы поиска и поддерживает многоязычные тексты и длинные входные последовательности.<ref name="bgem3">{{статья
 +
|автор=Chen J., Xiao S., Zhang P., Luo K., Lian D., Liu Z.
 +
|заглавие=BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation
 +
|издание=arXiv
 +
|год=2024
 +
|номер=2402.03216
 +
|ссылка=https://arxiv.org/abs/2402.03216
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Генеративное расширение запроса ===
 +
 
 +
В методе HyDE языковая модель создаёт гипотетический документ, который мог бы отвечать на запрос. Вектор этого документа используется для поиска реальных материалов.<ref name="hyde">{{статья
 +
|автор=Gao L., Ma X., Lin J., Callan J.
 +
|заглавие=Precise Zero-Shot Dense Retrieval without Relevance Labels
 +
|издание=Proceedings of ACL
 +
|год=2023
 +
|страницы=1762—1777
 +
|doi=10.18653/v1/2023.acl-long.99
 +
|ссылка=https://aclanthology.org/2023.acl-long.99/
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Графово-усиленный поиск ===
 +
 
 +
KG²RAG получает семантически близкие исходные фрагменты, затем расширяет и упорядочивает их с помощью графа знаний.<ref name="kg2rag">{{статья
 +
|автор=Zhu X., Xie Y., Liu Y., Li Y., Hu W.
 +
|заглавие=Knowledge Graph-Guided Retrieval Augmented Generation
 +
|издание=Proceedings of NAACL
 +
|год=2025
 +
|страницы=8912—8924
 +
|doi=10.18653/v1/2025.naacl-long.449
 +
|ссылка=https://aclanthology.org/2025.naacl-long.449/
 +
|язык=en
 +
}}</ref>
 +
 
 +
GNN-Ret строит граф фрагментов по структурным и лексическим связям и применяет графовую нейронную сеть для ранжирования.<ref name="gnnret">{{статья
 +
|автор=Li Z., Guo Q., Shao J., Song L., Bian J., Zhang J., Wang R.
 +
|заглавие=Graph Neural Network Enhanced Retrieval for Question Answering of Large Language Models
 +
|издание=Proceedings of NAACL
 +
|год=2025
 +
|страницы=6612—6633
 +
|doi=10.18653/v1/2025.naacl-long.337
 +
|ссылка=https://aclanthology.org/2025.naacl-long.337/
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Русскоязычные эмбеддинги ===
 +
 
 +
В 2025 году была представлена модель GigaEmbeddings, обученная с использованием контрастного предварительного обучения, сложных отрицательных примеров и многозадачной настройки; модель оценивалась на ruMTEB.<ref name="gigaembeddings">{{статья
 +
|автор=Kolodin E., Ianina A.
 +
|заглавие=GigaEmbeddings — Efficient Russian Language Embedding Model
 +
|издание=Proceedings of the 10th Workshop on Slavic Natural Language Processing
 +
|год=2025
 +
|страницы=17—24
 +
|doi=10.18653/v1/2025.bsnlp-1.3
 +
|ссылка=https://aclanthology.org/2025.bsnlp-1.3/
 +
|язык=en
 +
}}</ref>
 +
 
 +
=== Мультимодальный, временной и объяснимый поиск ===
 +
 
 +
Мультимодальные модели помещают текст, изображения, звук и видео в совместное пространство. Временной поиск учитывает изменение коллекции и значения терминов. Объяснимый поиск выделяет совпавшие фрагменты, пути в графе знаний и активированные термины разреженной модели.
 +
 
 +
== Отличие от преимущественно лексического поиска ==
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Свойство
 +
! Преимущественно лексический поиск
 +
! Семантический поиск
 +
|-
 +
| Основной сигнал
 +
| Совпадение терминов
 +
| Значение, контекст, понятия и отношения
 +
|-
 +
| Перефразировки
 +
| Могут быть пропущены
 +
| Часто распознаются лучше
 +
|-
 +
| Редкие имена и коды
 +
| Обычно обрабатываются хорошо
 +
| Могут быть потеряны в общем векторе
 +
|-
 +
| Объяснимость
 +
| Относительно высокая
 +
| Зависит от метода
 +
|-
 +
| Требования к обучению
 +
| Могут быть минимальными
 +
| Часто нужны корпуса, разметка или внешняя база знаний
 +
|-
 +
| Вычислительная стоимость
 +
| Обычно ниже
 +
| Может быть значительно выше
 +
|-
 +
| Типичная ошибка
 +
| Не найден документ с другой формулировкой
 +
| Найден близкий по теме, но нерелевантный документ
 +
|}
 +
 
 +
Противопоставление условно: современные семантические системы почти всегда сохраняют лексические компоненты.
== См. также ==
== См. также ==
-
* [[Обработка естественного языка]]
+
* [[Информационный поиск]]
-
* [[Машинное обучение]]
+
* [[Релевантность]]
-
* [[Компьютерная лингвистика]]
+
* [[Векторная модель]]
-
* [[Поиск информации]]
+
* [[TF-IDF]]
 +
* [[Okapi BM25]]
* [[Онтология (информатика)]]
* [[Онтология (информатика)]]
 +
* [[Семантическая паутина]]
* [[Граф знаний]]
* [[Граф знаний]]
-
* [[Векторные представления слов]]
+
* [[Дистрибутивная семантика]]
-
* [[Трансформер (архитектура нейронной сети)]]
+
* [[Тематическое моделирование]]
-
* [[Плотный поиск]]
+
* [[Латентно-семантический анализ]]
 +
* [[Векторное представление слов]]
 +
* [[Трансформер (архитектура глубокого обучения)]]
 +
* [[Обучение ранжированию]]
* [[Контрастное обучение]]
* [[Контрастное обучение]]
-
* [[BM25]]
+
* [[Приближённый поиск ближайших соседей]]
 +
* [[Генерация, дополненная поиском]]
 +
* [[Обработка естественного языка]]
== Примечания ==
== Примечания ==
Строка 150: Строка 828:
== Литература ==
== Литература ==
-
* {{статья |автор=Salton G., Wong A., Yang C. S. |заглавие=A vector space model for automatic indexing |издание=Communications of the ACM |год=1975 |том=18 |номер=11 |страницы=613–627}}
+
* {{статья
-
* {{статья |автор=Mikolov T., Chen K., Corrado G., Dean J. |заглавие=Efficient estimation of word representations in vector space |издание=arXiv preprint arXiv:1301.3781 |год=2013}}
+
|автор=Salton G., Wong A., Yang C. S.
-
* {{статья |автор=Devlin J., Chang M. W., Lee K., Toutanova K. |заглавие=BERT: Pre-training of deep bidirectional transformers for language understanding |издание=arXiv preprint arXiv:1810.04805 |год=2018}}
+
|заглавие=A Vector Space Model for Automatic Indexing
-
* {{статья |автор=Karpukhin V., et al. |заглавие=Dense Passage Retrieval for Open-Domain Question Answering |издание=Proceedings of EMNLP |год=2020 |ссылка=https://arxiv.org/abs/2004.04906}}
+
|издание=Communications of the ACM
-
* {{статья |автор=Khattab O., Zaharia M. |заглавие=ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT |издание=Proceedings of SIGIR |год=2020 |ссылка=https://arxiv.org/abs/2004.12832}}
+
|год=1975
-
* {{статья |автор=Yang Y., et al. |заглавие=Learning to Rank with Hybrid Retrieval |издание=Proceedings of SIGIR |год=2021}}
+
|том=18
-
* {{статья |автор=Ni J., et al. |заглавие=E5: EmbEddings from bidirEctional Encoder rEpresentations for dense retrieval |издание=arXiv preprint arXiv:2212.03533 |год=2022}}
+
|номер=11
-
* {{статья |автор=Radford A., Wu J., Child R., Luan D., Amodei D., Sutskever I. |заглавие=Language models are unsupervised multitask learners |издание=OpenAI Blog |год=2019 |том=1 |номер=8 |страницы=9}}
+
|страницы=613—620
-
* {{книга |автор=Brouwer I. J. |заглавие=Natural language understanding for semantic search |издательство=University of Twente |год=2019}} (магистерская диссертация)
+
|doi=10.1145/361219.361220
-
* {{статья |автор=Garg S., Agarwal S., Sarma K. C. |заглавие=A survey on semantic search |издание=2020 International Conference on Emerging Trends in Information Technology and Engineering (ICETE) |год=2020 |страницы=1–6 |издательство=IEEE}}
+
|язык=en
-
* {{статья |автор=Thakur N., et al. |заглавие=BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models |издание=NeurIPS Datasets and Benchmarks |год=2021 |ссылка=https://arxiv.org/abs/2104.08663}}
+
}}
-
* {{статья |автор=Muennighoff N., et al. |заглавие=MTEB: Massive Text Embedding Benchmark |издание=arXiv preprint arXiv:2210.07316 |год=2022}}
+
* {{статья
 +
|автор=Deerwester S., Dumais S. T., Furnas G. W., Landauer T. K., Harshman R.
 +
|заглавие=Indexing by Latent Semantic Analysis
 +
|издание=Journal of the American Society for Information Science
 +
|год=1990
 +
|том=41
 +
|номер=6
 +
|страницы=391—407
 +
|doi=10.1002/(SICI)1097-4571(199009)41:6&lt;391::AID-ASI1&gt;3.0.CO;2-9
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Robertson S., Zaragoza H.
 +
|заглавие=The Probabilistic Relevance Framework: BM25 and Beyond
 +
|издание=Foundations and Trends in Information Retrieval
 +
|год=2009
 +
|том=3
 +
|номер=4
 +
|страницы=333—389
 +
|doi=10.1561/1500000019
 +
|язык=en
 +
}}
 +
* {{книга
 +
|автор=Manning C. D., Raghavan P., Schütze H.
 +
|заглавие=Introduction to Information Retrieval
 +
|место=Cambridge
 +
|издательство=Cambridge University Press
 +
|год=2008
 +
|isbn=978-0-521-86571-5
 +
|ссылка=https://nlp.stanford.edu/IR-book/
 +
|язык=en
 +
}}
 +
* {{книга
 +
|автор=Reinanda R., Meij E., de Rijke M.
 +
|заглавие=Knowledge Graphs: An Information Retrieval Perspective
 +
|место=Boston
 +
|издательство=Now Publishers
 +
|год=2020
 +
|серия=Foundations and Trends in Information Retrieval
 +
|doi=10.1561/1500000063
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Devlin J., Chang M.-W., Lee K., Toutanova K.
 +
|заглавие=BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
 +
|издание=Proceedings of NAACL-HLT
 +
|год=2019
 +
|страницы=4171—4186
 +
|doi=10.18653/v1/N19-1423
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Reimers N., Gurevych I.
 +
|заглавие=Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
 +
|издание=Proceedings of EMNLP-IJCNLP
 +
|год=2019
 +
|страницы=3982—3992
 +
|doi=10.18653/v1/D19-1410
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Karpukhin V. et al.
 +
|заглавие=Dense Passage Retrieval for Open-Domain Question Answering
 +
|издание=Proceedings of EMNLP
 +
|год=2020
 +
|страницы=6769—6781
 +
|doi=10.18653/v1/2020.emnlp-main.550
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Khattab O., Zaharia M.
 +
|заглавие=ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT
 +
|издание=Proceedings of SIGIR
 +
|год=2020
 +
|страницы=39—48
 +
|doi=10.1145/3397271.3401075
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Formal T., Piwowarski B., Clinchant S.
 +
|заглавие=SPLADE: Sparse Lexical and Expansion Model for First Stage Ranking
 +
|издание=Proceedings of SIGIR
 +
|год=2021
 +
|страницы=2288—2292
 +
|doi=10.1145/3404835.3463098
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Thakur N., Reimers N., Rücklé A., Srivastava A., Gurevych I.
 +
|заглавие=BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models
 +
|издание=NeurIPS Datasets and Benchmarks
 +
|год=2021
 +
|ссылка=https://openreview.net/forum?id=wCu6T5xFjeJ
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Muennighoff N. et al.
 +
|заглавие=MTEB: Massive Text Embedding Benchmark
 +
|издание=Proceedings of EACL
 +
|год=2023
 +
|страницы=2014—2037
 +
|doi=10.18653/v1/2023.eacl-main.148
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Gao L., Ma X., Lin J., Callan J.
 +
|заглавие=Precise Zero-Shot Dense Retrieval without Relevance Labels
 +
|издание=Proceedings of ACL
 +
|год=2023
 +
|страницы=1762—1777
 +
|doi=10.18653/v1/2023.acl-long.99
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Wang L., Yang N., Huang X., Yang L., Majumder R., Wei F.
 +
|заглавие=Improving Text Embeddings with Large Language Models
 +
|издание=Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics
 +
|год=2024
 +
|страницы=11897—11916
 +
|doi=10.18653/v1/2024.acl-long.642
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Chen J., Xiao S., Zhang P., Luo K., Lian D., Liu Z.
 +
|заглавие=BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation
 +
|издание=arXiv
 +
|год=2024
 +
|номер=2402.03216
 +
|ссылка=https://arxiv.org/abs/2402.03216
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Snegirev A., Tikhonova M., Maksimova A., Fenogenova A., Abramov A.
 +
|заглавие=The Russian-focused embedders’ exploration: ruMTEB benchmark and Russian embedding model design
 +
|издание=Proceedings of NAACL
 +
|год=2025
 +
|страницы=236—254
 +
|doi=10.18653/v1/2025.naacl-long.12
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Zhu X., Xie Y., Liu Y., Li Y., Hu W.
 +
|заглавие=Knowledge Graph-Guided Retrieval Augmented Generation
 +
|издание=Proceedings of NAACL
 +
|год=2025
 +
|страницы=8912—8924
 +
|doi=10.18653/v1/2025.naacl-long.449
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Li Z., Guo Q., Shao J., Song L., Bian J., Zhang J., Wang R.
 +
|заглавие=Graph Neural Network Enhanced Retrieval for Question Answering of Large Language Models
 +
|издание=Proceedings of NAACL
 +
|год=2025
 +
|страницы=6612—6633
 +
|doi=10.18653/v1/2025.naacl-long.337
 +
|язык=en
 +
}}
 +
* {{статья
 +
|автор=Kolodin E., Ianina A.
 +
|заглавие=GigaEmbeddings — Efficient Russian Language Embedding Model
 +
|издание=Proceedings of the 10th Workshop on Slavic Natural Language Processing
 +
|год=2025
 +
|страницы=17—24
 +
|doi=10.18653/v1/2025.bsnlp-1.3
 +
|язык=en
 +
}}
 +
* {{cite web
 +
|url=https://www.w3.org/TR/rdf11-concepts/
 +
|title=RDF 1.1 Concepts and Abstract Syntax
 +
|publisher=World Wide Web Consortium
 +
|lang=en
 +
|accessdate=2026-07-26
 +
}}
 +
* {{cite web
 +
|url=https://www.w3.org/TR/owl2-syntax/
 +
|title=OWL 2 Web Ontology Language: Structural Specification and Functional-Style Syntax
 +
|publisher=World Wide Web Consortium
 +
|lang=en
 +
|accessdate=2026-07-26
 +
}}
-
[[Категория:Поиск информации]]
+
[[Категория:Информационный поиск]]
[[Категория:Обработка естественного языка]]
[[Категория:Обработка естественного языка]]
 +
[[Категория:Компьютерная лингвистика]]
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
-
[[Категория:Искусственный интеллект]]
+
[[Категория:Семантическая паутина]]

Текущая версия

Содержание

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

Термин «семантический поиск» не обозначает один определённый алгоритм. К нему относят использование тезаурусов и онтологий, поиск по графам знаний, методы дистрибутивной семантики, тематические модели, нейросетевые модели представления текста, обучение ранжированию и гибридные системы, объединяющие лексические и семантические сигналы.

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

Терминология

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

  • лексическое совпадение (англ. lexical matching) — наличие одинаковых или морфологически связанных слов в запросе и документе;
  • семантическое сходство (англ. semantic similarity) — близость значений двух текстов;
  • релевантность (англ. relevance) — практическая полезность документа для конкретного запроса;
  • намерение пользователя (англ. search intent) — задача, которую пользователь пытается решить;
  • контекст — сведения, влияющие на интерпретацию запроса: предыдущие реплики, предметная область, язык, время, местоположение и другие факторы;
  • поисковый кандидат (англ. retrieval candidate) — документ, выбранный быстрым первым этапом для последующей более точной оценки.

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

Векторный поиск (англ. vector search) также не является полным синонимом семантического поиска. Это технический способ находить близкие объекты в векторном пространстве. Насколько найденная близость отражает смысл и релевантность, зависит от модели представления, данных обучения, функции сходства и способа индексирования.

История

Исследования автоматического поиска информации начались задолго до появления современных нейронных сетей. В 1950—1970-х годах развивались методы индексирования документов, статистической оценки важности терминов и представления текстов в виде числовых векторов. Одной из основных моделей стала векторная модель, в которой запрос и документ рассматриваются как точки в пространстве терминов, а их близость определяется, например, косинусной мерой.[1]

В 1980—1990-х годах появились методы выявления скрытой структуры коллекции документов. Латентно-семантический анализ использовал сингулярное разложение матрицы, чтобы перейти от отдельных терминов к латентным направлениям, приблизительно соответствующим темам или совместно встречающимся группам слов.[1] Позднее были предложены вероятностный латентно-семантический анализ и латентное размещение Дирихле.[1][1]

Параллельно развивались символические методы представления знаний. Лексические сети, такие как WordNet, описывали синонимические группы и отношения между значениями слов.[1] Исследования семантической паутины привели к распространению форматов RDF и OWL.[1][1]

В 2010-х годах широкое распространение получили распределённые векторные представления слов, включая Word2vec, GloVe и FastText. Следующий этап был связан с контекстуальными языковыми моделями, в частности BERT, в которых представление слова зависит от окружающего текста.[1]

В 2020-х годах основными направлениями стали плотный нейросетевой поиск (англ. dense retrieval), обучаемые разреженные представления (англ. learned sparse retrieval), позднее взаимодействие токенов (англ. late interaction), гибридное ранжирование и использование поиска в системах генерации, дополненной поиском.

Формальная постановка задачи

Пусть задан запрос q, коллекция документов

D=\{d_1,d_2,\ldots,d_N\}

и, возможно, дополнительный контекст c. Поисковая система строит функцию релевантности

s(q,d\mid c)\in\mathbb{R},

после чего упорядочивает документы по убыванию оценки:

\pi_q=\operatorname{argsort}_{d\in D}\,s(q,d\mid c).

Первые k документов образуют результат поиска:

\operatorname{TopK}(q,D)=\{d_{\pi_1},\ldots,d_{\pi_k}\}.

Функция s может учитывать совпадение слов, статистическую важность терминов, семантическое сходство векторов, отношения между сущностями, категории онтологии, структуру графа, метаданные, качество и актуальность источника.

Во многих системах различают два этапа:

  1. извлечение кандидатов (англ. candidate retrieval) — быстрый поиск сравнительно небольшого множества потенциально релевантных документов;
  2. переранжирование (англ. reranking) — более точная, но вычислительно дорогая оценка найденных кандидатов.

Общая архитектура

Обработка коллекции

Документы очищаются, разбиваются на фрагменты, снабжаются метаданными и преобразуются в индексируемое представление. Разбиение на фрагменты называется чанкингом (англ. chunking). Слишком короткие фрагменты теряют контекст, а слишком длинные могут содержать несколько тем.

На этом этапе выполняются токенизация, лемматизация, выделение именованных сущностей, связывание сущностей (англ. entity linking), тематическая классификация, вычисление эмбеддингов, построение графов и сохранение терминов в инвертированном индексе.

Анализ запроса

Система может определять язык, исправлять опечатки, выделять сущности, распознавать намерение пользователя и преобразовывать запрос в одно или несколько представлений. Например, запрос «ягуар скорость» может относиться к животному или автомобилю.

Извлечение кандидатов и переранжирование

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

Постобработка

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

Основные подходы

Подход Основное представление Преимущества Ограничения
Лексический и вероятностный поиск Термины, частоты, инвертированный индекс Высокая скорость, интерпретируемость, точный поиск названий и редких терминов Ограниченный учёт синонимов и перефразировок
Онтологии и тезаурусы Понятия, классы, явно заданные отношения Объяснимость и логические ограничения Высокая стоимость разработки и сопровождения
Графы знаний Сущности и отношения Поддержка структурированных и многошаговых запросов Неполнота графа и ошибки связывания сущностей
Латентные и тематические модели Скрытые факторы или распределения по темам Выявление общей тематики, снижение размерности Ограниченный учёт порядка слов
Плотные нейросетевые представления Один вектор запроса и один вектор документа Работа с перефразировками, быстрый поиск после индексирования Потеря деталей и зависимость от обучающих данных
Позднее взаимодействие Векторы отдельных токенов Точное сопоставление частей запроса и документа Более крупный индекс
Обучаемый разреженный поиск Взвешенные термины расширенного словаря Совместимость с инвертированным индексом Рост индекса и стоимость обучения
Гибридный поиск Несколько представлений одновременно Устойчивость к разным типам запросов Необходимость настройки объединения

Лексические и вероятностные методы

Одним из базовых представлений является TF-IDF. Широко используемая функция BM25 имеет вид:


\operatorname{BM25}(q,d)=
\sum_{t\in q}
\operatorname{IDF}(t)
\frac{f(t,d)(k_1+1)}
{f(t,d)+k_1\left(1-b+b\frac{|d|}{\operatorname{avgdl}}\right)}.

Здесь f(t,d) — частота термина, |d| — длина документа, \operatorname{avgdl} — средняя длина документа, k_1 и b — параметры модели. BM25 остаётся сильным базовым методом при сравнении с нейросетевыми системами.[1]

Онтологии, тезаурусы и графы знаний

Онтология представляет предметную область через классы объектов, свойства, отношения и формальные ограничения. Поиск на её основе включает распознавание сущностей, связывание с понятиями, расширение запроса (англ. query expansion), применение логических правил и ранжирование.

В RDF знания задаются тройками «субъект — предикат — объект», например (Париж, столица государства, Франция). OWL позволяет описывать классы, эквивалентность, несовместимость и ограничения на свойства.

Граф знаний (англ. knowledge graph) представляет объекты вершинами, а отношения — рёбрами. Поиск может выполняться сопоставлением шаблонов, обходом путей, распространением активации или ранжированием вершин. Упрощённая формула случайного блуждания имеет вид:


r(v)=(1-\alpha)p(v)+
\alpha\sum_{u\in N^-(v)}
\frac{w_{uv}}{\sum_{z\in N^+(u)}w_{uz}}r(u).

Для связи текста с графом требуется связывание сущностей. Графы знаний часто используются совместно с обычным текстовым индексом.[1]

Латентные и тематические модели

В латентно-семантическом анализе строится матрица «термин — документ»

X\in\mathbb{R}^{m\times n}

и выполняется сингулярное разложение:

X=U\Sigma V^T,\qquad X\approx U_k\Sigma_kV_k^T.

В модели LDA для документа задаётся распределение тем

\theta_d\sim\operatorname{Dirichlet}(\alpha),

а для каждой позиции выбираются тема и слово:

z_{dn}\sim\operatorname{Categorical}(\theta_d),\qquad w_{dn}\sim\operatorname{Categorical}(\phi_{z_{dn}}).

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

Дистрибутивные и контекстуальные представления

Модели Word2vec, GloVe и FastText преобразуют слова в плотные векторы:

w\mapsto\mathbf{v}_w\in\mathbb{R}^m.

Косинусное сходство определяется как


\cos(\mathbf{v}_a,\mathbf{v}_b)
=
\frac{\mathbf{v}_a^T\mathbf{v}_b}
{\|\mathbf{v}_a\|_2\|\mathbf{v}_b\|_2}

Word2vec обучает представления через предсказание слова по контексту или контекста по слову.[1] GloVe использует глобальную статистику совместной встречаемости слов.[1]

В контекстуальных моделях представление слова зависит от предложения. Sentence-BERT специально обучается для сравнения предложений по косинусному сходству.[1]

Кросс-энкодеры, двухбашенные модели и позднее взаимодействие

Кросс-энкодер (англ. cross-encoder) получает запрос и документ одновременно:


\mathbf{h}_{\mathrm{CLS}}
=
\operatorname{Encoder}_\theta
([\mathrm{CLS}],q,[\mathrm{SEP}],d,[\mathrm{SEP}]),
\qquad
s_{\mathrm{CE}}(q,d)
=
\mathbf{w}^{T}\mathbf{h}_{\mathrm{CLS}}+b

Он обеспечивает точное сопоставление, но требует отдельной обработки каждой пары и обычно используется для переранжирования.[1]

В двухбашенной архитектуре (англ. bi-encoder, dual encoder) запрос и документ кодируются независимо:


\mathbf{q}=f_\theta(q),
\qquad
\mathbf{d}=g_\phi(d)

Оценка соответствия задаётся скалярным произведением или косинусной близостью. Известным примером такой архитектуры является Dense Passage Retriever.[1]

В моделях позднего взаимодействия сохраняются векторные представления отдельных токенов. В модели ColBERT оценка соответствия вычисляется по формуле:


s_{\mathrm{ColBERT}}(q,d)
=
\sum_{i=1}^{|q|}
\max_{1\leq j\leq |d|}
\mathbf{q}_i^{T}\mathbf{d}_j

Для каждого токена запроса выбирается наиболее близкий токен документа, после чего полученные значения суммируются.[1]

Обучаемые разреженные представления

Разреженные нейросетевые модели формируют вектор размерности словаря, в котором большинство координат равны нулю. Они могут активировать не только слова документа, но и семантически связанные термины. К этому направлению относятся SPLADE и DeepImpact.[1][1]

Обучение моделей

Источники обучающих данных

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

Поведение пользователей является удобным, но смещённым источником разметки: пользователь чаще нажимает на результаты, уже расположенные высоко, а отсутствие перехода не обязательно означает нерелевантность.

Контрастное обучение

Пусть для запроса q известен релевантный документ d^+ и набор отрицательных документов d_1^-,\ldots,d_m^-. Распространённая контрастная функция потерь имеет вид:


\mathcal{L}=-\log
\frac{\exp(s(q,d^+)/\tau)}
{\exp(s(q,d^+)/\tau)+\sum_{i=1}^{m}\exp(s(q,d_i^-)/\tau)},

где \tau — температура (англ. temperature).

Тематически близкие, но нерелевантные документы называются сложными отрицательными примерами (англ. hard negatives). Среди них могут оказаться неразмеченные релевантные документы — ложные отрицательные примеры (англ. false negatives).

Попарные и списочные функции потерь

Попарная функция требует, чтобы релевантный документ оценивался выше нерелевантного:


\mathcal{L}_{\mathrm{pair}}=
\max\bigl(0,\gamma-s(q,d^+)+s(q,d^-)\bigr),

где \gamma — требуемый отступ.

В списочном обучении (англ. listwise learning) рассматривается сразу множество документов. Модель может оптимизировать вероятность правильного порядка или приближение поисковой метрики, например nDCG.

Дистилляция знаний

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

Гибридный поиск

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

Линейное объединение

После нормализации оценок применяется взвешенная сумма:


s_{\mathrm{hybrid}}(q,d)=
\lambda s_{\mathrm{lex}}(q,d)+(1-\lambda)s_{\mathrm{sem}}(q,d),

где \lambda\in[0,1] регулирует вклад лексического поиска.

Reciprocal Rank Fusion

Метод Reciprocal Rank Fusion использует позиции документов:


\operatorname{RRF}(d)=
\sum_{m=1}^{M}\frac{1}{k_0+\operatorname{rank}_m(d)}.

[1]

Многоэтапное ранжирование

Распространённая схема включает:

  1. BM25, разреженный ретривер или плотную модель для поиска кандидатов;
  2. объединение кандидатов из нескольких источников;
  3. кросс-энкодер для переранжирования;
  4. модель, учитывающую качество и свежесть;
  5. фильтрацию, устранение дубликатов и диверсификацию.

Индексирование и масштабирование

Инвертированный индекс

В инвертированном индексе для каждого термина хранится список документов, в которых он встречается. Дополнительно могут храниться позиции слов, частоты, поля документа и предварительно вычисленные веса.

Приближённый поиск ближайших соседей

Для плотных представлений применяются методы приближённого поиска ближайших соседей (англ. approximate nearest-neighbor search, ANN): графы HNSW, инвертированные файловые индексы, кластеризация, квантование и локально-чувствительное хеширование.

HNSW строит многоуровневый граф, по которому поиск постепенно приближается к области ближайших векторов.[1]

Библиотека Faiss предоставляет методы поиска и кластеризации плотных векторов, включая реализации для графических процессоров.[1]

Приближённый индекс вводит компромисс между скоростью, памятью и полнотой поиска.

Оценка качества

Для оценки поисковой системы создаётся набор запросов и суждений о релевантности документов — qrels (англ. query relevance judgments).

Precision и Recall


\operatorname{Precision@}k=
\frac{\text{число релевантных документов в первых }k}{k},


\operatorname{Recall@}k=
\frac{\text{число найденных релевантных документов}}
{\text{общее число релевантных документов}}.

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

Mean Reciprocal Rank


\operatorname{MRR}=
\frac{1}{|Q|}\sum_{q\in Q}\frac{1}{\operatorname{rank}_q}.

nDCG


\operatorname{DCG@}k=
\sum_{i=1}^{k}\frac{2^{\operatorname{rel}_i}-1}{\log_2(i+1)},


\operatorname{nDCG@}k=
\frac{\operatorname{DCG@}k}{\operatorname{IDCG@}k}.

[1]

Бенчмарки

BEIR содержит разнородные наборы данных для проверки переноса поисковых моделей между предметными областями.[1]

MTEB оценивает текстовые эмбеддинги в поиске, классификации, кластеризации, семантическом сходстве и других задачах.[1]

Для русского языка предложен бенчмарк ruMTEB, включающий задачи семантического сходства, классификации, переранжирования и поиска.[1]

Онлайн-оценка

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

Качество рекомендуется проверять отдельно на коротких и длинных запросах, редких сущностях, числах и датах, отрицаниях, перефразировках, опечатках, новых документах, разных языках и неоднозначных формулировках.

Применение

Веб-поиск

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

Корпоративный поиск

Семантический поиск применяется к внутренним инструкциям, отчётам, договорам, базам знаний и переписке. Важны соблюдение прав доступа, работа с отраслевой терминологией и указание источника.

Электронная коммерция

Запрос «лёгкая непромокаемая куртка для осени» должен быть связан с атрибутами товаров, даже если описание использует слова «водоотталкивающая» или «демисезонная».

Медицинский и научный поиск

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

Поиск программного кода

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

Диалоговые системы и RAG

В системах генерации, дополненной поиском (англ. retrieval-augmented generation, RAG), сначала находятся документы, а затем языковая модель формирует ответ на их основе.[1]

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

Ограничения и проблемы

Неоднозначность и семантический дрейф

Короткий запрос может иметь несколько интерпретаций. Семантический дрейф (англ. semantic drift) возникает, когда расширение запроса или поиск близких векторов уводит систему к связанной, но другой теме.

Отрицания, числа и точные значения

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

Длинные документы

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

Доменный сдвиг и многоязычность

Доменный сдвиг (англ. domain shift) возникает, когда рабочие данные отличаются от обучающих. Модель, обученная на веб-страницах, может хуже работать с юридическими или медицинскими текстами. Качество разных языков в одной модели также может различаться.

Неполнота графов и объяснимость

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

Смещения, конфиденциальность и безопасность

Модели наследуют статистические смещения обучающих данных. Индексы и эмбеддинги могут содержать конфиденциальную информацию. В корпоративных системах права доступа должны проверяться до передачи фрагментов языковой модели. Системы RAG уязвимы к намеренно добавленным документам с ложной информацией или инструкциями для модели.

Вычислительная стоимость

На практике приходится искать компромисс между качеством, задержкой, объёмом памяти и стоимостью вычислений.

Современные направления исследований

Универсальные и инструктивные эмбеддинги

Модели семейства E5 обучаются на разнородных парах текстов с использованием слабой разметки и контрастной функции потерь.[1]

Большие языковые модели используются для создания синтетических обучающих данных для эмбеддингов.[1]

BGE-M3 объединяет плотный, разреженный и многовекторный режимы поиска и поддерживает многоязычные тексты и длинные входные последовательности.[1]

Генеративное расширение запроса

В методе HyDE языковая модель создаёт гипотетический документ, который мог бы отвечать на запрос. Вектор этого документа используется для поиска реальных материалов.[1]

Графово-усиленный поиск

KG²RAG получает семантически близкие исходные фрагменты, затем расширяет и упорядочивает их с помощью графа знаний.[1]

GNN-Ret строит граф фрагментов по структурным и лексическим связям и применяет графовую нейронную сеть для ранжирования.[1]

Русскоязычные эмбеддинги

В 2025 году была представлена модель GigaEmbeddings, обученная с использованием контрастного предварительного обучения, сложных отрицательных примеров и многозадачной настройки; модель оценивалась на ruMTEB.[1]

Мультимодальный, временной и объяснимый поиск

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

Отличие от преимущественно лексического поиска

Свойство Преимущественно лексический поиск Семантический поиск
Основной сигнал Совпадение терминов Значение, контекст, понятия и отношения
Перефразировки Могут быть пропущены Часто распознаются лучше
Редкие имена и коды Обычно обрабатываются хорошо Могут быть потеряны в общем векторе
Объяснимость Относительно высокая Зависит от метода
Требования к обучению Могут быть минимальными Часто нужны корпуса, разметка или внешняя база знаний
Вычислительная стоимость Обычно ниже Может быть значительно выше
Типичная ошибка Не найден документ с другой формулировкой Найден близкий по теме, но нерелевантный документ

Противопоставление условно: современные семантические системы почти всегда сохраняют лексические компоненты.

См. также

Примечания

Литература

  • Salton G., Wong A., Yang C. S. A Vector Space Model for Automatic Indexing // Communications of the ACM. — 1975. — Т. 18. — № 11. — С. 613—620.
  • Deerwester S., Dumais S. T., Furnas G. W., Landauer T. K., Harshman R. Indexing by Latent Semantic Analysis // Journal of the American Society for Information Science. — 1990. — Т. 41. — № 6. — С. 391—407.
  • Robertson S., Zaragoza H. The Probabilistic Relevance Framework: BM25 and Beyond // Foundations and Trends in Information Retrieval. — 2009. — Т. 3. — № 4. — С. 333—389.
  • Manning C. D., Raghavan P., Schütze H. Introduction to Information Retrieval. — Cambridge: Cambridge University Press, 2008. — ISBN 978-0-521-86571-5
  • Reinanda R., Meij E., de Rijke M. Knowledge Graphs: An Information Retrieval Perspective. — Boston: Now Publishers, 2020. — (Foundations and Trends in Information Retrieval).
  • Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // Proceedings of NAACL-HLT. — 2019. — С. 4171—4186.
  • Reimers N., Gurevych I. Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks // Proceedings of EMNLP-IJCNLP. — 2019. — С. 3982—3992.
  • Karpukhin V. et al. Dense Passage Retrieval for Open-Domain Question Answering // Proceedings of EMNLP. — 2020. — С. 6769—6781.
  • Khattab O., Zaharia M. ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT // Proceedings of SIGIR. — 2020. — С. 39—48.
  • Formal T., Piwowarski B., Clinchant S. SPLADE: Sparse Lexical and Expansion Model for First Stage Ranking // Proceedings of SIGIR. — 2021. — С. 2288—2292.
  • Thakur N., Reimers N., Rücklé A., Srivastava A., Gurevych I. BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models // NeurIPS Datasets and Benchmarks. — 2021.
  • Muennighoff N. et al. MTEB: Massive Text Embedding Benchmark // Proceedings of EACL. — 2023. — С. 2014—2037.
  • Gao L., Ma X., Lin J., Callan J. Precise Zero-Shot Dense Retrieval without Relevance Labels // Proceedings of ACL. — 2023. — С. 1762—1777.
  • Wang L., Yang N., Huang X., Yang L., Majumder R., Wei F. Improving Text Embeddings with Large Language Models // Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics. — 2024. — С. 11897—11916.
  • Chen J., Xiao S., Zhang P., Luo K., Lian D., Liu Z. BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation // arXiv. — 2024. — № 2402.03216.
  • Snegirev A., Tikhonova M., Maksimova A., Fenogenova A., Abramov A. The Russian-focused embedders’ exploration: ruMTEB benchmark and Russian embedding model design // Proceedings of NAACL. — 2025. — С. 236—254.
  • Zhu X., Xie Y., Liu Y., Li Y., Hu W. Knowledge Graph-Guided Retrieval Augmented Generation // Proceedings of NAACL. — 2025. — С. 8912—8924.
  • Li Z., Guo Q., Shao J., Song L., Bian J., Zhang J., Wang R. Graph Neural Network Enhanced Retrieval for Question Answering of Large Language Models // Proceedings of NAACL. — 2025. — С. 6612—6633.
  • Kolodin E., Ianina A. GigaEmbeddings — Efficient Russian Language Embedding Model // Proceedings of the 10th Workshop on Slavic Natural Language Processing. — 2025. — С. 17—24.
  • RDF 1.1 Concepts and Abstract Syntax // World Wide Web Consortium. 2026-07-26.
  • OWL 2 Web Ontology Language: Structural Specification and Functional-Style Syntax // World Wide Web Consortium. 2026-07-26.
Личные инструменты