Skip to main content

Индексы для быстрого поиска по коду

В нашем плагине есть два типа поиска: similar search и exact search.

Оба индекса построены на классических методах информационного поиска, поэтому они очень быстрые и могут вычисляться на слабых компьютерах. Эти индексы не используют никаких ML-ресурсов, в частности, эмбеддингов, векторных баз данных и т.п.

Exact search — это поиск по текстам произвольной подстроки. Его индекс — это обратный индекс n-gram, в которые преобразуются тексты и запросы. Этот индекс строится по исходному коду проекта. Он используется агентом для поиска по всему проекту, т.к. на больших проектах он быстрее встроенного поиска из IntelliJ IDEA platform и отвечает за O(1) независимо от размера проекта.

Similar search является облегчённой альтернативой семантическому поиску через эмбеддинги. Этот индекс строится по исходному коду проекта и коду зависимостей (библиотек). Он устроен как сложный анализатор текста и запросов, который поддерживает:

  • поиск по ключевым словам;
  • морфологический анализ естественных языков;
  • camel case;
  • синонимы;
  • языко-специфичные оптимизации (различные экстракторы текстов для разных языков программирования).