Настройка семантического поиска и реализации RAG (Retrieval-Augmented Generation) на базе Weaviate
Кратко о проекте:
Система self-hosted, все данные и вычисления — на серверах заказчика, без внешних API.
Существуют отдельные пайплайны загрузки документов и хранения метаданных, от ML-специалиста требуется только реализация поиска и сборки ответа.
Что нужно сделать:
Обработка документов (обсуждаемо):
— Извлекать текст из документов, разбивать его на смысловые фрагменты (чанки).
— Генерировать эмбеддинги для каждого чанка с помощью локальных моделей.
— Сохранять векторные представления в Weaviate, а метаинформацию о чанках (ID документа, абзац, привязка к странице wiki и т.п.) — в PostgreSQL.
Реализация поиска:
— При запросе выполнять поиск релевантных чанков в Weaviate.
— Возвращать для генерации ответа не только текст, но и ссылку/ID на исходный документ или конкретный абзац.
Сборка ответа (RAG):
— Использовать LangChain (или альтернативу) для построения финального ответа на основе найденных чанков.
— Ответ должен включать краткое цитирование первоисточника с точной ссылкой на источник.
Оптимизация:
— Подобрать оптимальную модель эмбеддингов (локальную) и параметры поиска.
Стек и окружение:
- Python
- Weaviate
- LangChain или аналог для RAG
- sentence-transformers или другая локальная модель эмбеддингов
Что ждем на выходе:
- Документация по установке и настройке ML-модуля
- Примеры запросов к модулю и формат ответов
- Конфигуратор для выбора или дообучения локальных моделей эм