Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 21, 2026

Cohere + Qdrant: svar från skannade pdf:er

Rickard Andersson Partner, Nodenordic.se

Skannade PDF:er är där svar går för att dö. Du kan rutinen: någon ställer en “snabb fråga”, och plötsligt sitter du och zoomar in i diagram, gissar sidnummer och hoppas att OCR:n inte slaktade etiketterna.

Den här Cohere Qdrant RAG-lösningen träffar marknadschefer och drift-/opschefer hårt, ärligt talat. Konsulter som jobbar med långa kundrapporter känner det också. Resultatet är enkelt: du ställer en fråga i chatten och får ett användbart svar plus exakt källsida som styrker det.

Nedan ser du hur automatiseringen gör om skannade rapportsidor till sökbara embeddings och sedan skickar frågor till en vision-modell bara när det faktiskt behövs.

Så här fungerar automatiseringen

Här är hela arbetsflödet du kommer att sätta upp:

n8n Workflow Template: Cohere + Qdrant: svar från skannade pdf:er

Varför det här spelar roll: hitta svar i skannade rapporter

När en rapport är skannad är de mest värdefulla delarna ofta de minst sökbara. Diagram, tabeller, skärmbilder, små axelrubriker. Även om du kör OCR får du ändå leta, eftersom frågan inte är “vad står det i stycket”, utan “vad innebär den här grafen” eller “vilka leverantörer listades i den där tabellen”. Kostnaden märks som tappat momentum. Någon pingar dig, du byter kontext och bränner sedan 30 minuter för att svara med något du inte är helt säker på.

Det skenar snabbt. Här är hur det fallerar i riktiga team.

  • Folk slutar ställa bra frågor eftersom de vet att det tar evigheter att bekräfta källan.
  • Du börjar parafrasera ur minnet, och måste sedan backa när någon frågar “vilken sida är det på?”
  • Diagram och tabeller ignoreras, eftersom bildsökning i praktiken är omöjlig i de flesta upplägg.
  • Samma rapport blir omläst av tre olika personer samma vecka, vilket är ett smärtsamt slöseri med fokus.

Vad du bygger: Vision RAG-svar med källhänvisningar från skannade sidor

Det här arbetsflödet skapar en assistent i två delar: en vanlig chattagent för vardagsfrågor, plus en vision-Q&A-väg som aktiveras när en fråga behöver rapporten. Först läser den in skannade sidbilder från en rapport (via en lista med URL:er till sidbilder), laddar ner dem, konverterar dem till base64 och skickar dem till Cohere’s embedding-modell. Dessa embedding-vektorer lagras i Qdrant tillsammans med den ursprungliga sid-URL:en, så varje träff alltid är kopplad till en riktig källsida. Sedan, när en användare ställer en fråga i chatten, avgör agenten om den ska “använda rapportverktyget”. Om ja, kör den en vektorsökning i Qdrant för att hitta de mest relevanta skannade sidorna, skickar de bilderna plus frågan till Cohere’s vision-modell och svarar med ett svar som kan hänvisa tillbaka till exakt sida.

Arbetsflödet börjar med inläsning (så att rapporten blir sökbar) och går sedan över till en chattexperiens som känns normal. När rapporten behövs hämtar det matchande sidor från Qdrant och först då anropas vision-modellen för att läsa bilderna. Till sist skickas svaret tillbaka i samma konversation, med relevanta sidreferenser bifogade.

Det du bygger

Förväntade resultat

Säg att ditt team får 10 frågor i veckan om en 60-sidig skannad branschrapport, och att varje fråga vanligtvis innebär cirka 30 minuter sidjakt och zoomning i skärmbilder. Det är ungefär 5 timmar per vecka i ren söktid. Med det här arbetsflödet sker “hitta rätt sidor”-delen via Qdrant på sekunder, och sedan läser vision-modellen bara en handfull sidor. I praktiken landar de flesta svar på ungefär 5 minuter plus den tid du väljer att lägga på att putsa svaret.

