RAG за 40 минут или VS CODE на "максималках"

До нового года я начал погружаться в построение RAG-ов. Простыми словами - а давайте в контекст промпта для LLM будем добавлять свои локальные данные. Но не все данные, а максимально подходящие под запрос. Звучит не очень сложно, но вот написать такое руками даже с библиотеками - все равно время.

Примерно в то же время я узнал о Cursor - это тот же VS CODE, в котором есть две дополнительные функции: - Chat - обычный чат с LLM, которой можно задавать вопросы по коду и не только - Compose - на вход подаем промпт, а на выходе код. И не просто код - автоматически создаются все файлы и проект в целом. Далее можно просто уточнять требования и принимать или не принимать изменения в коде.

Мне показалось это очень интересным, и я решил использовать Cursor для написать простого RAG в виде web приложения. Требования у меня были следующие: - Стек - django, langchain, faiss, небольшая llm для локального использования - В django - три страницы - просто чат с llm, вкладка для загрузки pdf документа и окно для вопросов по этому pdf, и третья страница - визуализация разбиения документов на части

Здесь нужно остановиться поподробнее про разбиение pdf документа. Идея следующая: загружаем pdf документ, парсим его, разбиваем текст на кусочки. Далее задаем вопрос, по этому вопросу с помощью faiss ищем похожие на вопрос кусочки из pdf, добавляем эти кусочки в контекст промпта для llm рядом с вопросом, получаем ответ на основе этого контекста. В итоге, можно задавать вопросы по любому pdf документу!

Думаю, идея понятна. Переходим к реализации, а точнее, к написания промптов в Cursor. Из интересного: - РАБОЧИЙ прототип был готов через 40 минут - Используемая модель в cursor - claude 3.5 sonnet - Я промпты писал исключительно на русском - Если возникали ошибки - я просто копировал их из командной строки без комментариев. Если были сложные ошибки, то добавлял в контекст файлы с кодом (в cursor так тоже можно) - Один раз возникла ошибка при отображении элемента в django-приложении - я просто сделал скриншот и отправил его cursor

Если коротко - это восторг! Я не написал ни одной строки кода. Но есть и некоторые тонкости: - Я заранее понимал какие промпты писать, так как с темой был знаком (да и с django на базовом уровне тоже) - Код, очевидно, не оптимальный. Иногда даже рабочий, но не правильный. После подготовки прототипа нужно будет потратить много времени на рефакторинг и анализ

Но главный вывод - для прототипов на коленке просто must have. С моим кодом ознакомиться можно здесь: https://github.com/Vasily-Sizov/simple_rag. Я специально не вносил никаких своих изменений, чтобы можно было понять, на что способен cursor.

PS: Cursor на данный момент бесплатный и нет ограничений на создаваемые аккаунты!

repost

101

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь