Создание оффлайн RAG-MCP с использованием MDN и Bun + TypeScript

Создание оффлайн RAG-MCP с использованием MDN и Bun + TypeScript

Статья о создании оффлайн RAG-MCP с использованием MDN и Bun + TypeScript. Мы разберемся, что такое RAG, распарсим MDN Web Docs, научимся готовить эмбеддинги и напишем свой MCP сервер с гибридным векторным и полнотекстовым поиском.

Введение

Retrieval-Augmented Generation (RAG) – это процесс, при котором ответ LLM обогащается внешними данными. Мы будем использовать MDN как внешние данные и создадим оффлайн RAG-MCP.

Парсинг MDN

Мы будем использовать Git clone и Gitsparse-checkout, чтобы получить необходимые файлы из репозитория MDN. Затем мы превратим Markdown в plain text и разобьем текст на осмысленные куски.

Создание эмбеддингов

Мы будем использовать библиотеку BGE-M3, чтобы создать эмбеддинги для наших текстовых данных. Эмбеддинг – это векторное представление текста, которое можно использовать для поиска.

Создание базы данных

Мы будем использовать LanceDB, чтобы создать базу данных для наших векторных и текстовых данных. Мы также создадим индекс текстовой колонки и гибридный поиск.

Создание MCP сервера

Мы будем использовать официальный SDK для Model Context Protocol, чтобы создать MCP сервер. Мы зарегистрируем инструмент с мета-информацией и соединим сервер с доступным транспортом.

Автоматическое обновление данных

Мы будем использовать GitHub Actions, чтобы автоматически обновлять данные каждый месяц. Мы добавим новую колонку в таблицу, чтобы записывать кратчайший путь к обрабатываемому файлу, и создадим файл cache.json, чтобы записывать хеш для каждого файла.

Читать оригинал