Innan du börjar

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Cohere för embeddings och vision-modellen
  • Qdrant för att lagra och söka vektorer
  • Cohere API-nyckel (hämta den i din Cohere-dashboard)

Kunskapsnivå: Medel. Du kopplar konton, lägger in API-nycklar och byter till dina egna dokumentkällor utan att skriva “riktig kod”.

Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).

Steg för steg

Dokumentinläsningen startar från en kurerad sidlista. Du triggar arbetsflödet manuellt (eller anpassar det till Google Drive), och det laddar en lista med URL:er till rapportsidbilder som du vill indexera.

Varje sida laddas ner och förbereds för sökning. n8n hämtar sidbilder via HTTP, konverterar den binära filen till base64 och anropar sedan Cohere’s embedding-endpoint för att skapa en vektor som representerar innehållet på den skannade sidan.

Vektorer lagras i Qdrant med sidreferenser. Arbetsflödet batchar punkter (vektor + metadata som den ursprungliga sid-URL:en) och upsertar dem till en Qdrant-collection så att hämtning förblir snabb, även när du lägger till fler dokument.

Chatten avgör när rapporten ska användas. En chattrigger tar emot frågor, en AI-agent utvärderar meddelandet och en enkel kontroll routar det till standardchatt eller ett rapportfrågeverktyg som kör vektorsökning och anropar vision-modellen för faktabaserade svar.

Du kan enkelt ändra dokumentkällan (till exempel byta ut en statisk URL-lista mot Google Drive-filer) så att den matchar hur ditt team lagrar rapporter. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera den manuella triggern

Det här arbetsflödet använder en manuell körning för att förladda bildvektorer innan chattinteraktioner.

  1. Lägg till och placera Manual Launch Trigger i början av indexeringsflödet.
  2. Bekräfta att Manual Launch Trigger inte har några parametrar att konfigurera.
  3. Kör valfritt Utility: Initialize Qdrant Collection en gång för att skapa samlingen collectionName inställd på visionRagExample.
  4. Inloggningsuppgifter krävs: Anslut era qdrantRestApi-inloggningsuppgifter i Utility: Initialize Qdrant Collection.

Kör Utility: Initialize Qdrant Collection en gång innan er första indexeringskörning och inaktivera den sedan eller lämna den oansluten för att undvika att samlingen återskapas.

Steg 2: Anslut bildkällistan

Läs in och dela upp listan med bild-URL:er för rapportsidor för bearbetning.

  1. I Load Report Image List, behåll Mode inställt på raw och jsonOutput inställt på det angivna uttrycket för URL-arrayen.
  2. Ställ in Separate URL Items med fieldToSplitOut som url.
  3. Ställ in Batch Five Items med batchSize till 5.
  4. Lämna Page Reference Hold som en pass-through-nod för att bevara sidans URL för senare mappning.

⚠️ Vanlig fallgrop: Om ni ändrar fältnamnet i Load Report Image List måste ni uppdatera Separate URL Items så att den matchar den nya nyckeln.

Steg 3: Skapa bild-embeddings och upserta till Qdrant

Det här steget hämtar varje bild, kodar den, skapar embeddings och upsertar sedan vektorer till Qdrant i batchar.

  1. I Fetch Page Image, ställ in URL till ={{ $json.url }}.
  2. Ställ in Encode Image Base64 med operation som binaryToPropery.
  3. I Cohere Image Embedding, ställ in URL till https://api.cohere.com/v2/embed och behåll JSON-body som refererar till {{ $json.data }}.
  4. Inloggningsuppgifter krävs: Anslut era cohereApi-inloggningsuppgifter i Cohere Image Embedding.
  5. I Assemble Vector Points, mappa fält med ={{ $json.id }}, ={{ $('Page Reference Hold').item.json.url }} och ={{ $json.embeddings.float[0] }}.
  6. Ställ in Collect Point Batch till aggregate = aggregateAllItemData och destinationFieldName = points.
  7. I Upsert Vector Points, behåll operation som upsertPoints och points-uttrycket för vektors serialisering.
  8. Inloggningsuppgifter krävs: Anslut era qdrantRestApi-inloggningsuppgifter i Upsert Vector Points.

