Vad är RAG och varför spelar det roll
Standard GPT-4o känner inte till ditt företags interna dokument, din produktkatalog eller dina kunddata. RAG löser detta: du lagrar ditt innehåll som vektorinbäddningar i en databas, och vid frågetillfället hittar du de mest relevanta delarna och skickar dem som kontext till LLM:en.
Resultatet: en AI-assistent som svarar på frågor om din specifika data, korrekt och med källhänvisningar.
För svenska företag är RAG-applikationer särskilt värdefulla för: interna kunskapsbaser (personalhandböcker, processpolicyer), kundsupport-chatbots baserade på produktdokumentation, och juridiska eller regelverksmässiga fråge-och-svars-system. Och eftersom all data stannar i din Supabase-instans uppfyller du enkelt GDPR:s krav på datalagring inom EU.
Steg 1: Aktivera pgvector i Supabase
Supabase levereras med pgvector inbyggt. I Supabase SQL-redigeraren kör du: CREATE EXTENSION IF NOT EXISTS vector;
Skapa sedan din dokumenttabell: CREATE TABLE documents ( id bigint primary key generated always as identity, content text, embedding vector(1536), metadata jsonb, created_at timestamptz default now() );
Skapa ett index för snabb likhetssökning: CREATE INDEX ON documents USING ivfflat (embedding vector_cosine_ops);
Detta är den enda SQL du behöver skriva. Välj EU-region när du skapar ditt Supabase-projekt (t.ex. eu-west-1 i Frankfurt) för att säkerställa att vektordata stannar inom EU.
Steg 2: Generera inbäddningar med Xano
I Xano skapar du en endpoint som accepterar en textsträng, anropar OpenAI Embeddings API (text-embedding-3-small) och lagrar resultatet i din Supabase documents-tabell.
Funktionsstacken: (1) Hämta textinput, (2) Anropa OpenAI API POST /v1/embeddings, (3) Extrahera inbäddningsarrayen från svaret, (4) Infoga i Supabase via Supabase API-kopplingen.
Kör detta för varje dokument, artikel eller FAQ-post du vill att din AI ska känna till. För svenska bolag kan detta vara: produktblad, prissättningsdokument, kundserviceskript eller juridiska avtal. Processen är identisk oavsett dokumenttyp.
Steg 3: Semantisk sökning i Xano
Skapa en andra endpoint som: (1) Accepterar en användarfrågesträng, (2) Genererar en inbäddning för frågan (samma OpenAI-anrop), (3) Kör en vektorlikhetssökning i Supabase.
Supabase RPC-funktionen för detta: SELECT content, 1 - (embedding <=> query_embedding) as similarity FROM documents ORDER BY embedding <=> query_embedding LIMIT 5;
Detta returnerar de 5 mest semantiskt relevanta delarna av användarens fråga. Systemet förstår innebörd, inte bara nyckelordsmatchning — en fråga om "semesterpolicy" hittar rätt avsnitt även om det exakta ordet inte finns i dokumentet.
Steg 4: Generera svaret med GPT-4o
Med de hämtade delarna anropar du OpenAI Chat Completions API. Systemprompten:
"Du är en hjälpsam assistent. Svara på användarens fråga med ENBART det kontext som tillhandahålls nedan. Om svaret inte finns i kontexten, säg det.
Kontext: [INFOGA HÄMTADE DELAR HÄR]"
Detta förankrar LLM:ens svar i din faktiska data och förhindrar hallucinationer. För svenska företag kan du justera systemprompten för att svara på svenska som standard, använda formellt eller informellt tilltal beroende på sammanhang, och referera till svenska regelverk eller branschterminologi.
Steg 5: Bygg chatt-UI:et i WeWeb
I WeWeb skapar du ett chattgränssnitt med en meddelandelista och ett inmatningsfält. Vid skickning: anropa din Xano sökendpoint, strömma sedan GPT-svaret med Xanos strömningsstöd eller ett direkt OpenAI-anrop från WeWebs anpassade kod.
För produktion, lägg till: meddelandehistorik (lagra i Supabase), källcitat (visa vilka dokument som hämtades) och en feedbackmekanism (tumme upp/ner för att förbättra hämtningskvaliteten).
Hela systemet kan vara live och betjäna verkliga användare inom 2–3 veckor. En intern kunskapsbas-chatbot är ett utmärkt första RAG-projekt: väldefinierat scope, mätbart värde (minskad tid på att söka i dokumentation) och låg risk.