사용 방법
- 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
- 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
- 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/comandosai/m-make-skills --skill rag-pgvector시작 전 확인
- 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
- 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.
Навык: База знаний на pgvector (RAG) — модуль M·MAKE, Часть 2
Как запустить: «сделай базу знаний» / «чтобы отвечал по моим документам».
Сначала различи два уровня (не путать):
- Уровень 1 — простой справочник. Вопрос→ответ, материал→норматив, правило→действие. Это обычные таблицы Postgres, приложение читает нужную строку. AI и RAG НЕ нужны. Если у человека так — скажи прямо и не строй вектор.
- Уровень 2 — RAG (этот навык). Нужен, когда AI должен отвечать по ТВОИМ документам, не выдумывая. Только тогда векторная база.
Модель RAG: документы → режем на куски (чанки) → превращаем в эмбеддинги (числовые отпечатки смысла) → храним в pgvector → на вопрос находим похожие куски → отдаём их модели как контекст → модель отвечает только из найденного (меньше галлюцинаций).
⚙️ Рецепт (по нему строит агент через Supabase MCP)
1. Нарезка (chunking) — самое важное
- Режь по структуре: заголовки → абзацы → предложения. НЕ по N символов вслепую (иначе ответы плывут).
- Размер куска ~400–500 токенов, перекрытие ~10–15% (~50 токенов), не разрывать предложения.
- Каждый кусок начинать с названия раздела (сохраняем контекст).
2. Эмбеддинги — через OpenAI (ключ на сервере)
- Дефолт `text-embedding-3-small` (1536). Нужно лучше по русскому — `text-embedding-3-large` (3072).
- НЕ `gte-small` (она только английская).
- ⚠️ Правило: размерность колонки `vector` = размерности модели. 3-small = 1536, 3-large = 3072. Сменил модель → пересоздай колонку/индекс и переэмбедди всю базу заново.
3. Хранение и поиск (Supabase)
- Таблица, напр.
documents:id,content text,metadata jsonb(источник, владелец),embedding vector(1536). - Индекс HNSW по
embedding(когда документов много). - SQL-функция `match_documents(query_embedding, match_count, filter)` — косинусное сходство (
<=>), возвращает топ-N. - Для точности можно гибрид (смысл + полнотекст), но начни с чистого векторного.
4. Два потока в Edge Functions
- Индексация: загрузил документ → Edge Function режет на чанки → делает эмбеддинги (OpenAI, ключ из
Deno.env.get) → пишет строки вdocuments. - Ответ: вопрос → эмбеддинг вопроса →
match_documentsтоп-5 → собрать найденные куски в контекст → chat completion с инструкцией: «Отвечай ТОЛЬКО из этого контекста. Если ответа нет — так и скажи, не выдумывай» → показать ответ + источники.
🔒 Правила и грабли
- Ключ OpenAI — только на сервере (Edge Function secrets), в чат не проси. По ключам зови навык
secrets-policy(Проводник за руку). - Изоляция: если база знаний персональная — фильтруй по владельцу (RLS /
metadata), иначе человек увидит чужие документы. - Грабли: нарезка вслепую · забыть HNSW-индекс · рассинхрон размерности · не поставить фильтр доступа.
- Строишь через Supabase MCP (миграции, функция, Edge Functions). Аддитивно к живому — не ломай рабочие трубы.
- Код по месту генерит родной агент; навык задаёт рецепт, параметры и правила.
✅ Определение готовности
Загрузил документ → задал вопрос по нему → получил верный ответ со ссылкой на источник; задал вопрос НЕ по базе → модель честно говорит «не знаю».
Источники рецепта
Supabase Semantic Search (supabase.com/docs/guides/ai/semantic-search), Generate embeddings, Vector indexes; OpenAI embeddings (text-embedding-3-*); практики нарезки RAG 2025–2026 (Firecrawl, Weaviate).