Indexeringsflödet loopar eftersom Upsert Vector Points skickar output tillbaka till Batch Five Items tills alla URL:er är bearbetade.

Steg 4: Konfigurera chatt-triggern och agenten

Sätt upp chattens ingångspunkt och agenten som avgör när rapportfrågeverktyget ska användas.

  1. I Chat Intake Trigger, ställ in public till true så att den kan ta emot chattmeddelanden.
  2. I Conversational Agent, behåll systemMessage som You are a helpful assistant. och ha returnIntermediateSteps aktiverat.
  3. Anslut Command-R Chat Model som språkmodell för Conversational Agent och ställ in model till command-r.
  4. Inloggningsuppgifter krävs: Anslut era cohereApi-inloggningsuppgifter i Command-R Chat Model.
  5. Anslut Report Query Tool som verktyg för Conversational Agent och behåll inputSchema och description intakta.

Verktygs- och minnesnoderna är AI-subnoder; konfigurera inloggningsuppgifter på de överordnade modellnoderna (som Command-R Chat Model), inte på subnoderna.

Steg 5: Rutta verktygsanrop och sök i vektordatabasen

När agenten begär en dokumentsökning extraherar arbetsflödet frågan, meddelar användaren och hämtar relevanta bilder.

  1. I Tool Call Check, behåll villkoret som kontrollerar ={{ $json.intermediateSteps.find(step => step.action.tool === "Report_Query_Tool") }}.
  2. I Extract Tool Query, mappa tool och query med ={{ $json.intermediateSteps[0].action.tool }} och ={{ $json.intermediateSteps[0].action.toolInput.query }}.
  3. I Send Wait Notice, ställ in message till Please wait while I search the document... och behåll waitUserReply som false.
  4. I Retrieve Relevant Images, ställ in mode till load och prompt till ={{ $json.query }}.
  5. Inloggningsuppgifter krävs: Anslut era qdrantApi-inloggningsuppgifter i Retrieve Relevant Images.
  6. Anslut Embedding Generator som embedding-modell för Retrieve Relevant Images och behåll modelName inställt på =embed-v4.0.
  7. Inloggningsuppgifter krävs: Anslut era cohereApi-inloggningsuppgifter i Embedding Generator.
  8. Använd Collect Search Results för att aggregera resultat med aggregate inställt på aggregateAllItemData.

Steg 6: Generera vision-svar och svara

Skicka bildreferenserna till vision-modellen och svara tillbaka i chatten med källhänvisningar.

  1. I Vision Model Request, ställ in URL till https://api.cohere.com/v2/chat och behåll JSON-body som inkluderar command-a-vision-07-2025 och bild-URL:er.
  2. Inloggningsuppgifter krävs: Anslut era cohereApi-inloggningsuppgifter i Vision Model Request.
  3. I Send Vision Reply, ställ in message till det angivna uttrycket som använder {{ $json.message.content[0].text }} och bygger källtabellen från Collect Search Results.
  4. Anslut Conversation Memory till Send Vision Reply via AI-minneskopplingen och behåll sessionKey som ={{ $('Chat Intake Trigger').item.json.sessionId }}.
  5. I grenen utan verktyg, konfigurera Send Standard Reply att använda ={{ $json.output }} och koppla Alt Conversation Memory med samma sessionKey-uttryck.

⚠️ Vanlig fallgrop: Om vision-svaret är tomt, verifiera att Collect Search Results returnerar items och att Vision Model Request inkluderar giltiga image_url-poster.

Steg 7: Testa och aktivera ert arbetsflöde

