Discourse AI - AI search

:bookmark: Это руководство объясняет, как включить и настроить функцию поиска на базе ИИ, которая является частью плагина Discourse AI.

:person_raising_hand: Требуемый уровень пользователя: Администратор

Подобно Связанным темам, поиск на базе ИИ помогает находить наиболее релевантные темы, используя семантическое сходство текстов, выходящее за рамки точного совпадения ключевых слов, характерного для традиционного поиска. Это позволяет обнаруживать темы, которые не являются точными совпадениями, но всё же релевантны первоначальному запросу. Если вы не можете найти то, что ищете, поиск на базе ИИ придёт на помощь!

Возможности

  • Семантическое сходство текстов: выход за рамки простого совпадения ключевых слов и использование семантического анализа для поиска текстового сходства
  • Быстрый поиск с ИИ: автоматически добавляет результаты ИИ во всплывающее меню поиска, когда найдено мало обычных результатов (включается параметром ai_embeddings_semantic_quick_search_enabled)
  • Возможность включения/выключения поиска на базе ИИ в полном поиске по странице
  • Опциональная поддержка HyDE (Hypothetical Document Embeddings): использует большую языковую модель (LLM) для расширения запросов с целью улучшения результатов
  • Результаты обозначаются значком :sparkles:
  • Применяется как для анонимных, так и для авторизованных пользователей

Включение поиска на базе ИИ

Предварительные требования

Для использования поиска на базе ИИ необходимо настроить векторные представления (Embeddings). Большая языковая модель (LLM) требуется опционально, если вы включаете HyDE (Hypothetical Document Embeddings) для повышения качества поиска.

Векторные представления (Embeddings)

Если вы используете наш хостинг, мы предоставим вариант по умолчанию. Для самостоятельного хостинга следуйте руководству по Discourse AI - Embeddings.

Большая языковая модель (LLM) (опционально — для HyDE)

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

Для начала вы можете настроить их на странице настроек большой языковой модели (LLM) в Discourse AI.

Настройка

  1. Перейдите в АдминистрированиеПлагиныDiscourse AIВозможностиВекторные представления (Embeddings), чтобы найти все настройки поиска на базе ИИ.
  2. Включите ai_embeddings_enabled для векторных представлений.
  3. Включите ai_embeddings_semantic_search_enabled, чтобы активировать поиск на базе ИИ в полном поиске по странице.
  4. Опционально включите ai_embeddings_semantic_quick_search_enabled, чтобы добавить результаты ИИ во всплывающее меню поиска.
  5. Опционально включите ai_embeddings_semantic_search_use_hyde, чтобы использовать HyDE для улучшения результатов (требуется LLM).

Технический FAQ

Развернуть схему логики поиска на базе ИИ (с включённым HyDE)
mermaid height=255,auto
sequenceDiagram
    User->>+Discourse: Поиск "геймификация" 
    Discourse->>+LLM: Создать статью о "геймификации" на форуме о<br>  "Discourse, системе открытых интернет-форумов с открытым исходным кодом."
    LLM->>+Discourse: Геймификация включает применение элементов игрового дизайна, таких как<br> очки, значки, уровни и таблицы лидеров, в неигровых контекстах...
    Discourse->>+EmbeddingsAPI: Сгенерировать векторные представления для "Геймификация включает применение элементов игрового дизайна..."
    EmbeddingsAPI->>+Discourse: [0.123, -0.321...]
    Discourse->>+PostgreSQL: Дайте мне ближайшие темы для [0.123, -0.321...]
    PostgreSQL->>+Discourse: Темы: [1, 5, 10, 50]
    Discourse->>+User: Темы: [1, 5, 10, 50]

Как работает поиск на базе ИИ?

  • Когда HyDE включён (ai_embeddings_semantic_search_use_hyde), поисковый запрос обрабатывается LLM, которая создаёт гипотетическую тему/пост. Затем из этого гипотетического поста генерируются векторные представления, которые используются для поиска похожих совпадений на вашем сайте. Когда HyDE отключён (по умолчанию), поисковый запрос векторизируется напрямую и используется для поиска сходства. В обоих случаях результаты объединяются с обычными результатами поиска с помощью метода Reciprocal Rank Fusion (RRF) для повторного ранжирования лучших результатов.

Как обрабатываются данные тем/постов?

  • Когда HyDE включён, данные, обработанные LLM, обрабатываются сторонним провайдером; пожалуйста, обратитесь к вашему конкретному провайдеру за подробностями. По умолчанию микросервис Embeddings работает на тех же серверах, что и серверы, размещающие ваши существующие форумы. Здесь не задействованы третьи стороны, и эта конкретная информация никогда не покидает вашу внутреннюю сеть в нашем виртуальном частном дата-центре.

Куда уходят данные?

  • Когда HyDE включён, гипотетическая тема/пост, созданная провайдером LLM, временно кэшируется вместе с векторными представлениями для этого документа. Данные векторных представлений хранятся в той же базе данных, где мы храним ваши темы, посты и пользователей; это просто ещё одна таблица данных там.

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

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

I noticed a minor UI bug for ai embeddings semantic search hyde model. Steps to replicate

  1. Install AI Discourse plugin
  2. Open settings → Configure Gemini key
  3. Enable i embeddings semantic search enabled
  4. ai embeddings semantic search hyde model shows Google - gemini-pro (not configured)

The not configured doesn’t go away until after all the configurations are enabled and the page is refreshed thereafter.

2 лайка

I think this is a limitation of our site settings page so apologies for that and glad you were able to get it sorted out

1 лайк

A question about semantics. In some AI modules I see a reference to using Gemini while in others I see a reference to Gemini-Pro. Are these referring to different models (Gemini Nano, Pro and Ultra) or do they refer to the same LLM? If so then what does Gemini itself refer to and does it matter if one has a paid or a free subscription to Gemini?

1 лайк

There are different Gemini models such as the ones you’ve pointed out. Depending on the one you have (likely to pro since its free right now) you would just plugin the API key in the relevant setting. The setting is for whatever Gemini model you have

This would depend on you and how you want to use Gemini, but either should work

More on this here

1 лайк

Is there a way that I can inject something into the initial prompt to the LLM or manipulate the embeddings before they are passed off to the regular search?

I’m trying to boost (or possibly split out) staff responses (more authoritative) from community responses.

2 лайка

Currently, we don’t support any custom LLM prompt injection within AI Search, though this might be something to add in the future.

I would recommend making a Feature request!

2 лайка

Just started playing with AI search, and liking it so far. I can’t find a reason not to always use it. Is there a way to only show AI results (other than using css to hide .fps-result but not .ai-result)?

Also can you please elaborate on where to find quick search?

1 лайк

Hey that was temporarily available exclusively on Meta as an experiment. I have removed it from the OP - thank you for pointing this out

We are using Discourse Algolia Search for autocomplete search in the header. Can we continue with using Discourse AI - AI search?

A post was split to a new topic: Not seeing the user pref panel for Discourse AI