Простая техника делает RAG ~32x более эффективным по памяти! - Perplexity использует это в своем поисковом индексе - Azure использует это в своем поисковом конвейере поиска - HubSpot использует это в своем AI-ассистенте Давайте разберемся, как использовать это в системах RAG (с кодом):
Сегодня давайте создадим систему RAG, которая будет запрашивать более 36 миллионов векторов за <30 мс с использованием бинарной квантизации. Технологический стек: - @llama_index для оркестрации - @milvusio в качестве векторной базы данных - @beam_cloud для безсерверного развертывания - @Kimi_Moonshot Kimi-K2 в качестве LLM, размещенного на Groq Давайте создадим это!
Вот рабочий процесс: - Загружайте документы и генерируйте бинарные векторы. - Создайте бинарный векторный индекс и сохраните векторы в векторной базе данных. - Извлеките топ-k похожих документов на запрос пользователя. - LLM генерирует ответ на основе дополнительного контекста. Давайте реализуем это!
0️⃣ Настройка Groq Прежде чем начать, сохраните свой API-ключ Groq в файле .env и загрузите его в свою среду, чтобы использовать самый быстрый в мире ИИ-инференс. Проверьте это 👇
1️⃣ Загрузите данные Мы загружаем наши документы с помощью инструмента чтения каталогов LlamaIndex. Он может читать различные форматы данных, включая Markdown, PDF, документы Word, презентации PowerPoint, изображения, аудио и видео. Проверьте это 👇
2️⃣ Генерация бинарных векторов Далее мы генерируем текстовые векторы (в формате float32) и преобразуем их в бинарные векторы, что приводит к 32-кратному сокращению объема памяти и хранения. Это называется бинарной квантизацией. Проверьте эту реализацию 👇
3️⃣ Векторная индексация После завершения бинарной квантизации мы храним и индексируем векторы в базе данных векторов Milvus для эффективного извлечения. Индексы — это специализированные структуры данных, которые помогают оптимизировать производительность операций извлечения данных. Проверьте это 👇
4️⃣ Извлечение На этапе извлечения мы: - Встраиваем запрос пользователя и применяем бинарную квантизацию к нему. - Используем расстояние Хэмминга в качестве метрики поиска для сравнения бинарных векторов. - Извлекаем 5 самых похожих фрагментов. - Добавляем извлеченные фрагменты в контекст. Проверьте это👇
5️⃣ Поколение Наконец, мы создаем конвейер генерации, используя модель инструкций Kimi-K2, работающую на самой быстрой AI-инференции от Groq. Мы указываем как запрос, так и извлеченный контекст в шаблоне подсказки и передаем это в LLM. Проверьте это 👇
6️⃣ Развертывание с Beam Beam позволяет осуществлять сверхбыстрое безсерверное развертывание любого рабочего процесса ИИ. Таким образом, мы оборачиваем наше приложение в интерфейс Streamlit, указываем библиотеки Python и спецификации вычислений для контейнера. Наконец, мы развертываем приложение всего в несколько строк кода👇
7️⃣ Запустите приложение Beam запускает контейнер и разворачивает наше приложение streamlit в качестве HTTPS-сервера, к которому можно легко получить доступ из веб-браузера. Посмотрите эту демонстрацию 👇
Двигаясь дальше, чтобы действительно оценить масштаб и скорость вывода, мы тестируем развернутое решение на наборе данных PubMed (более 36 миллионов векторов). Наше приложение: - запросило более 36 миллионов векторов за <30 мс. - сгенерировало ответ за <1 с. Посмотрите эту демонстрацию👇
Готово! Мы только что создали самый быстрый стек RAG, используя BQ для эффективного извлечения и используя ультрабыструю безсерверную развертку нашего AI рабочего процесса. Вот рабочий процесс снова для вашего сведения 👇
На этом всё! Если вам это было полезно, поделитесь с вашей сетью. Найдите меня → @_avichawla Каждый день я делюсь уроками и инсайтами по DS, ML, LLM и RAG.
Avi Chawla
Avi Chawla4 авг., 14:33
Простая техника делает RAG ~32x более эффективным по памяти! - Perplexity использует это в своем поисковом индексе - Azure использует это в своем поисковом конвейере поиска - HubSpot использует это в своем AI-ассистенте Давайте разберемся, как использовать это в системах RAG (с кодом):
695,77K