Skip to content Skip to footer

Uruchamianie zaawansowanego chatbota RAG

Instalacja lokalnego systemu na Ubuntu

Wprowadzenie

Cześć! – – – Chcesz zainstalować lokalny system AI oparty na pakiecie local-ai-packaged (https://github.com/coleam00/local-ai-packaged) i uruchomić zaawansowanego chatbota opartego na technologii RAG (Retrieval-Augmented Generation)? – – – Świetnie trafiłeś! – – – Ten artykuł to idiotoodporna instrukcja dla polskich użytkowników, którzy chcą stworzyć lokalny serwer AI, zwiększając atrakcyjność swoich instrukcji i sprzedaży usług. – – – Pokażę Ci, jak zainstalować system lokalnie na Ubuntu, skonfigurować go i uruchomić chatbota RAG, który wykorzystuje Supabase i Qdrant do przechowywania danych oraz Ollama do generowania odpowiedzi. – – – Jeśli istnieje lepsza technologia niż RAG, rozważę ją, ale RAG jest obecnie idealnym wyborem dla lokalnych systemów ze względu na jego efektywność i elastyczność. – – – Wszystko po polsku, z mnóstwem komend w wierszu poleceń, abyś mógł działać od razu!

Dlaczego lokalny system AI i chatbot RAG?

  • Lokalny system: – – – Uruchomienie local-ai-packaged lokalnie pozwala na pełną kontrolę nad danymi, eliminuje koszty chmury i zapewnia prywatność, co jest kluczowe dla polskich firm. – – – To także świetny sposób na pokazanie klientom, jak łatwo stworzyć własny serwer AI, zwiększając sprzedaż Twoich instrukcji.

  • RAG: – – – Retrieval-Augmented Generation łączy wyszukiwanie kontekstowe (np. w Qdrant) z generowaniem odpowiedzi przez model językowy (Ollama). – – – To idealne rozwiązanie dla chatbota, który odpowiada na pytania w oparciu o Twoje dane (np. instrukcje, dokumenty firmowe). – – – Alternatywy, takie jak czyste LLM (Large Language Models) bez RAG, są mniej efektywne, bo nie korzystają z kontekstu, a technologie jak GraphRAG (używające Neo4j) są bardziej skomplikowane i mniej uniwersalne na start. – – – RAG jest prosty, skuteczny i dobrze wspiera język polski.

  • Polski kontekst: – – – Wszystkie instrukcje są w języku polskim, a chatbot będzie zoptymalizowany dla polskich użytkowników, co zwiększy atrakcyjność Twoich usług.

Krok po kroku: Instalacja lokalnego systemu i uruchomienie chatbota RAG

1. Przygotowanie środowiska na Ubuntu

Zainstaluj wymagane oprogramowanie: Git, Docker i Docker Compose. – – – Zakładam, że używasz Ubuntu (np. 22.04 lub 24.04).

sudo apt update
sudo apt install -y git docker.io docker-compose-plugin

Włącz i uruchom Docker:

sudo systemctl enable docker
sudo systemctl start docker

Dodaj swojego użytkownika do grupy docker, aby uniknąć używania sudo przy każdym poleceniu:

sudo usermod -aG docker $USER

Zaloguj się ponownie, aby zastosować zmiany:

exit

2. Klonowanie repozytorium local-ai-packaged

Sklonuj repozytorium local-ai-packaged na swój lokalny komputer:

git clone -b stable https://github.com/coleam00/local-ai-packaged.git
cd local-ai-packaged

3. Konfiguracja pliku .env

Skopiuj przykładowy plik .env.example do .env:

cp .env.example .env

Otwórz plik .env w edytorze (np. nano):

sudo apt install -y nano
nano .env

Wygeneruj bezpieczne klucze i hasła za pomocą openssl:

sudo apt install -y openssl
# N8N Configuration
N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)
N8N_USER_MANAGEMENT_JWT_SECRET=$(openssl rand -hex 32)

