Индексы для быстрого поиска по коду
В нашем плагине есть два типа поиска: similar search и exact search.
Оба индекса построены на классических методах информационного поиска, поэтому они очень быстрые и могут вычисляться на слабых компьютерах. Эти индексы не используют никаких ML-ресурсов, в частности, эмбеддингов, векторных баз данных и т.п.
Exact search — это поиск по текстам произвольной подстроки. Его индекс — это обратный индекс n-gram, в которые преобразуются тексты и запросы. Этот индекс строится по исходному коду проекта. Он используется агентом для поиска по всему проекту, т.к. на больших проектах он быстрее встроенного поиска из IntelliJ IDEA platform и отвечает за O(1) независимо от размера проекта.
Similar search является облегчённой альтернативой семантическому поиску через эмбеддинги. Этот индекс строится по исходному коду проекта и коду зависимостей (библиотек). Он устроен как сложный анализатор текста и запросов, который поддерживает:
- поиск по ключевым словам;
- морфологический анализ естественных языков;
- camel case;
- синонимы;
- языко-специфичные оптимизации (различные экстракторы текстов для разных языков программирования).