Эмбеддер bge-m3: смысловой поиск на русском наконец разделяет смыслы

nomic-embed-text на русском не работал: в замере «велосипедная камера»
набирала мультиметру 0.704 — больше, чем верный ответ на «паяльник» (0.691).
Зазор −0.013, то есть мусор систематически обгонял правильное и порогом это
не лечилось.

bge-m3 на том же наборе: верные не ниже 0.537, мусор не выше 0.460,
зазор +0.077. Префиксы задачи ему не нужны, поэтому обнулены.

Порог откалиброван на настоящей базе, а не на придуманном наборе, и картина
там честнее: абстрактное «чем посветить» набирает лампам 0.411, а посторонняя
«детская коляска» — 0.535. Полностью не разделяются, поэтому SEMANTIC_MIN
выставлен так, чтобы отсечь весь мусор ценой слабых догадок — уверенно
показанное не то хуже честного «не нашёл». Точных запросов это не касается:
они находятся по словам и тегам.

Добавлен tools/reindex.py: смена эмбеддера требует полного пересчёта векторов,
иначе смешанная база тихо портит поиск. Скрипт делает копию перед работой.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 18:23:22 +03:00
co-authored by Claude Opus 5
parent 781690365e
commit 39c807d4de
5 changed files with 127 additions and 33 deletions
+2 -2
View File
@@ -11,8 +11,8 @@ OLLAMA_HOST=http://localhost:11434
# Модель для эмбеддингов (поиск по смыслу). Необязательна — без неё
# работает поиск по словам и тегам:
# ollama pull nomic-embed-text
# HLAMINGO_EMBED_MODEL=nomic-embed-text:latest
# ollama pull bge-m3
# HLAMINGO_EMBED_MODEL=bge-m3
# Порт веб-интерфейса.
# HLAMINGO_PORT=5000