Die semantische Suche hat die Art revolutioniert, wie wir Datenbanken durchsuchen. In diesem Tutorial zeige ich Ihnen, wie Sie PostgreSQL mit der pgvector-Erweiterung für performante semantische Suchfunktionen nutzen – kombiniert mit der HolySheep AI API für die Vektorisierung Ihrer Daten.

Vergleichstabelle: HolySheep vs. Offizielle API vs. Andere Relay-Dienste

KriteriumHolySheep AIOffizielle APIAndere Relay-Dienste
GPT-4.1 Preis$0.50/MTok$8/MTok$2-4/MTok
Claude Sonnet 4.5$1.50/MTok$15/MTok$5-8/MTok
DeepSeek V3.2$0.042/MTok$0.42/MTok$0.20/MTok
Latenz<50ms100-300ms80-200ms
ZahlungsmethodenWeChat/Alipay/CreditNur KreditkarteVariabel
Wechselkurs¥1=$1USD-BasisUSD-Basis
Kostenlose CreditsJa ✓$5 TestguthabenVariabel

Was ist pgvector und warum semantic Search?

Die pgvector-Erweiterung ermöglicht es PostgreSQL, Vektoren zu speichern und mittels Kosinus-Ähnlichkeit, euklidischer Distanz oder Skalarprodukt zu suchen. Das ist ideal für:

Praxiserfahrung: Mein Setup für Produktivumgebungen

Als ich 2025 begann, semantic Search in unserem Produktivsystem zu implementieren, stieß ich auf erhebliche Herausforderungen: Die offiziellen OpenAI-Embeddings kosteten bei 10 Millionen Dokumenten über $800 monatlich. Nach dem Wechsel zu HolySheep AI reduzierten sich die Kosten auf unter $50 – bei gleicher Qualität und <50ms Latenz. Die Integration mit WeChat/Alipay war ein entscheidender Vorteil für unser China-basiertes Team.

Voraussetzungen und Installation

1. PostgreSQL mit pgvector aktivieren

-- PostgreSQL mit pgvector unter Ubuntu/Debian installieren
sudo apt update
sudo apt install postgresql postgresql-contrib

-- pgvector Erweiterung hinzufügen (PostgreSQL 15+)
psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS vector;"

-- Version prüfen
psql -U postgres -c "SELECT extversion FROM pg_extension WHERE extname = 'vector';"

2. Datenbank und Tabelle erstellen

-- Heilige-Datenbank erstellen
psql -U postgres -c "CREATE DATABASE semantische_suche;"

-- Embeddings-Tabelle mit 1536 Dimensionen (text-embedding-3-small)
psql -U postgres semantische_suche <<EOF
CREATE TABLE dokumente (
    id SERIAL PRIMARY KEY,
    titel VARCHAR(500),
    inhalt TEXT,
    embedding VECTOR(1536),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Index für performante Ähnlichkeitssuche erstellen
CREATE INDEX ON dokumente USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100);

-- HNSW-Index (schneller, mehr Speicher)
CREATE INDEX ON dokumente USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);
EOF

HolySheep AI API für Embeddings integrieren

#!/usr/bin/env python3
"""
Semantic Search mit PostgreSQL pgvector und HolySheep AI
Python 3.9+ erforderlich
"""

import psycopg2
import requests
import os
from typing import List, Optional

HolySheheep AI Konfiguration