# Supabase Secrets
POSTGRES_PASSWORD=$(openssl rand -hex 32)
JWT_SECRET=$(openssl rand -hex 32)
ANON_KEY=$(openssl rand -hex 32)
SERVICE_ROLE_KEY=$(openssl rand -hex 32)
DASHBOARD_PASSWORD=$(openssl rand -hex 16)
POOLER_TENANT_ID=agencja-ai-$(openssl rand -hex 8)

# Neo4j Secrets
NEO4J_AUTH=neo4j/$(openssl rand -hex 16)

# Langfuse Credentials
CLICKHOUSE_PASSWORD=$(openssl rand -hex 32)
MINIO_ROOT_PASSWORD=$(openssl rand -hex 32)
LANGFUSE_SALT=$(openssl rand -hex 32)
NEXTAUTH_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)

# Flowise Configuration
FLOWISE_PASSWORD=$(openssl rand -hex 16)

# Logflare Keys
LOGFLARE_PUBLIC_ACCESS_TOKEN=$(openssl rand -hex 32)
LOGFLARE_PRIVATE_ACCESS_TOKEN=$(openssl rand -hex 32)

# Vault Encryption Key
VAULT_ENC_KEY=$(openssl rand -hex 32)

Edytuj plik .env, wklejając wygenerowane wartości. Przykładowy plik .env dla środowiska lokalnego:

############
# N8N Configuration
############
N8N_ENCRYPTION_KEY=your-generated-n8n-encryption-key
N8N_USER_MANAGEMENT_JWT_SECRET=your-generated-n8n-jwt-secret

############
# Supabase Secrets
############
POSTGRES_PASSWORD=your-generated-postgres-password
JWT_SECRET=your-generated-jwt-secret
ANON_KEY=your-generated-anon-key
SERVICE_ROLE_KEY=your-generated-service-role-key
DASHBOARD_USERNAME=admin
DASHBOARD_PASSWORD=your-generated-dashboard-password
POOLER_TENANT_ID=your-generated-tenant-id

############
# Neo4j Secrets
############
NEO4J_AUTH=neo4j/your-generated-neo4j-password

############
# Langfuse Credentials
############
CLICKHOUSE_PASSWORD=your-generated-clickhouse-password
MINIO_ROOT_PASSWORD=your-generated-minio-password
LANGFUSE_SALT=your-generated-langfuse-salt
NEXTAUTH_SECRET=your-generated-nextauth-secret
ENCRYPTION_KEY=your-generated-encryption-key

############
# Flowise Configuration
############
FLOWISE_USERNAME=admin
FLOWISE_PASSWORD=your-generated-flowise-password

############
# Database
############
POSTGRES_HOST=db
POSTGRES_DB=postgres
POSTGRES_PORT=5432
POSTGRES_USER=postgres

############
# Supavisor
############
POOLER_PROXY_PORT_TRANSACTION=6543
POOLER_DEFAULT_POOL_SIZE=20
POOLER_MAX_CLIENT_CONN=100
SECRET_KEY_BASE=your-generated-encryption-key
VAULT_ENC_KEY=your-generated-vault-enc-key
POOLER_DB_POOL_SIZE=5

############
# API Proxy
############
KONG_HTTP_PORT=8000
KONG_HTTPS_PORT=8443

############
# API
############
PGRST_DB_SCHEMAS=public,storage,graphql_public

############
# Auth
############
SITE_URL=http://localhost:3000
ADDITIONAL_REDIRECT_URLS=
JWT_EXPIRY=3600
DISABLE_SIGNUP=false
API_EXTERNAL_URL=http://localhost:8000

## Mailer Config
MAILER_URLPATHS_CONFIRMATION=/auth/v1/verify
MAILER_URLPATHS_INVITE=/auth/v1/verify
MAILER_URLPATHS_RECOVERY=/auth/v1/verify
MAILER_URLPATHS_EMAIL_CHANGE=/auth/v1/verify
ENABLE_EMAIL_SIGNUP=true
ENABLE_EMAIL_AUTOCONFIRM=true
SMTP_ADMIN_EMAIL=admin@example.com
SMTP_HOST=your-smtp-host
SMTP_PORT=587
SMTP_USER=your-smtp-user
SMTP_PASS=your-smtp-password
SMTP_SENDER_NAME=Agencja AI
ENABLE_ANONYMOUS_USERS=false
ENABLE_PHONE_SIGNUP=true
ENABLE_PHONE_AUTOCONFIRM=true

