ОБУЧЕНИЕ· 2 мин чтения · 24 июля, 12:16

Локальная RAG на Go, PostgreSQL и Ollama: пошаговый разбор

Локальная RAG-система на Go, PostgreSQL и Ollama — нулевая стоимость и полный контроль данных. Инструкция для бизнеса с конфиденциальными документами.

RAG (Retrieval-Augmented Generation) — LLM отвечает, опираясь на собственную базу документов. Локальная реализация на Go, PostgreSQL и Ollama даёт контроль над данными и нулевую стоимость за запрос.

  1. Установите Ollama, скачайте модель (llama3 или mixtral) и проверьте API (порт 11434).
  2. Создайте БД в PostgreSQL, включите расширение pgvector: CREATE EXTENSION vector;
  3. Инициализируйте Go-модуль, добавьте зависимости: lib/pq, pgvector-go, ollama/api.
  4. Напишите функцию загрузки: разбейте текст на чанки (например, 500 токенов, перекрытие 50) и сохраните в таблицу documents (id, content, metadata).
  5. Для каждого чанка вызовите Ollama POST /api/embeddings с моделью (nomic-embed-text), сохраните вектор в колонку embedding типа vector.
  6. Создайте индекс: CREATE INDEX ON documents USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
  7. При вопросе: получите эмбеддинг вопроса, найдите 5 ближайших соседей: SELECT content, 1 - (embedding <=> $1) AS similarity FROM documents ORDER BY embedding <=> $1 LIMIT 5;
  8. Соберите чанки в контекст (до 2000 токенов), отправьте в LLM с промптом: «Ответь на вопрос, используя контекст. Если нет — скажи, что не знаешь.»
  9. Верните ответ. Добавьте логирование и обработку ошибок (Ollama, таймауты, пустой результат).
Стоимость инфраструктуры (месяц)0 рублей (все компоненты Open Source)
Время индексации 1000 страницоколо 15 минут (зависит от модели эмбеддинга и GPU)
Среднее время ответа на CPU (Intel i5-12400)2-5 секунд на вопрос
Поддерживаемые форматы документовТекст, Markdown, JSON - после предварительного парсинга
✦ ProAgent AI

Обсудить внедрение ИИ-агентов в вашем бизнесе

Расскажите о задаче — посчитаем, сколько часов и денег сэкономит агент.

Обсудить внедрение →