Ditt RAG-system kan “kännas” bättre efter en justering, men om du inte kan mäta retrieval-kvaliteten gissar du i praktiken. Och gissningar blir snabbt dyra, särskilt när juridiska svar måste vara exakta.
Det här arbetsflödet för Qdrant Sheets-loggning riktar sig i första hand till AI-ingenjörer och produktägare, men juridiska ops-team som kör intern sökning märker också effekten. Du får ett enkelt, repeterbart sätt att följa hits@1 så att du ser när retrieval förbättras (eller i tysthet blir sämre).
Du lär dig vad automationen gör från start till mål, vad du behöver för att köra den och hur du använder resultatet för att finjustera hybrid retrieval med trygghet.
Så fungerar den här automationen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Qdrant + Google Sheets: spåra träffar på 1 sekund
flowchart LR
subgraph sg0["Dataset Index Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Dataset Index Trigger", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Dataset Partitions"]
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Expand Split List", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Test Partition", pos: "b", h: 48 }
n4["<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/>Retrieve Test Questions"]
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Rows Individually", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Answered Questions", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Select Question Fields", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Batch Iterate Items", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Hybrid Search Query", pos: "b", h: 48 }
n10["<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/merge.svg' width='40' height='40' /></div><br/>Combine Results"]
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Mark Retrieval Hit", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Aggregate Evaluation Data", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Compute Hit Rate", pos: "b", h: 48 }
n10 --> n11
n9 --> n10
n5 --> n6
n12 --> n13
n3 --> n4
n8 --> n12
n8 --> n10
n8 --> n9
n4 --> n5
n1 --> n2
n2 --> n3
n7 --> n8
n0 --> n1
n11 --> n8
n6 --> n7
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 n0 trigger
class n3,n6 decision
class n1,n4 api
classDef customIcon fill:none,stroke:none
class n1,n4,n10 customIcon
Varför detta är viktigt: mät retrieval-kvalitet utan gissningar
Hybridsök är kraftfullt, men det är också lätt att “trimma” åt fel håll. Du byter embeddingmodell, justerar BM25-inställningar, lägger till Reciprocal Rank Fusion (RRF) och svaren ser okej ut i ett par stickprov. Sedan, en vecka senare, säger någon att assistenten plötsligt missar uppenbara passager. Rotorsaken är oftast banal: ingen baslinje, ingen konsekvent utvärderingsmängd och ingen plats där resultaten loggas så att du kan jämföra över tid. Manuell testning blir till slumpmässiga skärmdumpar och halvt ihågkomna anekdoter.
Det ackumuleras snabbt. Här är var det faller isär i riktiga team.
- Du kör “snabba tester” i Qdrant, men resultaten sparas ingenstans där du kan jämföra senare.
- Utvärderingsfrågor finns i en dataset, men ingen har tid att köra dem en och en efter varje justering av retrieval.
- Små ändringar i fusion eller embeddings kan flytta toppresultatet, vilket gör att hits@1 kan sjunka utan att någon märker det.
- Utan ett enkelt mått argumenterar team utifrån åsikter i stället för data, och iterationstakten sjunker.
Det du bygger: en logg för utvärdering av hybridsök i Google Sheets
Det här arbetsflödet kör en repeterbar utvärdering av hybridsök mot en Qdrant-kollektion och skriver resultatet till en dataset-liknande logg som du faktiskt kan använda. Det börjar med att hämta dataset-partitioner och filtrera till test-partitionen, och hämtar sedan testfrågor (med förväntade svar) från LegalQAEval-datasetet. Varje fråga behandlas individuellt i batchar, omvandlas till en embedding (med Qdrant Cloud Inference som standard, eller en extern embedding-leverantör om du föredrar), och skickas till Qdrant för en hybridfråga som kombinerar nyckelords-retrieval (BM25) och semantisk retrieval (mxbai-embed-large-v1). Därefter slår arbetsflödet ihop det returnerade sammanhanget med det förväntade svaret, markerar om topp-1-resultatet är en träff och aggregerar allt till ett slutligt hits@1-värde som du kan följa över tid.
Arbetsflödet startar med en manuell trigger, så att du kan köra det när du ändrar retrieval-inställningar. Det bearbetar en definierad delmängd av frågor, beräknar hits@1 från resultaten och förbereder utdata så att du kan registrera det i Google Sheets för enkel jämförelse mellan körningar.
Det du bygger
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du utvärderar cirka 100 testfrågor efter varje justering av retrieval. Manuellt, även 2 minuter per fråga för att söka, skanna toppresultatet och notera “träff eller miss” blir ungefär 3 timmar, och du har fortfarande inte korrekt formaterad data att jämföra nästa vecka. Med det här arbetsflödet triggar du en körning, låter Qdrant köra hybridsök i batchar och får hits@1-poängen plus utfall per fråga redo att loggas. De flesta team går från “vi tror att det är bättre” till “vi kan bevisa det” på en enda förmiddag.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Qdrant för hybrid retrieval mot din kollektion
- Google Sheets för att spara körningar och jämföra resultat
- Qdrant API-nyckel (hämta den i din Qdrant Cloud-dashboard)
Kunskapsnivå: Medel. Du kopplar in inloggningar/credentials och kan behöva justera några fält (som kollektionsnamn och dataset-endpoints).
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Du triggar en utvärderingskörning. Arbetsflödet startar med en manuell trigger, vilket är perfekt för lägen där du vill “kör detta efter att jag ändrat något”, till exempel bytt embeddingmodell eller justerat vikter i hybridfrågan.
Datasetet hämtas och filtreras. n8n hämtar LegalQAEval-partitionerna via HTTP, expanderar listan, filtrerar ner till test-partitionen och hämtar utvärderingsfrågorna. Endast besvarade frågor går vidare, så att du poängsätter mot sådant som faktiskt kan valideras.
Varje fråga behandlas i batchar och söks i Qdrant. Arbetsflödet väljer de fält som behövs, itererar genom frågor i batchar, genererar embeddings (Qdrant Cloud Inference som standard) och kör en hybrid-sökfråga som använder både nyckelords- och semantisk retrieval med ett fusionsteg.
Resultat poängsätts och aggregeras. För varje fråga slår arbetsflödet ihop den högst rankade hämtade chunk:en med det förväntade svaret och markerar en “träff” när topp-1 innehåller rätt svar. Därefter aggregerar det alla poster och beräknar hits@1, som du kan logga till Google Sheets och följa mellan körningar.
Du kan enkelt ändra uppsättningen utvärderingsfrågor för att testa olika domäner utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Ställ in arbetsflödet så att det startar manuellt och ange datasetidentifieraren som efterföljande HTTP-anrop förväntar sig.
- Lägg till en Dataset Index Trigger-nod som din trigger.
- Vid testning: inkludera en JSON-indata med fältet dataset så att Fetch Dataset Partitions kan tolka
{{$json.dataset}}.
dataset-värde (t.ex. legalQA eller ett annat Hugging Face-dataset-ID).Steg 2: koppla anropen för hämtning av dataset
Konfigurera HTTP request-noderna för att hämta dataset-splits och plocka ut testrader.
- I Fetch Dataset Partitions, ställ in URL till
https://datasets-server.huggingface.co/splitsoch aktivera Send Query. - I Fetch Dataset Partitions, sätt query-parametern dataset till
{{ $json.dataset }}. - I Expand Split List, ställ in Field to Split Out till
splits. - I Filter Test Partition, lägg till ett villkor där Left Value är
{{ $json.split }}, Operation är equals och Right Value ärtest. - I Retrieve Test Questions, ställ in URL till
=https://datasets-server.huggingface.co/rowsoch aktivera Send Query. - I Retrieve Test Questions, sätt query-parametrarna: dataset till
{{ $json.dataset }}, config till{{ $json.config }}, split till{{ $json.split }}och length till100.
test (skiftlägeskänsligt).Steg 3: ställ in frågebearbetning och batchning
Dela upp rader till enskilda frågor, filtrera besvarade items och forma fält för utvärdering av retrieval.
- I Split Rows Individually, ställ in Field to Split Out till
rows. - I Filter Answered Questions, lägg till ett villkor där Left Value är
{{ $json.row.answers.length }}, Operation är gt och Right Value är0. - I Select Question Fields, lägg till tilldelningar för id_qa satt till
{{ $json.row.id }}och question satt till{{ $json.row.question }}. - Koppla Select Question Fields till Batch Iterate Items för att bearbeta items i kontrollerbara batchar.
- Batch Iterate Items skickar utdata till både Combine Results och Hybrid Search Query parallellt.
100 till ett lägre tal.Steg 4: ställ in utvärdering av retrieval och aggregering
Konfigurera Qdrant hybrid search, kombinera resultat, markera träffar och beräkna träffgrad.
- I Hybrid Search Query, ställ in Resource till
searchoch Operation tillqueryPoints. - I Hybrid Search Query, ställ in Limit till
1, Query till{ "fusion": "rrf" }och Prefetch till=[ { "query": { "text": "{{ $json.question }}", "model": "mixedbread-ai/mxbai-embed-large-v1" }, "using": "mxbai_large", "limit": 25 }, { "query": { "text": "{{ $json.question }}", "model": "qdrant/bm25" }, "using": "bm25", "limit": 25 } ]. - I Hybrid Search Query, välj samlingen legalQA_test i Collection Name.
- Inloggningsuppgifter krävs: Anslut era qdrantApi-credentials i Hybrid Search Query.
- I Combine Results, ställ in Mode till
combineoch Combine By tillcombineAll. - I Mark Retrieval Hit, behåll Include som
selected, Include Fields somid_qa,questionoch lägg till isHit med värdet{{ $json.result.points[0].payload.ids_qa.includes($json.id_qa) }}. - I Aggregate Evaluation Data, ställ in Aggregate till
aggregateAllItemDataoch Destination Field Name tilleval. - I Compute Hit Rate, ställ in värdet för Hits percentage till
{{ ($json.eval.filter(item => item.isHit).length * 100) / $json.eval.length}}.
$json.result.points[0] finns och att er Qdrant-payload innehåller ids_qa.Steg 5: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera retrieval-utvärderingen och aktivera sedan arbetsflödet.
- Klicka Execute Workflow och ange ett exempel-item med dataset satt (t.ex.
legalQA). - Bekräfta att Compute Hit Rate ger ett numeriskt värde för Hits percentage.
- Verifiera att Aggregate Evaluation Data innehåller en
eval-array med isHit-värden. - När allt är validerat, slå på arbetsflödet Active för att möjliggöra körningar i produktion.
Tips för felsökning
- Qdrant-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först dina Qdrant Cloud API-nycklar och projektets åtkomstinställningar.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in ert tonalitet/brand voice tidigt, annars kommer du att redigera utdata för alltid.
Snabba svar
Cirka 30 minuter om din Qdrant-kollektion redan finns.
Ingen kodning krävs. Du kopplar främst Qdrant- och Google-credentials och uppdaterar sedan ett par fält, som kollektionsnamn.
Ja. n8n har ett gratis alternativ för egen drift 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 Qdrant-användning och eventuella kostnader för valfri embedding-leverantör.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det borde du förmodligen. Du kan byta datasetets HTTP Request-noder så att de pekar på din egen utvärderingsmängd, justera Set-noden “Select Question Fields” så att den matchar ditt schema och återanvända noden “Hybrid Search Query” mot en annan Qdrant-kollektion. Vanliga justeringar är att ändra batchstorlek, logga extra fält (som toppscore) och testa alternativa embedding-leverantörer som OpenAI. Om du finjusterar för juridik kan du också lägga till metadatafilter för att avgränsa retrieval till jurisdiktion, domstol eller dokumenttyp.
Oftast handlar det om en utgången eller felaktig API-nyckel i Qdrant-credentials i n8n. Dubbelkolla kluster-URL:en, bekräfta att nyckeln fortfarande har åtkomst till projektet och säkerställ att målkollektionens namn matchar exakt. Om du kör många frågor samtidigt kan du också slå i rate limits, så att minska batchstorleken kan hjälpa. Verifiera till sist att Qdrant Cloud Inference (eller externa embeddings) är aktiverat om arbetsflödet förväntar sig att embeddings ska genereras under körningen.
Några hundra frågor per körning är realistiskt i de flesta upplägg, och du kan skala genom att justera batchstorlek och din n8n-plan. Om du kör egen drift finns ingen körningsgräns, men din server och Qdrant-genomströmning blir flaskhalsen.
Ofta, ja. Det här arbetsflödet är inte bara “flytta data från A till B”; det loopar genom poster, batchar anrop, slår ihop sökutdata och beräknar ett mått, vilket är den typ av flersteglogik som blir klumpig (och dyr) i Zapier. n8n ger dig också en väg för egen drift, vilket spelar roll när du kör upprepade utvärderingar. Zapier eller Make kan fungera för enkel loggning, men de är inte byggda för tyngre utvärderingspipelines. Om du tvekar, prata med en automationsexpert och beskriv vad du försöker mäta.
När hits@1 blir synligt slutar trimningen vara en debatt och blir en enkel loop: ändra, kör, jämför, upprepa. Arbetsflödet tar hand om den repetitiva kontrollen så att du kan fokusera på att faktiskt göra retrieval bättre.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.