############
# Studio
############
STUDIO_DEFAULT_ORGANIZATION=Agencja AI
STUDIO_DEFAULT_PROJECT=Main Project
STUDIO_PORT=3000
SUPABASE_PUBLIC_URL=http://localhost:8000
IMGPROXY_ENABLE_WEBP_DETECTION=true

############
# Functions
############
FUNCTIONS_VERIFY_JWT=false

############
# Logs
############
LOGFLARE_PUBLIC_ACCESS_TOKEN=your-generated-logflare-public-key
LOGFLARE_PRIVATE_ACCESS_TOKEN=your-generated-logflare-private-key
DOCKER_SOCKET_LOCATION=/var/run/docker.sock

Zapisz plik (Ctrl+O, Enter, Ctrl+X). – – – Skonfiguruj SMTP dla powiadomień e-mail (np. AWS SES):

SMTP_HOST=email-smtp.<region>.amazonaws.com
SMTP_PORT=587
SMTP_USER=your-smtp-username
SMTP_PASS=your-smtp-password
SMTP_SENDER_NAME=Agencja AI

4. Uruchomienie usług

Zainstaluj zależności Pythona dla skryptu start_services.py:

sudo apt install -y python3-pip
pip3 install docker

Uruchom usługi w trybie lokalnym:

python3 start_services.py --profile cpu --environment private

Sprawdź, czy usługi działają:

docker compose ps

5. Konfiguracja firewalla

Otwórz porty dla lokalnego dostępu:

sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 8000
sudo ufw allow 5678
sudo ufw allow 3000
sudo ufw allow 3001
sudo ufw allow 11434
sudo ufw allow 6333
sudo ufw allow 7474
sudo ufw reload
sudo ufw status

6. Konfiguracja chatbota RAG w n8n

RAG wymaga: (1) bazy wektorowej (Qdrant), (2) metadanych (Supabase), (3) modelu językowego (Ollama). – – – Skonfigurujemy przepływ pracy w n8n, aby stworzyć chatbota.

a. Zaloguj się do n8n

Otwórz n8n:

http://localhost:5678

Utwórz lokalne konto użytkownika w kreatorze konfiguracji.

b. Stworzenie tabeli w Supabase

Zaloguj się do Supabase Studio:

http://localhost:8000

W SQL Editor utwórz tabelę conversations:

CREATE TABLE conversations (
  id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  user_id TEXT NOT NULL,
  message TEXT NOT NULL,
  timestamp TIMESTAMPTZ DEFAULT NOW(),
  vector_id TEXT
);

c. Pobranie modelu w Ollama

Pobierz model nomic-embed-text dla wektorów i llama3.1 dla generowania odpowiedzi:

docker compose exec ollama ollama pull nomic-embed-text
docker compose exec ollama ollama pull llama3.1

d. Stworzenie kolekcji w Qdrant

Utwórz kolekcję conversations:

curl -X PUT http://localhost:6333/collections/conversations \
  -H "Content-Type: application/json" \
  -d '{
    "vectors": {
      "size": 768,
      "distance": "Cosine"
    }
  }'