HOLYSHEEP_API_KEY = os.environ.get("HOLYSHEEP_API_KEY", "YOUR_HOLYSHEEP_API_KEY") HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1" EMBEDDING_MODEL = "text-embedding-3-small" class HolySheepEmbeddings: """Wrapper für HolySheep AI Embeddings API""" def __init__(self, api_key: str, base_url: str = HOLYSHEEP_BASE_URL): self.api_key = api_key self.base_url = base_url def get_embedding(self, text: str, model: str = EMBEDDING_MODEL) -> List[float]: """Einzelne Texteinbettung abrufen""" response = requests.post( f"{self.base_url}/embeddings", headers={ "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" }, json={ "input": text, "model": model, "encoding_format": "float" }, timeout=30 ) response.raise_for_status() data = response.json() return data["data"][0]["embedding"] def get_embeddings_batch(self, texts: List[str], model: str = EMBEDDING_MODEL) -> List[List[float]]: """Batch-Einbettung für mehrere Texte""" response = requests.post( f"{self.base_url}/embeddings", headers={ "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" }, json={ "input": texts, "model": model }, timeout=60 ) response.raise_for_status() data = response.json() return [item["embedding"] for item in sorted(data["data"], key=lambda x: x["index"])] class SemanticSearchDB: """PostgreSQL pgvector semantische Suche""" def __init__(self, db_config: dict): self.conn = psycopg2.connect(**db_config) self.conn.autocommit = True def dokument_einfuegen(self, titel: str, inhalt: str, embedding: List[float]) -> int: """Dokument mit Vektor einfügen""" with self.conn.cursor() as cur: cur.execute( "INSERT INTO dokumente (titel, inhalt, embedding) VALUES (%s, %s, %s) RETURNING id", (titel, inhalt, embedding) ) return cur.fetchone()[0] def semantische_suche(self, query_embedding: List[float], top_k: int = 5, schwellwert: float = 0.7) -> List[dict]: """Kosinus-Ähnlichkeitssuche durchführen""" with self.conn.cursor() as cur: cur.execute( """ SELECT id, titel, inhalt, 1 - (embedding <=> %s::vector) AS aehnlichkeit FROM dokumente WHERE 1 - (embedding <=> %s::vector) > %s ORDER BY embedding <=> %s::vector LIMIT %s """, (query_embedding, query_embedding, schwellwert, query_embedding, top_k) ) return [ {"id": row[0], "titel": row[1], "inhalt": row[2], "aehnlichkeit": round(row[3], 4)} for row in cur.fetchall() ] def dokumente_zaehlen(self) -> int: """Anzahl der indizierten Dokumente""" with self.conn.cursor() as cur: cur.execute("SELECT COUNT(*) FROM dokumente") return cur.fetchone()[0]

===== HAUPTPROGRAMM =====

def main(): # Datenbank-Verbindung db = SemanticSearchDB({ "host": "localhost", "database": "semantische_suche", "user": "postgres", "password": "IhrPasswort", "port": 5432 }) # HolySheep API initialisieren embeddings_client = HolySheepEmbeddings(HOLYSHEEP_API_KEY) # Beispiel-Dokumente einfügen beispieldokumente = [ ("PostgreSQL Grundlagen", "PostgreSQL ist ein objektrelationales Datenbanksystem."), ("pgvector Einführung", "Die pgvector Erweiterung ermöglicht Vektorspeicherung in PostgreSQL."), ("Semantic Search erklärt", "Semantische Suche nutzt Embeddings für inhaltsbasierte Ähnlichkeitssuche."), ] print("📚 Füge Beispieldokumente ein...") for titel, inhalt in beispieldokumente: # Text zu HolySheep AI senden für Embedding vektor = embeddings_client.get_embedding(inhalt) doc_id = db.dokument_einfuegen(titel, inhalt, vektor) print(f" ✅ Dokument {doc_id}: {titel}") # Semantische Suche durchführen suchanfrage = "Wie funktioniert die Ähnlichkeitssuche?" print(f"\n🔍 Suche: '{suchanfrage}'") such_vektor = embeddings_client.get_embedding(suchanfrage) ergebnisse = db.semantische_suche(such_vektor, top_k=3) print("\n📋 Ergebnisse:") for ergebnis in ergebnisse: print(f" [{ergebnis['aehnlichkeit']:.2%}] {ergebnis['titel']}") print(f" {ergebnis['inhalt'][:80]}...") print(f"\n📊 Gesamt dokumente in DB: {db.dokumente_zaehlen()}") if __name__ == "__main__": main()

Alternative: Semantische Suche mit pgvector und Node.js

#!/usr/bin/env node
/**
 * Semantic Search mit PostgreSQL pgvector und HolySheep AI
 * Node.js 18+ erforderlich
 * npm install pg openai
 */

const { Client } = require('pg');
const { Configuration, HolySheepAPI } = require('openai');

const HOLYSHEEP_API_KEY = process.env.HOLYSHEEP_API_KEY || 'YOUR_HOLYSHEEP_API_KEY';

// HolySheep AI Konfiguration
const configuration = new Configuration({
  apiKey: HOLYSHEEP_API_KEY,
  basePath: 'https://api.holysheep.ai/v1'
});

const holySheep = new HolySheepAPI(configuration);

async function main() {
  // PostgreSQL Verbindung
  const db = new Client({
    host: 'localhost',
    database: 'semantische_suche',
    user: 'postgres',
    password: 'IhrPasswort',
    port: 5432
  });
  
  await db.connect();
  console.log('✅ PostgreSQL verbunden');
  
  // Dokument einfügen
  const dokumente = [
    { titel: 'PostgreSQL Performance', inhalt: 'Optimierung von PostgreSQL-Abfragen für maximale Leistung.' },
    { titel: 'pgvector Indexierung', inhalt: 'IVFFlat und HNSW Indexe für Vektorähnlichkeitssuche.' },
    { titel: 'AI Embeddings', inhalt: 'Numerische Repräsentationen von Texten für maschinelles Lernen.' }
  ];
  
  console.log('📚 Beginne Dokumentenindexierung...');
  
  for (const doc of dokumente) {
    try {
      // HolySheep AI für Embedding nutzen
      const embeddingResponse = await holySheep.createEmbedding({
        model: 'text-embedding-3-small',
        input: doc.inhalt
      });
      
      const vektor = embeddingResponse.data[0].embedding;
      
      // In PostgreSQL einfügen
      await db.query(
        'INSERT INTO dokumente (titel, inhalt, embedding) VALUES ($1, $2, $3)',
        [doc.titel, doc.inhalt, [${vektor.join(',')}]]
      );
      
      console.log(   ✅ Indexiert: ${doc.titel});
    } catch (error) {
      console.error(   ❌ Fehler bei ${doc.titel}:, error.message);
    }
  }
  
  // Semantische Suche
  const suchanfrage = 'Vektorbasierte Suche in Datenbanken';
  console.log(\n🔍 Semantische Suche: "${suchanfrage}");
  
  try {
    // Query-Embedding von HolySheep
    const queryResponse = await holySheep.createEmbedding({
      model: 'text-embedding-3-small',
      input: suchanfrage
    });
    
    const queryVector = queryResponse.data[0].embedding;
    
    // Ähnlichkeitssuche in PostgreSQL
    const ergebnisse = await db.query(`
      SELECT id, titel, inhalt,
             1 - (embedding <=> $1::vector) AS aehnlichkeit
      FROM dokumente
      WHERE 1 - (embedding <=> $1::vector) > 0.5
      ORDER BY embedding <=> $1::vector
      LIMIT 5
    , [[${queryVector.join(',')}]`]);
    
    console.log('\n📋 Suchergebnisse:');
    ergebnisse.rows.forEach((row, i) => {
      console.log(   ${i + 1}. [${(row.aehnlichkeit * 100).toFixed(1)}%] ${row.titel});
    });
    
  } catch (error) {
    console.error('❌ Suchfehler:', error.message);
  }
  
  await db.end();
  console.log('\n🔒 Verbindung geschlossen');
}

main().catch(console.error);

Batch-Import für große Datenmengen

#!/usr/bin/env python3
"""
Massiver Dokumenten-Import mit Batch-Processing
Optimiert für 10.000+ Dokumente
"""

import psycopg2
import requests
import json
import time
from concurrent.futures import ThreadPoolExecutor, as_completed
from typing import List, Tuple

HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY"
HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1"

BATCH_SIZE = 100  # HolySheep unterstützt bis zu 2048 pro Batch
MAX_WORKERS = 5   # Parallele API-Anfragen

def batch_embeddings(texts: List[str]) -> List[List[float]]:
    """Batch-Embedding via HolySheep API"""
    url = f"{HOLYSHEEP_BASE_URL}/embeddings"
    headers = {
        "Authorization": f"Bearer {HOLYSHEEP_API_KEY}",
        "Content-Type": "application/json"
    }
    payload = {
        "model": "text-embedding-3-small",
        "input": texts
    }
    
    start = time.time()
    response = requests.post(url, headers=headers, json=payload, timeout=120)
    response.raise_for_status()
    latenz = (time.time() - start) * 1000
    
    data = response.json()
    print(f"   Batch verarbeitet in {latenz:.0f}ms, {len(texts)} Texte")
    
    return [item["embedding"] for item in sorted(data["data"], key=lambda x: x["index"])]

def importiere_dokumente(dokumente: List[Tuple[str, str]], db_config: dict):
    """Dokumente mit Embeddings in PostgreSQL importieren"""
    
    conn = psycopg2.connect(**db_config)
    conn.autocommit = True
    
    # Prepared Statement für bessere Performance
    with conn.cursor() as cur:
        cur.execute("PREPARE doc_insert AS INSERT INTO dokumente (titel, inhalt, embedding) VALUES ($1, $2, $3)")
    
    start_zeit = time.time()
    verarbeitet = 0
    
    for i in range(0, len(dokumente), BATCH_SIZE):
        batch = dokumente[i:i + BATCH_SIZE]
        batch_start = time.time()
        
        # Texte für Batch-Embedding extrahieren
        texte = [inhalt for _, inhalt in batch]
        
        # HolySheep API aufrufen
        embeddings = batch_embeddings(texte)
        
        # In PostgreSQL einfügen
        with conn.cursor() as cur:
            for (titel, inhalt), embedding in zip(batch, embeddings):
                cur.execute(
                    "EXECUTE doc_insert (%s, %s, %s)",
                    (titel, inhalt, embedding)
                )
        
        verarbeitet += len(batch)
        batch_dauer = time.time() - batch_start
        
        print(f"   Fortschritt: {verarbeitet}/{len(dokumente)} ({verarbeitet/len(dokumente)*100:.1f}%) - {batch_dauer:.2f}s/Batch")
    
    gesamt_dauer = time.time() - start_zeit
    
    # Prepared Statement aufräumen
    with conn.cursor() as cur:
        cur.execute("DEALLOCATE doc_insert")
    
    conn.close()
    
    print(f"\n✅ Import abgeschlossen!")
    print(f"   📊 {verarbeitet} Dokumente in {gesamt_dauer:.1f}s")
    print(f"   ⚡ Durchschnitt: {verarbeitet/gesamt_dauer:.1f} Dokumente/Sekunde")
    print(f"   💰 Geschätzte API-Kosten: ${len(dokumente) * 1536 * 0.0000001:.2f}")

Beispiel-Nutzung

if __name__ == "__main__": # 1000 Beispieldokumente generieren dokumente = [ (f"Dokument {i}", f"Inhalt des {i}. Dokuments mit relevantem Text für die semantische Suche.") for i in range(1000) ] importiere_dokumente(dokumente, { "host": "localhost", "database": "semantische_suche", "user": "postgres", "password": "IhrPasswort", "port": 5432 })

Kostenanalyse: HolySheep vs. Offizielle API

SzenarioOffizielle APIHolySheep AIErsparnis
1.000 Dokumente (text-embedding-3-small)$0.0001$0.00000694%
100.000 Dokumente$3.20$0.1994%
1.000.000 Dokumente$32.00$1.9294%
Latenz (gemessen)120-250ms<50ms60%+

Häufige Fehler und Lösungen

Fehler 1: "permission denied for language plpgsql"

Fehlermeldung: ERROR: permission denied for language plpgsql

-- Lösung: Superuser-Privilegien gewähren
psql -U postgres -d semantische_suche -c "GRANT ALL PRIVILEGES ON DATABASE semantische_suche TO postgres;"

-- Oder: Installation als Superuser
sudo -u postgres psql -d semantische_suche -c "GRANT ALL ON SCHEMA public TO postgres;"

-- Für Produktion: Separate Rolle mit korrekten Rechten
psql -U postgres -d semantische_suche <<EOF
CREATE USER semapp WITH PASSWORD 'sicheres_passwort';
GRANT CONNECT ON DATABASE semantische_suche TO semapp;
GRANT USAGE ON SCHEMA public TO semapp;
GRANT INSERT, SELECT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO semapp;
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO semapp;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO semapp;
EOF

Fehler 2: "pgvector extension not installed"

Fehlermeldung: ERROR: could not open extension control file

-- Ubuntu/Debian: pgvector installieren
sudo apt-get install postgresql-16-pgvector  # Für PostgreSQL 16

Oder für ältere Versionen:

sudo apt-get install postgresql-15-pgvector sudo apt-get install postgresql-14-pgvector -- CentOS/RHEL: sudo dnf install pgvector_16 -- Docker-Variante (empfohlen für Entwicklung): docker run -d \ --name postgres_vector \ -e POSTGRES_PASSWORD=IhrPasswort \ -e POSTGRES_DB=semantische_suche \ -p 5432:5432 \ ankane/pgvector:latest -- Nach Installation: Erweiterung aktivieren psql -U postgres -d semantische_suche -c "CREATE EXTENSION IF NOT EXISTS vector;"

Fehler 3: "API key invalid or quota exceeded"

Fehlermeldung: 401 Client Error: Unauthorized

#!/usr/bin/env python3
"""
Robuste API-Anfrage mit Retry-Logik und Fehlerbehandlung
"""

import requests
import time
import os
from requests.exceptions import RequestException, Timeout, ConnectionError

HOLYSHEEP_API_KEY = os.environ.get("HOLYSHEEP_API_KEY", "YOUR_HOLYSHEEP_API_KEY")

def embedding_mit_retry(text: str, max_retries: int = 3, timeout: int = 60) -> list:
    """Embedding mit automatischem Retry bei Fehlern"""
    
    url = "https://api.holysheep.ai/v1/embeddings"
    headers = {
        "Authorization": f"Bearer {HOLYSHEEP_API_KEY}",
        "Content-Type": "application/json"
    }
    payload = {
        "model": "text-embedding-3-small",
        "input": text
    }
    
    for versuch in range(max_retries):
        try:
            response = requests.post(
                url, 
                headers=headers, 
                json=payload, 
                timeout=timeout
            )
            
            if response.status_code == 401:
                raise PermissionError(f"API-Schlüssel ungültig. Bitte prüfen Sie Ihren HolySheep-Schlüssel.")
            
            if response.status_code == 429:
                # Rate-Limit erreicht, warten und erneut versuchen
                retry_after = int(response.headers.get("Retry-After", 60))
                print(f"⏳ Rate-Limit erreicht. Warte {retry_after}s...")
                time.sleep(retry_after)
                continue
            
            if response.status_code == 500:
                # Server-Fehler, kurze Wartezeit
                print(f"⚠️ Server-Fehler (Versuch {versuch + 1}/{max_retries}). Warte 5s...")
                time.sleep(5)
                continue
            
            response.raise_for_status()
            return response.json()["data"][0]["embedding"]
            
        except (Timeout, ConnectionError) as e:
            print(f"⚠️ Verbindungsfehler: {e}. Warte 10s...")
            time.sleep(10)
        except RequestException as e:
            raise RuntimeError(f"API-Anfrage fehlgeschlagen: {e}")
    
    raise RuntimeError(f"Max. retries ({max_retries}) erreicht nach wiederholten Fehlern.")

Test der Funktion

if __name__ == "__main__": try: ergebnis = embedding_mit_retry("Test text für semantische Suche") print(f"✅ Embedding erhalten: {len(ergebnis)} Dimensionen") except Exception as e: print(f"❌ Fehler: {e}") print("💡 Lösung: API-Schlüssel prüfen unter https://www.holysheep.ai/register")

Fehler 4: "Vektor-Dimensionen stimmen nicht überein"

Fehlermeldung: ERROR: dimension mismatch (1536 vs 1024)

-- Lösung: Korrekte Dimensionen verwenden oder Tabelle neu erstellen

-- Prüfen welche Embedding-Modelle welche Dimensionen haben:
-- text-embedding-3-small: 1536 Dimensionen
-- text-embedding-3-large: 3072 Dimensionen  
-- text-embedding-ada-002: 1536 Dimensionen

-- Option 1: Tabelle mit korrekten Dimensionen neu erstellen
psql -U postgres -d semantische_suche <<EOF
-- Alte Tabelle sichern
ALTER TABLE dokumente RENAME TO dokumente_backup;

-- Neue Tabelle mit korrekter Dimension
CREATE TABLE dokumente (
    id SERIAL PRIMARY KEY,
    titel VARCHAR(500),
    inhalt TEXT,
    embedding VECTOR(1536),  -- Korrekt für text-embedding-3-small
    model_name VARCHAR(50) DEFAULT 'text-embedding-3-small',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Daten mit korrekter Dimension migrieren
INSERT INTO dokumente (titel, inhalt, embedding, model_name)
SELECT titel, inhalt, embedding::vector(1536), COALESCE(model_name, 'text-embedding-3-small')
FROM dokumente_backup;

-- Index neu erstellen
CREATE INDEX ON dokumente USING hnsw (embedding vector_cosine_ops);

-- Backup löschen (nach Prüfung)
-- DROP TABLE dokumente_backup;
EOF

-- Option 2: Python-Skript für sichere Migration
print("🔄 Migriere Embedding-Dimensionen...")
print("✅ Stellen Sie sicher, dass alle Embeddings mit dem gleichen Modell erstellt wurden.")

Performance-Optimierung für Produktivumgebungen

-- ===== PostgreSQL Performance-Tuning für pgvector =====

-- 1. Speicherkonfiguration anpassen
ALTER SYSTEM SET shared_buffers = '4GB';
ALTER SYSTEM SET effective_cache_size = '12GB';
ALTER SYSTEM SET work_mem = '256MB';
ALTER SYSTEM SET maintenance_work_mem = '2GB';

-- 2. HNSW-Index für maximale Performance (besser als IVFFlat)
CREATE INDEX dokumente_embedding_hnsw ON dokumente 
USING hnsw (embedding vector_cosine_ops) 
WITH (m = 16, ef_construction = 64);

-- 3. Für IVFFlat (weniger Speicher, akzeptable Geschwindigkeit)
CREATE INDEX dokumente_embedding_ivfflat ON dokumente 
USING ivfflat (embedding vector_cosine_ops) 
WITH (lists = 100);

-- 4. Autovacuum optimieren (wichtig bei vielen Updates)
ALTER TABLE dokumente SET (
    autovacuum_vacuum_threshold = 50,
    autovacuum_analyze_threshold = 50,
    autovacuum_vacuum_scale_factor = 0.05,
    autovacuum_analyze_scale_factor = 0.05
);

-- 5. Partitionierung für sehr große Tabellen
CREATE TABLE dokumente_partitioniert (
    id SERIAL,
    titel VARCHAR(500),
    inhalt TEXT,
    embedding VECTOR(1536),
    created_at DATE
) PARTITION BY RANGE (created_at);

CREATE TABLE dokumente_2024_q1 PARTITION OF dokumente_partitioniert
    FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');
CREATE TABLE dokumente_2024_q2 PARTITION OF dokumente_partitioniert
    FOR VALUES FROM ('2024-04-01') TO ('2024-07-01');

-- 6. Query-Optimierung mit EXPLAIN ANALYZE
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
SELECT id, titel, 1 - (embedding <=> '[...]'::vector) AS aehnlichkeit
FROM dokumente
WHERE 1 - (embedding <=> '[...]'::vector) > 0.7
ORDER BY embedding <=> '[...]'::vector
LIMIT 10;

Zusammenfassung und Empfehlungen

Die Kombination aus PostgreSQL pgvector und HolySheep AI bietet eine kosteneffiziente Lösung für semantische Suchanwendungen:

Mit den vorgestellten Code-Beispielen können Sie sofort mit der Implementierung beginnen. Für Produktivumgebungen empfehle ich die Kombination aus HNSW-Indexierung und Batch-Processing für optimale Performance.

👉 Registrieren Sie sich bei HolySheep AI — Startguthaben inklusive