Din AI-assistent hade rätt i går. I dag har den självsäkert fel, eftersom någon uppdaterade ett dokument i Google Drive och din vektordatabas aldrig hann ikapp. Den luckan skapar “inaktuella svar”, och den är brutal att upptäcka förrän en kund eller kollega påpekar det.
Marketing ops-team märker det när budskapsdokument ändras mitt i en kampanj. Byråägare stöter på det med levande SOP:ar och kundplaybooks. Till och med en upptagen grundare ser det när interna dokument redigeras varje vecka. Den här Drive Supabase-synken gör dokumentändringar till AI-svar som alltid är uppdaterade.
Det här arbetsflödet bevakar filuppdateringar, tar bort föråldrade vektorer, ökar versionsnumret och läser sedan in det senaste innehållet i Supabase igen. Du ser exakt vad det gör, varför det spelar roll och hur du får igång det utan att överarbeta det.
Så fungerar den här automationen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Google Drive + Supabase: alltid aktuella AI-svar
flowchart LR
subgraph sg0["File Updated Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set File ID", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Delete Old Doc Rows"]
n2@{ icon: "mdi:cog", form: "rounded", label: "Download File", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Summarize", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Extract PDF Text1", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Extract from Excel1", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Convert to Google Doc2"]
n9@{ icon: "mdi:cog", form: "rounded", label: "Delete File1", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "Recursive Character Text Spl..", pos: "b", h: 48 }
n11@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI2", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "Enhanced Default Data Loader2", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n14@{ icon: "mdi:play-circle", form: "rounded", label: "File Updated", pos: "b", h: 48 }
n15@{ icon: "mdi:cube-outline", form: "rounded", label: "Insert into Supabase Vectors..", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n17@{ icon: "mdi:cog", form: "rounded", label: "Extract from Text File1", pos: "b", h: 48 }
n18@{ icon: "mdi:cog", form: "rounded", label: "Limit", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Set Version", pos: "b", h: 48 }
n3 --> n1
n18 --> n19
n16 --> n6
n16 --> n17
n16 --> n7
n16 --> n8
n4 --> n5
n5 --> n15
n0 --> n3
n19 --> n13
n14 --> n0
n2 --> n13
n13 --> n16
n13 --> n2
n6 --> n15
n11 -.-> n15
n1 --> n18
n7 --> n4
n8 --> n9
n17 --> n15
n12 -.-> n15
n10 -.-> n12
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n14 trigger
class n10,n12,n19 ai
class n15 ai
class n11 ai
class n3,n16 decision
class n8 api
classDef customIcon fill:none,stroke:none
class n1,n8 customIcon
Problemet: dina AI-svar glider ur datum
RAG-system ser bara “smarta” ut när den underliggande kunskapen är aktuell. Men Google Drive är en levande plats: folk rättar pristexter, ändrar onboardingsteg, byter ut PDF:er och döper om filer. Om dina embeddings i Supabase inte uppdateras efter redigeringar kommer din AI att citera gamla stycken, referera till borttagna policys eller svara med en halvt uppdaterad blandning av båda. Då slösar du tid på att validera svar, jaga “rätt” dokumentversion och indexera om manuellt. Ärligt talat är det den värsta typen av operativ skuld, eftersom den gömmer sig tills det verkligen gäller.
Friktionen byggs på. Här är var det faller isär i verkligheten.
- Du slutar med att läsa in hela mappar på nytt manuellt bara för att fixa en uppdaterad fil.
- Gamla vektor-chunks fortsätter vara sökbara, så AI:n kan “hämta” innehåll du raderade för flera dagar sedan.
- Team tappar förtroendet snabbt, vilket gör att AI-assistenten slutar användas.
- Utan versions-taggar kan du inte se om ett svar kom från v1 eller den senaste revisionen.
Lösningen: ta bort inaktuella vektorer och läs sedan in det uppdaterade dokumentet igen
Det här n8n-arbetsflödet körs i samma ögonblick som en fil uppdateras i din bevakade Google Drive-mapp (arbetsflödet kallar den “DOCUMENTS”). Först bekräftar det att händelsen är en riktig redigering, inte en stökig “uppdatering” som orsakas av en uppladdnings-/konverteringsprocess. Sedan hittar det varje befintlig vektor-chunk kopplad till filens ID i Supabase och raderar de raderna, så att inaktuellt innehåll inte längre kan hämtas. Efter den rensningen hämtar det den tidigare versionsetiketten från den raderade metadatan och använder ett OpenAI-steg för att öka den (v1 blir v2, och så vidare). Till sist bearbetar arbetsflödet den uppdaterade filen på nytt baserat på filtyp, extraherar text, chunkar den, skapar embeddings, lägger till ny metadata (inklusive den nya versionen) och upsertar allt tillbaka till din Supabase-vektorstore.
Arbetsflödet startar med en Google Drive-trigger för “file updated”. Det tar bort tidigare Supabase-rader för den filen, beräknar nästa versions-tagg och skickar sedan filen genom rätt extraheringsväg (PDF, Google Doc-konvertering, kalkylarksparsning, ren text). Supabase får då endast de aktuella chunkarna, korrekt versionshanterade, redo för hämtning.
Vad du får: automation vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att ditt team uppdaterar cirka 10 dokument i veckan i Google Drive (prisblad, onboardingsteg, ett par SOP:ar). Manuellt betyder en “uppdatering” oftast att exportera filen, ladda upp eller bearbeta den igen, radera gamla poster och köra embeddings på nytt, vilket lätt kan ta cirka 15 minuter per dokument. Det är ungefär 2,5 timmar i veckan. Med det här arbetsflödet lägger du kanske 2 minuter på att bekräfta mappen och inloggningsuppgifterna, och varje redigering synkas automatiskt i bakgrunden. Tidskostnaden blir “nästan ingenting”, och svaren ligger i linje med vad som faktiskt står i dokumenten.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Självhosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Google Drive för att övervaka mappen “DOCUMENTS”.
- Supabase för att lagra vektorer i en documents-tabell.
- OpenAI API-nyckel (hämta den från OpenAI API-dashboarden).
Kunskapsnivå: Medel. Du kopplar konton, väljer en mapp och verifierar Supabase-tabell/rättigheter.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En filuppdatering i Google Drive triggar körningen. Arbetsflödet lyssnar efter “File Updated”-händelser i samma mapp som din ingest-pipeline använder, så att allt förblir konsekvent.
Brus filtreras bort tidigt. En “If”-kontroll förhindrar dubbla körningar som kan uppstå när ett annat arbetsflöde laddar upp ett Word-dokument och Google sedan konverterar det till ett Google-dokument (den konverteringen kan se ut som en uppdatering).
Gamla Supabase-vektorer tas bort, sedan höjs versionen. Arbetsflödet raderar alla chunks för matchande file_id i Supabase documents-tabellen, hämtar den gamla versions-taggen och använder sedan ett OpenAI-steg för att öka den så att du kan spåra vilket innehåll som är aktuellt.
Den uppdaterade filen läses in igen baserat på typ. En Switch skickar PDF:er till PDF-tolkning, kalkylark till kalkylarksextraktion och dokumentformat genom konvertering vid behov. Texten chunkas, får embeddings, berikas med metadata och upsertas sedan tillbaka till Supabase-vektorstoren.
Du kan enkelt ändra vilken mapp som övervakas för att täcka flera kunskapsbaser, eller justera chunk-storlek för att passa din sök-/hämtstil. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera Drive Update Trigger
Starta arbetsflödet genom att bevaka en specifik Google Drive-mapp efter uppdaterade filer så att nya eller redigerade dokument går in i pipelinen.
- Lägg till och konfigurera Drive Update Trigger.
- Ställ in Event på
fileUpdated. - Ställ in Trigger On på
specificFolderoch välj er mapp i Folder To Watch (t.ex.DOCUMENTS). - Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter.
Steg 2: Koppla Google Drive och Supabase-rensning
Fånga identifierare, validera filtyp/ålder och ta bort tidigare dokumentvektorer för en ren ominläsning.
- I Assign File Identifiers ställer ni in file_id till
{{ $('Drive Update Trigger').item.json.id }}och file_type till{{ $('Drive Update Trigger').item.json.mimeType }}. - I Conditional File Check skapar ni två villkor: mimeType equals
application/vnd.google-apps.documentoch createdTime age{{ ((Date.now() - Date.parse($('Drive Update Trigger').item.json.createdTime)) / 1000) }}är mindre än60. - Konfigurera Remove Previous Doc Rows med Table ID
documents, Operationdeleteoch Filter String=metadata->>file_id=like.*{{ $('Assign File Identifiers').item.json.file_id }}*. - Inloggningsuppgifter krävs: Anslut era supabaseApi-inloggningsuppgifter i Remove Previous Doc Rows.
- I Cap Items lämnar ni standardinställningarna för att begränsa batchstorleken nedströms före versionshantering.
Steg 3: Sätt upp versionshantering och batchning
Skapa en versionsökning med OpenAI och förbered items för routning och hämtning. Batch Iterator skickar utdata till både Route by File Type och Retrieve Drive File parallellt.
- Konfigurera Increment Version Tag med Model
gpt-4o-minioch aktivera JSON Output. - Ställ in användarmeddelandets innehåll till
incoming version number: {{ $json.metadata.version }}så att modellen ökar versionen. - Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter i Increment Version Tag.
- I Batch Iterator lämnar ni standardinställningarna så att items delas upp för både routning och filnedladdning.
Steg 4: Routa efter filtyp och hantera konverteringar
Routa dokument baserat på MIME-typ, tolka filer och konvertera format som inte stöds till Google Docs vid behov.
- I Route by File Type säkerställer ni att reglerna matchar MIME-typer som
application/pdf,application/vnd.google-apps.documentsamt Excel-/Word-format. - Konfigurera Retrieve Drive File med Operation
downloadoch aktivera Google-filkonvertering tilltext/plain. - Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter i Retrieve Drive File.
- Ställ in Convert to Doc Format till POST
https://www.googleapis.com/drive/v3/files/{{ $('Assign File Identifiers').item.json.file_id }}/copymed body-parametrarna name{{ $('Assign File Identifiers').item.json.name }}och mimeTypeapplication/vnd.google-apps.document. - Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter i Convert to Doc Format och Remove Source File.
Steg 5: Extrahera, kombinera och förbered dokumentmetadata
Extrahera innehåll från PDF:er, text och kalkylark, och berika sedan med metadata före embedding.
- Konfigurera extraktionsnoder: Parse PDF Content med Operation
pdf, Read Text Content med Operationtextoch Read Spreadsheet Data med Operationxlsx. - Använd Combine Items (aggreggera all item-data) och Concatenate Fields för att slå ihop fältet data.
- Ställ in Segment Text Chunks till Chunk Size
2000och Chunk Overlap200. - I Load Document Metadata ställer ni in jsonData till
{{ $json.data || $json.text || $json.concatenated_data }}och inkluderar metadatafält somfile_id,version,creatorochfile_extensionfrån trigger-data.
Steg 6: Bygg embeddings och upsert till Supabase
Skapa embeddings och infoga vektorposter i Supabase för retrieval-augmented generation.
- Konfigurera OpenAI Embedding Builder och koppla den till Upsert Vector Records som källa för AI-embeddings.
- Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter i OpenAI Embedding Builder.
- Ställ in Upsert Vector Records till Mode
insertoch Table Namedocumentsmed Query Namematch_documents. - Inloggningsuppgifter krävs: Anslut era supabaseApi-inloggningsuppgifter i Upsert Vector Records.
Steg 7: Testa och aktivera ert arbetsflöde
Validera flödet från början till slut innan ni aktiverar körningar i produktion.
- Kör arbetsflödet manuellt genom att uppdatera en fil i den bevakade mappen och köra Drive Update Trigger via Test Workflow.
- Bekräfta att Remove Previous Doc Rows tar bort äldre vektorer och att Upsert Vector Records infogar nya rader i
documents. - Verifiera att Increment Version Tag returnerar en JSON-payload med det nya fältet version.
- När allt fungerar klickar ni på Activate för att aktivera automatisk bearbetning.
Vanliga fallgropar
- Google Drive-inloggningar kan löpa ut eller tappa åtkomst till en delad enhet. Om något skapar fel, kontrollera först behörigheterna för det anslutna kontot och n8n:s Google Drive-inloggning.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
- Supabase row-level security kan blockera raderingar och upserts i documents-tabellen. Om du ser “success” i n8n men inget ändras, granska dina Supabase-policys och vilken API-nyckelroll som används.
Vanliga frågor
Cirka 30–60 minuter om din Supabase-tabell är redo.
Nej. Du kopplar mestadels konton och klistrar in några ID:n, som Drive-mappen och Supabase-projektets detaljer.
Ja. n8n har ett gratis självhostat alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna med kostnader för OpenAI API (ofta några dollar i månaden för små team, mer om du skapar embeddings på nytt för stora filer ofta).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och klarar n8n bra. Självhosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, men du behöver göra det med eftertanke. Du kan duplicera Google Drive Trigger och peka varje trigger mot en annan mapp, och sedan återanvända samma logik för radera-och-lägg-in-igen. Vanliga anpassningar är att ändra Switch-routningen för fler MIME-typer, justera textens chunk-storlek i text splittern och skriva in mappnamnet i metadata så att du kan filtrera hämtning senare.
Oftast är det ett behörighetsproblem på den övervakade mappen, särskilt med delade enheter. Återanslut Google Drive-inloggningen i n8n och bekräfta sedan att kontot faktiskt kan komma åt mappen “DOCUMENTS” och läsa uppdaterade filer. Om arbetsflödet misslyckas direkt efter konvertering, kontrollera även logiken som förhindrar dubbla körningar, eftersom konverteringshändelser kan se ut som redigeringar.
Många, eftersom den bara bearbetar ändrade filer på nytt.
För det här användningsfallet är n8n oftast bättre. Du behöver ett riktigt mönster för radera-och-lägg-in-igen, routning per filtyp, chunking, embeddings och en upsert till en vektorstore, vilket är krångligt (och dyrt) att skruva ihop i Zapier eller Make. n8n ger dig också självhosting, så frekventa dokumentuppdateringar inte blir en per-task-faktura du ångrar senare. Om du bara synkar grundläggande metadatafält mellan verktyg kan Zapier vara snabbare att sätta upp. Men för att hålla RAG-svar korrekta är det här typen av arbetsflöde där n8n:s flexibilitet faktiskt spelar roll. Om du vill ha en second opinion, prata med en automationsexpert.
Dina dokument kommer fortsätta att ändras. Det är normalt. Det här arbetsflödet ser till att dina AI-svar ändras tillsammans med dem, utan att du behöver vakta en vektordatabas varje vecka.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.