Kör indexeringen först och validera sedan chattupplevelsen end-to-end.

  1. Klicka på Execute WorkflowManual Launch Trigger för att indexera alla rapportbilder i Qdrant.
  2. Verifiera att körningen lyckas genom att kontrollera att Upsert Vector Points slutförs utan fel och att batcharna loopar igenom alla URL:er.
  3. Öppna test-URL:en för Chat Intake Trigger och ställ en fråga om rapporten för att trigga Conversational Agent.
  4. Bekräfta att verktygsanrop följer vägen Tool Call CheckExtract Tool QuerySend Wait NoticeRetrieve Relevant ImagesVision Model RequestSend Vision Reply.
  5. När ni är nöjda, växla arbetsflödet till Active för produktionsanvändning.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Felsökningstips

  • Cohere API-inloggningsuppgifter kan gå ut eller slå i användningsgränser. Om svar plötsligt misslyckas, kontrollera först i din Cohere-dashboard: fakturering, rate limits och nyckelstatus.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
  • Qdrant-sökningar kan se “trasiga” ut när collections-namnet eller vektorstorleken inte matchar det du upsertade. Bekräfta inställningarna för collection i Qdrant och säkerställ att du skriver till och frågar mot samma.

Snabba svar

Hur lång tid tar det att sätta upp den här Cohere Qdrant RAG-automationen?

Räkna med cirka en timme om dina Cohere- och Qdrant-konton är klara.

Krävs kodning för det här Q&A-upplägget för skannade PDF:er?

Nej. Du klistrar mest in API-nycklar och justerar några fält för din dokumentkälla.

Är n8n gratis att använda för det här Cohere Qdrant RAG-arbetsflödet?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in användningskostnader för Cohere och Qdrant, som beror på hur många sidor du embedder och hur ofta du frågar.

Var kan jag hosta n8n för att köra den här automationen?

Två alternativ: n8n Cloud (hanterat, enklast uppsättning) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag modifiera det här Cohere Qdrant RAG-arbetsflödet för andra use cases?

Ja, och det bör du. De flesta byter steget “Load Report Image List” för att hämta sidor från Google Drive eller en annan lagringskälla och behåller sedan resten av inläsningen likadan. Du kan också justera hur många resultat du hämtar i Qdrant-sökningen, vilket styr hur många sidor vision-modellen ser. Vanliga justeringar är att indexera flera rapporter, lagra extra metadata som rapporttitel/datum och ändra agentens regler för “tool call” så att den bara använder Vision RAG för vissa ämnen.

Varför misslyckas min Cohere-anslutning i det här arbetsflödet?

Oftast är det en ogiltig eller utgången API-nyckel, eller att ditt konto saknar kredit. Skapa en ny nyckel i Cohere, uppdatera den i HTTP Request-noderna som anropar Cohere och försök igen. Om det bara fallerar vid större körningar kan du slå i rate limits; att batcha färre sidor åt gången löser det ofta.

Vilken volym kan det här Cohere Qdrant RAG-arbetsflödet hantera?

Det kan hantera en hel rapport åt gången och sedan så många chattfrågor som din n8n-plan och API-gränser tillåter.

Är den här Cohere Qdrant RAG-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det här arbetsflödet behöver batchning, vektor-upserts, ett retrieval-steg och villkorsstyrd förgrening till en vision-modell, och n8n hanterar det utan att tvinga dig in i dyr “task”-räkning för varje litet steg. Du får också möjligheten att self-hosta, vilket är viktigt om du planerar att läsa in många sidor eller köra intern chatt med hög volym. Zapier eller Make kan fortfarande fungera för enklare pipelines, men när du lägger till vektorsökning och agent-routing blir de snabbt klumpiga. Om du vill ha en second opinion på verktygsvalet, prata med en automationsexpert.

När det här är live slutar skannade PDF:er vara en återvändsgränd och börjar fungera som en sökbar kunskapsbas. Arbetsflödet tar hand om den repetitiva delen med hämtning och källhänvisningar så att du kan fokusera på beslut, inte dokumentletande.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal