🦜RAG: Классический подход и современные улучшения [Ч.2]
📖 В прошлой статьей мы разбирали для чего нужны и какую задачу решают RAG-системы.
Сегодня мы перейдем к описанию классических подходов и как они строятся, а также поговорим про более продвинутые техники.
🔍 Базовая архитектура RAG:
❗️Пререквизит:
В своей системе RAG использует так называемые векторные представления — способ представления текста в виде вектора (точки в многомерном пространстве). Чем ближе друг к другу в этом пространстве находятся две точки, тем больше их текстовые представления похожи по смыслу. Это позволяет находить релевантные части контекста, даже если они используют другие слова или фразы.
1️⃣ Чанкинг базы знаний
Чанкинг — разбиение больших документов на маленькие части (чанки). Например, длинный текст книги можно разбить на абзацы или предложения. Таким образом, система может искать ответ в средних отрывках текста и получать более конкретные результаты без потери контекста или его избыточности. Ответы по большим или очень маленьким блокам зачастую ухудшают RAG-систему.
2️⃣ Сохранение векторов чанков в векторную БД
После этапа чанкирования необходимо векторизовать все полученные куски и сохранить их в векторную базу данных для дальнейшего семантического поиска и извлечения наиболее релевантных.
3️⃣ Получение пользовательского запроса и его векторизация
Для того, чтобы сравнивать пользовательский запрос с теми частями, которые мы сохранили в базу данных, нам также необходимо его векторизовать.
4️⃣ Отбор релевантных чанков
Здесь начинается процесс семантического поиска. В RAG-системе вектор пользовательского запроса сравнивается со всеми векторами в БД через какую-либо меру сходства. Куски, имеющие наибольшую величину сходства, передаются на следующий этап.
5️⃣ Передача найденных чанков в генеративную модель
После отбора самых релевантных чанков RAG передает их в LLM, которая генерирует ответ на все тот же пользовательский запрос, но уже с использованием полученного контекста.
🔝 Однако, такой классический подход не всегда даёт должного результата, и в таком случае стоит переходить к более продвинутым техникам и улучшениям:
- Подробная статья про Advanced RAG
- Про хитрости и улучшения RAG на ODS
- Совсем недавний подход от Anthropic по построению контекстного поиска в RAG
- Статья с набором придвинутых техник в RAG
- Серия постов на Хабре про RAG
📚 Ещё дополнительной литературы на эту тему:
- Простое и понятное объяснение RAG
Дополнительная статья про векторные БД
- Advanced RAG [ENG]
- Алгоритм BM25, который иногда используется для поиска в RAG
Обязательно ставьте лайки❤️
До скорых встреч👋🏻
Post #525
6.54K
- ❤ 17
- 🔥 4
- ❤🔥 2