@dside вопрос состоял не в том, что такое семантический, а конкретно, чем лучше? Построить хэш на редакторском расстоянии, который словит сходство слов в произвольном порядке будет сильно хуже?
@dside нейронка слишком мелкая что бы хорошо понимать сходство семантики.
@3draven она его и не понимает. Ни хорошо, ни плохо, никак, совсем. И регулярно выдаёт фигню. Всё как с LLMками. Но среди фигни находит и то, что анализ исключительно слов, без оглядки на язык, не находит.
@dside судя по всему бенчмарков не видел с полнотекстовыми поисками и подобным или их нет вовсе. Не зная ответа строить гипотезу на своем понимании вопроса мне не надо, спасибо :) Я ведь конкретную штуку спросил. Нейронка может быть намного хуже обычного подхода. Ладно, разведение бури в стакане не входило в мой вопрос, закроем тему.
@3draven никаких гипотез, я прямо сейчас этим пользуюсь у себя в заметках и это непосредственные практические результаты. Из своих личных заметок делать бенчмарк я не буду, извините.
Но как я уже сказал в соседней ветке, бенчмаркать их друг против друга а нахожу дурацкой затеей. Примерно как бенчмаркать условный Redis против SQLite. Слишком разные штуки.
@dside банальное редакторское расстояние и словарь синонимов, скачанный с сети вполне вероятно будут быстрее и намного проще. Но находишь и находишь.
@3draven они 100%-но будут быстрее и намного проще, но заберут кратно больше времени лично у меня, а словарь синонимов непременно упустит не особо устоявшиеся слова, коих у меня в заметках хватает, и что можно закрыть подредактировав словарь руками или потратив больше времени на поиск словаря поновее… и что-то эта затея уже перестаёт казаться такой уж радужной.
@dside эти штуки не надо писать, они написаны давно и неплохо работают. Надо просто погуглить чуть. В моих областях, например, апач люцена есть и еще вагон. Там от мелкого до слонов все есть. И они очень, очень быстрые. Словарь засовываешь в мозг этой штуки и все. Блин, ладно, пойду.
@3draven а кто-то говорил про "писать"? Да, хватит, продуктивной дискуссии что-то не получается.
@3draven он не уловит синонимы. Совсем. Для задачи, где пользователь может задать вопрос не с тем термином, к которому компания привыкла, пользователь рискует не получить наиболее релевантный ответ. Это можно закрыть костылями типа добавления в текст ответа всех известных синонимов, чтобы точно попало или как-то ещё, но это уже техники поверх.
@3draven а, и обратный случай, одни и те же термины, отсутствующие в списке стоп-слов, могут легко "затуманить" обзор техникам типа сравнения поисковых векторов (убрать стоп-слова, мапнуть стеммером, отсортировать) и дать ненужные совпадения.
Этим, впрочем, эмбеддинговый поиск страдает даже в большем масштабе, но немного другим образом – его ложные совпадения проще узнать, потому что они вообще на искомое не похожи, тогда как поисковые векторы ищут как минимум те же слова с поправкой на формы, и будут и на человеческий глаз выглядеть похоже.
Но вопрос "чем лучше" тут бессмысленен, это не конкурирующие в моём понимании техники.
@3draven Левенштейн и триграммы сугубо про слова. *Семантический* поиск про, ну, *семантику*. Может улавливать сходство между синонимичными терминами и формулировками, например. В меньшей степени, но в ту же сторону, смежные тематики.