Чат-бот аптеки упорно палил бюджетКоллега из е-комм аутсорса делал AI-поисковик для португальской аптеки:
- "Какое лекарство от мигрени?"
- "Чем лечить кашель ребенка?"
- "Где купить антидепрессанты?"
Внутри был конвейер из регулярных выражений, которые собирают контекст из базы знаний и отправляют в gemini на каждый запрос 😱
Пробовали обычный кеш - не работает, запросы всегда разные, память утекает будь здоров.
Было понимание что строят не то, и что нужно унифицированное решение.
А решение простое - по моему совету подружили pgvector в postgresql (которую и так почти у каждого клиента разворачивают):
1. Намолотили эмбединги через fastembed (из логов + часть нагенерили с LLM)
2. Входящий запрос → эмбеддинг → поиск похожих (cosine similarity)
3. Схожесть > 0.92 → возврат из кэша ¯\_(ツ)_/¯
4. В противном случае → LLM вызов + сохранение в кэш
Классика :)
Результаты приятные:
- ~7 из 10 вопросов попадают
- Траты на токены снизились больше чем в половину
- Задержка 800ms → 80-100ms
- Клиенты счастливы, ура!
Решение на эмбеддингах лучше чем регулярки. Но, к сожалению, не работает (или работают плохо) если ответы сильно зависят от контекста диалога, данные часто и сильно меняются, или работаем с высокой уникальностью входных данных.
Для FAQ, поиска по продуктам, документации - классно!
Ребята почему то боялись пробовать, хотя читали про RAG и семантический поиск.
Если у вас хотя бы отдаленно похожая проблема/задача – не бойтесь и приходите ко мне за консультаций
@m0n0x41d 💗
