[📌 Часть 2/2] — 28 июля 2026 г. в 20:17:21.918
[📌 Часть 2/2] RAG в продакшене: гибридный поиск и реранкинг внутри бюджета p99 < 1с (продолжение) Важно правильно настроить batch size при прогоне кандидатов через модель. Инференс реранкера плохо масштабируется линейно из-за pad-token overhead в Attention механизме. Оптимальный батч для p99 latency обычно лежит в районе 4–8 пар, а не 32 или 64. Также внедряем LRU-кэш на уровне Redis: если пользователь запрашивает «отчет за Q3», а через минуту уточняет детали по этому отчету, мы кэшируем эмбеддинг запроса и результаты реранкинга, обходя тяжелый пайплайн. - Реализация RRF (Reciprocal Rank Fusion) в Python: не используйте простое суммирование скорей. Алгоритм устойчив к различиям в масштабах оценок разных движков. Формула: score(d) = sum(1 / (k + rank_i)) где k=60 (эмпирическая константа от Google), rank_i — позиция документа в i-том источнике.def rrf_merge(vector_results, bm25_results, k=60): scores = defaultdict(float) for rank, doc in enumerate(vector_results): scores[doc.id] += 1 / (k + rank + 1) for rank, doc in enumerate(bm25_results): scores[doc.id] += 1 / (k + rank + 1) return sorted(scores.items(), key=lambda x: x[1], reverse=True) - Конфигурация Docker Compose для гибридного стека: изолируем тяжелые сервисы. Qdrant для векторов, Typesense для быстрого BM25 (легче и быстрее Elasticsearch для текстового поиска), ваше приложение Python/FastAPI.services: qdrant: image: qdrant/qdrant:latest volumes: [qdrant_data:/qdrant/storage] typesense: image: typesense/typesense:0.25.1 environment: [TYPESENE_DATA_DIR=/data] volumes: [typesense_data:/data] #AI #LLM #DevOps #RAG

