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