Я наконец понял, почему ререйкеры так мощны, когда осознал ключевую разницу между би- и кросс-кодировщиками. Я также нашел способ объединить их возможности, используя единую архитектуру. Позвольте мне объяснить: RAG состоит на 80% из извлечения и на 20% из генерации. Так что если RAG не работает, скорее всего, это проблема извлечения. Вот почему так важно правильно настроить архитектуру извлечения - и это начинается с понимания этих двух (на самом деле трех) подходов к кодированию. (смотрите визуализацию ниже, пока читаете) 1️⃣ Би-кодировщики Би-кодировщики (основа векторного поиска) обрабатывают запросы и документы отдельно. - Встраивания документов заранее вычислены - Запрос встраивается во время поиска Это делает би-кодировщики идеальными для начального извлечения: - крайне быстро - работает в больших масштабах - упускает важную контекстную информацию 2️⃣ Кросс-кодировщики Кросс-кодировщики используют совершенно другой подход для ререйкинга. Они обрабатывают запрос и каждый документ как единое целое. - Объединяют запрос с документом ([CLS] Запрос [SEP] Документ [SEP]) - Пропускают через модель вместе для полной кросс-внимательности Это делает кросс-кодировщики идеальными для второго этапа: - захватывают семантические связи для лучшей точности - но гораздо медленнее и требует больше ресурсов для больших коллекций Теперь, что если мы сможем объединить лучшее из обоих миров! 3️⃣ ColBERT ColBERT объединяет мощь кросс-кодировщиков и масштабируемость би-кодировщиков. - Отдельно кодируют запросы и документы - Создают матрицу взаимодействия с оценками схожести между всеми парами токенов запрос-документ - Берут максимальную оценку для каждого токена запроса среди токенов документа - Суммируют максимальные оценки для окончательной оценки соответствия _____ Вот и все! Если вы нашли это полезным, поделитесь с вашей сетью. Найдите меня → @akshay_pachaar ✔️ Для получения дополнительных идей и учебных материалов по LLM, AI Agents и машинному обучению!
46,68K