e. Konfiguracja przepływu pracy RAG w n8n

  1. W n8n kliknij New Workflow.

  2. Dodaj węzły:

    • Webhook: Ustaw na POST, ścieżka /rag-chatbot.

    • HTTP Request: Generowanie wektora (POST na http://ollama:11434/api/embeddings, model: nomic-embed-text).

    • HTTP Request: Zapis wektora do Qdrant (POST na http://qdrant:6333/collections/conversations/points).

    • Supabase: Zapis metadanych (poświadczenia: db, postgres, POSTGRES_PASSWORD z .env).

    • HTTP Request: Wyszukiwanie kontekstu w Qdrant (POST na http://qdrant:6333/collections/conversations/points/search).

    • Ollama: Generowanie odpowiedzi (model: llama3.1, prompt: „Odpowiedz po polsku na podstawie kontekstu: {{context}}”).

  3. Aktywuj przepływ i skopiuj Production Webhook URL.

f. Integracja z Open WebUI

Zaloguj się do Open WebUI:

http://localhost:3000

Dodaj funkcję w WorkspaceFunctionsAdd Function:

cat n8n_pipe.py

Wklej kod, ustaw n8n_url na Webhook URL z n8n i włącz funkcję.

7. Testowanie chatbota

Wyślij testowe zapytanie w Open WebUI (np. „Jak zainstalować serwer AI?”). – – – Chatbot powinien pobrać kontekst z Qdrant i odpowiedzieć po polsku, używając danych z Supabase.

8. Budowanie profilu użytkownika

Dodaj tabelę user_profiles w Supabase:

CREATE TABLE user_profiles (
  id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  user_id TEXT NOT NULL,
  preferences JSONB,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

Zapisz preferencje użytkownika:

curl -X POST http://localhost:8000/rest/v1/user_profiles \
  -H "Authorization: Bearer your-anon-key" \
  -H "Content-Type: application/json" \
  -H "apikey: your-anon-key" \
  -d '{
    "user_id": "tomasz-syn-grzegorza",
    "preferences": {
      "style": "idiotoodporny",
      "language": "polski",
      "command_inclusion": true
    }
  }'

Pobierz your-anon-key z .env:

cat .env | grep ANON_KEY

9. Weryfikacja

Sprawdź, czy chatbot działa:

  • Open WebUI: http://localhost:3000.

  • Sprawdź dane w Supabase: http://localhost:8000 (Table Editor).

  • Sprawdź wektory w Qdrant:

curl http://localhost:6333/collections/conversations/points

10. Zwiększanie sprzedaży instrukcji

  • Polski język: – – – Chatbot odpowiadający po polsku i instrukcje w stylu „idiotoodpornym” przyciągną polskich klientów.

  • Pokaz możliwości: – – – Zaoferuj demo chatbota na Twojej stronie, pokazując, jak łatwo skonfigurować serwer AI.

  • Dokumentacja: – – – Udostępnij ten artykuł jako PDF na swojej stronie, aby klienci mogli łatwo śledzić kroki.

Najlepsze praktyki

  • Bezpieczeństwo: – – – Nigdy nie zatwierdzaj .env do Git. Używaj menedżera haseł do przechowywania kluczy.

  • Wydajność: – – – Upewnij się, że masz minimum 8 GB RAM dla Ollama i Qdrant.

  • Logi: – – – Monitoruj logi usług:

docker compose logs supabase
docker compose logs qdrant
docker compose logs ollama
  • Kopia zapasowa: – – – Regularnie twórz kopie bazy Supabase:

docker compose exec db pg_dump -U postgres postgres > backup.sql

Rozwiązywanie problemów

  • Usługi nie działają: – – – Sprawdź status:

docker compose ps
  • Błąd w Qdrant: – – – Upewnij się, że kolekcja istnieje:

curl http://localhost:6333/collections
  • Błąd Ollama: – – – Sprawdź, czy modele zostały pobrane:

docker compose exec ollama ollama list
  • Błąd Supabase: – – – Usuń folder danych i uruchom ponownie, jeśli problem persists:

rm -rf supabase/docker/volumes/db/data
python3 start_services.py --profile cpu --environment private

Podsumowanie

Zainstalowałeś lokalny system local-ai-packaged i uruchomiłeś zaawansowanego chatbota RAG, który odpowiada po polsku i wykorzystuje Twoje dane. – – – To rozwiązanie jest idealne dla polskich firm, które chcą zwiększyć sprzedaż dzięki prostym instrukcjom i lokalnym serwerom AI. – – – Możesz teraz rozszerzać chatbota, dodając więcej danych do Qdrant lub tworząc nowe przepływy pracy w n8n. – – – Twoi klienci pokochają łatwość konfiguracji i polskojęzyczne wsparcie!

Leave a comment

0.0/5