AI-стек для стартапа: минимальный набор

Практичный гайд: что купить, что запустить локально, а что не нужно вообще. Бюджетная сборка для 3-5 разработчиков.

📊 Начинающий⏱ 8 мин

# 1. МИНИМАЛЬНЫЙ НАБОР

╔══════════════╦═══════════════════════════╦═══════╗
║ Инструмент   ║ Зачем                     ║ Цена  ║
╠══════════════╬═══════════════════════════╬═══════╣
 Ollama        Локальный LLM сервер        $0    
 Continue.dev  AI-автодополнение в IDE    $0    
 Aider         AI-парное программирование  $0    
 ChromaDB      Векторная БД для RAG        $0    
 Open WebUI    Веб-интерфейс для LLM      $0    
 VPS + GPU     Сервер RTX 4090/RTX 6000    ~$200/мес║
╚══════════════╩═══════════════════════════╩═══════╝

# ИТОГО: $0 на софт + ~$200/мес на железо
# Всё Open Source, никаких API-ключей, полный контроль

# 2. ЛОКАЛЬНЫЙ LLM ЧЕРЕЗ OLLAMA

# docker-compose.yml — Ollama как сервис для всей команды
version: '3.8'
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama-server
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    environment:
      - OLLAMA_KEEP_ALIVE=24h
      - OLLAMA_NUM_PARALLEL=4

# Запуск:
docker compose up -d

# Загрузка моделей внутрь контейнера
docker exec -it ollama-server ollama pull llama3.1
docker exec -it ollama-server ollama pull qwen2.5-coder:7b

# 3. AI В РЕДАКТОРЕ

# ~/.continue/config.json — настройка Continue с Ollama
{
  "models": [{
    "title": "Llama 3.1 (локальный)",
    "provider": "ollama",
    "model": "llama3.1",
    "apiBase": "http://gpu-server:11434"
  }, {
    "title": "Qwen Coder (код)",
    "provider": "ollama",
    "model": "qwen2.5-coder:7b",
    "apiBase": "http://gpu-server:11434"
  }],
  "tabAutocompleteModel": {
    "provider": "ollama",
    "model": "qwen2.5-coder:1.5b"
  }
}

# Горячие клавиши:
#   Ctrl+L — выделить код → спросить
#   Ctrl+I — inline редактирование
#   Tab     — автодополнение (срабатывает на паузе)

# 4. RAG НА ДОКУМЕНТАЦИИ

import chromadb
from chromadb.utils import embedding_functions

# Инициализация ChromaDB и эмбеддингов
client = chromadb.PersistentClient(path="./docs_db")
ef = embedding_functions.OllamaEmbeddingFunction(
    model_name="nomic-embed-text",
    url="http://localhost:11434/api/embeddings"
)

collection = client.get_or_create_collection(
    name="docs",
    embedding_function=ef
)

# Добавление документов
collection.add(
    documents=["API принимает JSON с полями name и email"],
    ids=["doc_1"]
)

# Поиск релевантных документов
results = collection.query(
    query_texts=["какой формат данных принимает API?"],
    n_results=3
)
print(results['documents'])

# 5. CI/CD АГЕНТ ДЛЯ РЕВЬЮ

# .github/workflows/ai-review.yml
name: AI Code Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: self-hosted  # ваш сервер с GPU
    steps:
      - uses: actions/checkout@v4
      - name: Get diff
        run: |
          git diff origin/${{ github.base_ref }} > diff.txt
      - name: AI Review
        run: |
          DIFF=$(cat diff.txt | head -c 8000)
          curl -s http://gpu-server:11434/api/generate \
            -d "{
              \"model\": \"llama3.1\",
              \"prompt\": \"Review this code diff. Find bugs, "\
                        \"security issues, and suggest improvements: "\
                        \"$DIFF\",
              \"stream\": false
            }" | jq -r '.response' > review.md
      - name: Post comment
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const review = fs.readFileSync('review.md', 'utf8');
            await github.issues.createComment({...});

# 6. ЧТО НЕ НУЖНО

❌ УПРАВЛЯЕМЫЕ ВЕКТОРНЫЕ БД (Pinecone, Weaviate Cloud)
   → ChromaDB на вашем сервере решает 95% задач за $0

❌ ДОРОГИЕ API КЛЮЧИ (OpenAI, Anthropic, Google AI)
   → Локальные модели через Ollama: качество сопоставимо, цена $0

❌ FINE-TUNING НА СТАРТЕ
   → RAG + хороший промпт дают 80% результата без затрат
   → Fine-tuning нужен когда есть 1000+ примеров и RAG не справляется

❌ LANGCHAIN ДЛЯ ПРОСТЫХ ЗАДАЧ
   → LangChain добавляет сложность. Для простого RAG:
   → chromadb + sentence-transformers + openai (локальный) = 50 строк кода
   → Тот же функционал на LangChain = 200 строк + куча абстракций

❌ ОТДЕЛЬНЫЙ ML-ИНЖЕНЕР
   → Базовый AI-стек настраивается за 1 день силами бэкенд-разработчика

🔗 Полезные ссылки

📖 Ollama📖 Continue.dev📖 ChromaDB📖 Aider📖 Open WebUI