Lokal-First Dokument RAG System med Hybrid Søgning & Multi-Format Support
Et team, der bygger udviklerværktøjer, havde brug for et fuldt lokalt, privatlivsbevarende dokumentintelligenssystem, der kunne indlæse flere filformater, opbygge søgbare vidensbaser og besvare naturlige sprogforespørgsler ved hjælp af Retrieval-Augmented Generation — uden at sende nogen data til eksterne API'er.
Diskuter Dit Projekt
Udfordringen
Eksisterende RAG-løsninger havde betydelige begrænsninger for privatlivsbevidste og udviklerfokuserede brugssager:
- Afhængighed af eksterne API'er — De fleste RAG-værktøjer krævede at sende dokumentindhold til cloud-baserede embedding-API'er, hvilket krænker privatlivskrav
- Begrænset Formatunderstøttelse — Løsninger håndterede typisk kun almindelig tekst eller PDF, og ignorerede regneark, Word-dokumenter, HTML og Markdown
- Dårlig Chunking — Naiv tekstopdeling ignorerede dokumentstruktur (sider, ark, overskrifter), hvilket skabte kontekstfattige chunks
- Keyword Huller — Ren embedding-baseret søgning missede præcise keyword-matches, som leksikal søgning ville fange
- Regneark Blindhed — RAG-systemer kunne ikke håndtere strukturerede tabeldata eller besvare filtrerings-/aggregeringsforespørgsler
- Ingen Reranking — Første-pass retrieval bragte ofte kun delvist relevante resultater frem uden et andet-pass kvalitetsfilter
Vores Løsning
Vi byggede et komplet lokal-first RAG-system med multi-format dokumentindlæsning, strukturbevidst chunking, lokal embedding-generering, en hybrid søgepipeline (semantisk + fuldtekst + aktualitet), cross-encoder reranking og en web-baseret UI — alt kørende fuldstændigt på brugerens maskine.
Arkitektur
- Dokumentindlæsere: Format-specifikke parsere for PDF, DOCX, XLSX, CSV, HTML, Markdown og almindelig tekst
- Chunker: Strukturbevidst opdeling, der bevarer side-, ark- og overskriftsgrænser
- Embeddings: Lokal embedding-model via Transformers.js (ingen eksterne API-kald)
- Vector Database: LanceDB (serverless, filbaseret) til embedding-lagring og lighedssøgning
- Fuldtekst Søgning: Trigram-baseret indeksering til leksikal matchning
- Reranker: Cross-encoder model til kontekstbevidst resultatvurdering
- Query Analyzer: Intentiondetektion, der ruter mellem semantiske og strukturerede forespørgsler
- Webserver: Express.js API med projektstyring og søgeendepunkter
- Frontend: Web-baseret UI til dokumentupload, styring og interaktiv søgning
Dokumentbehandlingspipeline
Multi-Format Indlæsere
Et registreringsmønster auto-detekterer filtype og ruter til den passende parser:
- PDF — Tekstudtrækning med side-niveau segmentering
- Word (.docx/.doc) — Overskriftsbevidst parsing, der bevarer dokumenthierarki
- Excel/CSV — Ark-for-ark parsing med header-detektion og række-niveau indhold
- HTML — Tag-bevidst udtrækning med strukturbevarelse
- Markdown — Overskriftsbaseret sektion parsing
- Almindelig Tekst — Linje-baseret segmentering
Hver indlæser udtrækker metadata (titel, forfatter, oprettelsesdato, side-/arkantal, ordantal) sammen med indholdet, hvilket producerer strukturerede sektioner med kildereferencer.
Strukturbevidst Chunking
I modsætning til naiv tekstopdeling respekterer chunkeren dokumentgrænser:
- Bevarer sidebrud (PDF'er), arkgrænser (regneark) og overskriftshierarki (Word/Markdown)
- Token-baseret størrelsesbestemmelse med konfigurerbar chunk-størrelse og overlap
- Hierarkisk fallback: opdeler først efter sektioner, derefter afsnit, derefter sætninger
- Hver chunk bevarer kildemetadata (sidenummer, arknavn, overskrift) til attribution
Embedding & Indeksering
Lokal Embedding Model
- Kører fuldstændigt lokalt via Transformers.js — ingen data forlader maskinen
- Kvantiseret model til performanceoptimering
- Batch embedding til effektiv bulkbehandling
- Automatisk afkortning ved ordgrænser med L2-normalisering
Vector Lagring
LanceDB tilbyder serverless vector lagring:
- Filbaseret (ingen separat databaseserver nødvendig)
- Per-projekt isolation med uafhængige indekser
- SHA256-baserede cache-nøgler til deduplikering
- Metadata lagret sammen med vektorer til filtreret retrieval
Hybrid Søgepipeline
Retrieval-pipelinen kombinerer tre rangeringssignaler for bedre resultater end nogen enkelt tilgang:
Signal 1: Embedding Søgning (Semantisk)
Vector lighedssøgning finder chunks med relateret betydning, selv når forskellige ord bruges. Håndterer omskrivning, synonymer og konceptuelle forespørgsler.
Signal 2: Fuldtekst Søgning (Leksikal)
Trigram-baseret indeksering med Jaccard-lighed fanger præcise keyword-matches, som embedding-søgning måske overser — vigtigt for tekniske termer, navne og identifikatorer.
Signal 3: Aktualitetsforøgelse
Eksponentiel henfaldsvægtning favoriserer nyligt tilgåede eller ændrede dokumenter, hvilket sikrer, at opdateret information vises først.
Scorekombination
Signaler kombineres med konfigurerbare vægte (standard: 50% semantisk, 25% leksikal, 25% aktualitet), normaliseret og filtreret ved en minimum score-tærskel.
Cross-Encoder Reranking
Efter initial retrieval genvurderer en cross-encoder model de bedste kandidater:
- Kontekstbevidst scoring overvejer forespørgsel-dokument par sammen (ikke uafhængigt)
- Keyword boost beregning for term overlap
- Blandet scoring (cross-encoder + keyword signaler)
- Producerer en endelig rangeret liste med højere præcision end første-pass retrieval alene
Struktureret Dataunderstøttelse
For regnearksindhold tilbyder systemet yderligere kapaciteter:
- Automatisk detektion af kolonne typer (numerisk, dato, boolean, streng)
- Naturligt sprogfiltrering (f.eks. "medarbejdere i ingeniør med løn over tærskel")
- Aggreringsunderstøttelse (antal, sum, gennemsnit, min, max)
- Query analyzer ruter strukturerede forespørgsler til en dedikeret motor i stedet for embedding-søgning
Web Interface
- Projektstyring — Opret, opdater og slet vidensbaseprojekter
- Dokumentupload — Træk-og-slip filupload med format auto-detektion
- Dokumentoprettelse — Opret dokumenter fra tekst direkte i UI'en
- Interaktiv Søgning — Naturligt sprog forespørgselsinterface med rangerede resultater
- Statistik — Indeksstørrelse, dokumentantal og formatfordeling per projekt
Nøglefunktioner
- Fuldstændigt Lokal — Al behandling på enheden; ingen eksterne API-kald for embeddings eller søgning
- 9 Input Formater — PDF, DOCX, DOC, XLSX, XLS, CSV, HTML, Markdown, almindelig tekst
- Strukturbevidst Chunking — Bevarer sider, ark og overskrifter som chunk-grænser
- Hybrid Søgning — Kombinerer semantiske, leksikale og aktualitetssignaler for bedre retrieval
- Cross-Encoder Reranking — Anden-pass scoring for højere præcisionsresultater
- Strukturerede Forespørgsler — Naturligt sprogfiltrering og aggregering på regnearksdata
- Serverless Vector DB — LanceDB filbaseret lagring uden infrastruktur overhead
- Dokumentskrivning — Eksportmuligheder for PDF, DOCX og XLSX oprettelse
- Projektisolation — Uafhængige vidensbaser med separate indekser
- Web UI — Komplet interface til dokumentstyring og interaktiv søgning
Resultater
Teknologistak
caseStudyDetail.more Casestudier
Udforsk flere af vores tekniske implementeringer
AI-drevet Regneark & Dokumentanalyse med Multi-Agent Orkestrering og Krydsdokument Reference
Et virksomhedsdatasæt havde brug for at analysere, forespørge og redigere store samlinger af regneark og dokumenter (Excel, CSV, Google Sheets, PDF'er, Word-dokumenter) ved hjælp af naturligt sprog — med evnen til at krydsreferere data på tværs af flere filer og udføre flertrins analytiske arbejdsgange uden manuel datahåndtering.
AI-drevet fakturabehandling med OCR og QuickBooks-integration
En mellemstor virksomhed, der månedligt behandler hundredvis af leverandørfakturaer, havde brug for at eliminere manuel dataindtastning ved automatisk at udtrække fakturadata ved hjælp af AI/OCR og synkronisere dem direkte til QuickBooks for bogføring og sporing af betalinger.
Klar til at Transformere Din Virksomhed?
Lad os drøfte, hvordan vi kan anvende lignende løsninger til dine udfordringer.