Я веду небольшие заметки из книг где-то с 2017 года. Мне всегда нравилось перечитывать красивые речевые обороты и подпитываться глубокими мыслями, что помогали не терять внутренний ориентир.
И вот недавно, у меня возникла идея. Я давно хотел изучить в более прикладном формате, как устроена технология RAG. Забавно, что я помню, как в 2024 каждое 2-е видео было посвященно ему, а сейчас этот термин знает даже обыватель.
Но сперва, поговорим о вводных. Проблема: порой, я долго не могу найти цитату в телеграм канале, где более 800 афоризм, потому что не помню либо автора, либо точную формулировку. Проблема 2: хочется почитать цитаты на конкретно волнующую меня тему, к примеру: о дружбе, или страхе смерти и так далее Проблема 3: зачастую, где нибудь в парке за кофе, хочется случайным образом пробежаться по коллекции, не привязываюсь к линейности скроллинга.
Доп.задача: каждая цитата, должна быть сопровождена картиной из классического искусства. Это будет создавать приятные эстетические ощущения. Доп.задача 2: я хочу копать вглубь про каждую цитату и картину, которую вижу, расширяя свой кругозор тем самым.
Было интересно посравнивать разные подходы. Я посмотрел качество разных эмбедингов, комбинаций пайплайна. По итогу, остановился на: qwen3-embedding-4b + семантический поиск + лексический поиск (bm25). Я также, прогнал заранее скачанные 900 картин через deepseek, векторизировал их описания и на базе этого сделал механизм, который подбирает картины под цитаты более точно.
Разумеется, здесь не нужна никая ChromaDB, всё хранится в одном файле и размер матрицы не большой.
Самым трудным, и рутинным, были бенчмарки разных подходов, где вручную, приходилось валидировать результаты поиска.
Итого: собрал такого вот бота коротыша для личного использования, который теперь привносит жизнь чуть больше красоты и удобства.