Добавить синонимы поиска

В последнее время я много читаю здесь и заметил, что термины «пост» и «ответ» используются как-то взаимозаменяемо.

Если это исправить, то это приведёт к меньшему количеству досадных вопросов, когда кто-то использует неправильный из двух терминов при поиске перед тем, как задать вопрос с новой темой (LOL, это только что произошло со мной: «удалить пост после» не дало тех же результатов, что и «удалить ответ после»…)

Отсюда и мой вопрос в этой теме…

1 лайк

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

Я предлагаю ознакомиться со статьей Understanding Discourse for new users, где описывается, что такое публикация. Ответом считается любая публикация, кроме первого сообщения темы.

5 лайков

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

Разве те, кто лучше осведомлён, не смогут всё равно выполнить явный поиск, используя кавычки вокруг интересующего их термина, например “reply” :question:

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

Итак, я прочитал «Руководство для новых пользователей Discourse», но не смог найти там явного определения термина «ответ».

Однако, поскольку я процитировал вас выше, «ответ» по определению является «постом». Следовательно, при поиске по слову «пост» должны отображаться и все совпадения с «ответом»…

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

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

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

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

3 лайка

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

Независимо от семантики публикации/ответа — добавление синонимов в поиск на данный момент не может быть настроено в Discourse.

9 лайков

Ладно, я замолкаю :wink: но, возможно, стоит добавить возможность их добавления. Я предсказываю, что это облегчит жизнь добрым людям, отвечающим новичкам на этом замечательном форуме :slight_smile:

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

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

1 лайк

Я меняю категорию на Contribute > Feature, так как запрос на новую функцию довольно понятен. В нём предлагается добавить в интерфейс возможность определять пользовательские синонимы.

Postgres технически поддерживает синонимы, как описано здесь:

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

Я не помечаю это как pr-welcome, потому что задача сложная, её реализация займёт много времени, а потенциальная польза может оказаться ограниченной.

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

9 лайков

Поздравляем, Дэйл! :partying_face:

image

1 лайк

Мы обновили нашу терминологию (термин «User» заменён на «Member») и соответствующим образом обновили документацию. Однако я хотел бы, чтобы при поиске по слову «User» автоматически отображались результаты, содержащие слово «Member». Есть ли какие-то идеи относительно простого способа этого добиться?

CC: @michellefs

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

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

1 лайк

Я ничего не знаю, но разве это не просто вопрос изменения текста со стороны настройки? Или я, как обычно, всё неправильно понимаю?

Я думаю, что надежда состоит в том, чтобы косвенно влиять на алгоритм поиска с помощью такого инструмента, как синонимы тегов. Но это касается любых ключевых слов внутри сообщения (или, по крайней мере, исходного сообщения).

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

Интересно, изменились ли взгляды на опечатки за эти годы:

В Discourse-AI мы начали экспериментировать с семантическим поиском. Это всё ещё ранняя стадия, и мы продолжаем изучать эти системы.

Использование больших языковых моделей (LLM) для улучшения поискового запроса также является возможным (хотя сегодня и медленным) подходом:

Эта техника описана здесь: GitHub - texttron/hyde: HyDE: Precise Zero-Shot Dense Retrieval without Relevance Labels · GitHub


Помимо полностью автоматизированных подходов

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

Для этой функции уже есть прецедент в Postgres, см.: PostgreSQL: Documentation: 18: 12.6. Dictionaries

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

SEO

семантический, связанный, улучшение

2 лайка

Шокированный Космо Краймер GIF

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

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


По этой теме мы также можем реализовать гибридный поиск:

  • Поиск с использованием существующего полнотекстового поиска в PostgreSQL
  • Поиск с использованием векторных вложений
  • Сборка лучших 50 результатов из обоих методов
  • Передача результатов в сервис повторного ранжирования поиска
  • Отображение повторно ранжированных результатов

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

Пример здесь:

https://github.com/pgvector/pgvector-python/blob/master/examples/hybrid_search.py#L67-L70

6 лайков