Пощупал немножко sentence-embedding'овые модели. если я правильно всё понял[oe], это по сути попытка (и очень неплохая) создать семантический перцепционный хэш:
- из текста произвольной длины получается числовой вектор фиксированной размерности (разные модели разной)
- для равных текстов векторы одинаковые (что и для традиционного хэша верно), для похожих по смыслу (семантике) текстов получаются близкие векторы (а это уже семантико-перцепционная часть)
Воткнул в Obsidian плагин Smart Connections[sc], который с помощью локальной модели вычисляет такие векторы для заметок и с помощью этих векторов ищет похожие для текущей заметки или произвольного текстового запроса. Результаты на удивление неплохи даже на крошечной модели с 35 Мб весов (bge-micro-v2), но считаются, конечно, медленно.
Применить это мне пока что негде, но что такое *существует*, знать полезно.
[oe]: https://ollama.com/blog/embedding-models
[sc]: https://github.com/brianpetro/obsidian-smart-connections
@dside чем они лучше редакторского расстояния и прочих триграмм с соседями?
@3draven Левенштейн и триграммы сугубо про слова. *Семантический* поиск про, ну, *семантику*. Может улавливать сходство между синонимичными терминами и формулировками, например. В меньшей степени, но в ту же сторону, смежные тематики.
@dside вопрос состоял не в том, что такое семантический, а конкретно, чем лучше? Построить хэш на редакторском расстоянии, который словит сходство слов в произвольном порядке будет сильно хуже?
@dside нейронка слишком мелкая что бы хорошо понимать сходство семантики.
@3draven она его и не понимает. Ни хорошо, ни плохо, никак, совсем. И регулярно выдаёт фигню. Всё как с LLMками. Но среди фигни находит и то, что анализ исключительно слов, без оглядки на язык, не находит.
@dside судя по всему бенчмарков не видел с полнотекстовыми поисками и подобным или их нет вовсе. Не зная ответа строить гипотезу на своем понимании вопроса мне не надо, спасибо :) Я ведь конкретную штуку спросил. Нейронка может быть намного хуже обычного подхода. Ладно, разведение бури в стакане не входило в мой вопрос, закроем тему.
@3draven никаких гипотез, я прямо сейчас этим пользуюсь у себя в заметках и это непосредственные практические результаты. Из своих личных заметок делать бенчмарк я не буду, извините.
Но как я уже сказал в соседней ветке, бенчмаркать их друг против друга а нахожу дурацкой затеей. Примерно как бенчмаркать условный Redis против SQLite. Слишком разные штуки.
@dside банальное редакторское расстояние и словарь синонимов, скачанный с сети вполне вероятно будут быстрее и намного проще. Но находишь и находишь.
@3draven а кто-то говорил про "писать"? Да, хватит, продуктивной дискуссии что-то не получается.