Anvendt kunstig intelligens i vores projekter
Vi integrerer AI, hvor det skaber reel værdi: automatisering af gentagne processer, udtrækning af oplysninger fra dokumenter, generering af kontekstualiseret indhold og intelligent brugerhjælp. Vi træffer implementeringsbeslutninger ud fra ROI, ikke trends.
LLM-integration — Claude API og OpenAI
Vi bruger Claude (Anthropic) som primær model til komplekse ræsonnementer, dokumentanalyse og generering af længere indhold — kontekstvinduet på 200k tokens gør det muligt at behandle en hel juridisk sag eller en finansiel rapport i ét enkelt kald. GPT-4o vælges til multimodale opgaver (billede + tekst) og når OpenAI-økosystemet (Whisper, DALL-E) er nødvendigt.
Tool use (function calling) lader LLM'en interagere med interne API'er: søge i databasen, udløse handlinger i eksisterende systemer og returnere strukturerede data valideret med Pydantic. Streamede svar reducerer den oplevede latenstid i samtalegrænseflader — brugeren ser teksten dukke op gradvist i stedet for at vente 5-10 sekunder.
- Prompt caching (Anthropic) reducerer omkostningerne med 90 % ved gentagen kontekst (systemprompter, referencedokumenter)
- Strukturerede output (JSON-tilstand) til typesikre svar uden regex på fri tekst
- Automatisk fallback Claude → GPT-4o → Gemini ved tilgængelighedsfejl
- Omkostningssporing pr. bruger og pr. funktion — LLM-forbruget er synligt i admin-dashboardet
RAG — AI med viden fra kundens data
Retrieval-Augmented Generation (RAG) gør det muligt for LLM'en at svare på baggrund af kundespecifikke dokumenter (kontrakter, manualer, lovgivning, e-mails) uden gentræning. Dokumenterne opdeles i chunks, embeddes med text-embedding-3-large (OpenAI) eller embed-english-v3 (Cohere), gemmes i pgvector (PostgreSQL-udvidelse) og hentes via cosinus-similaritet.
RAG-pipelinen omfatter: dokumentindlæsning (PDF, DOCX, HTML), intelligent chunking (med overlap for kontekst), re-ranking med Cohere Rerank for højere relevans, indsprøjtning i LLM-konteksten og kildehenvisning med sidetal. Resultatet er en chatbot, der svarer præcist på baggrund af rigtige dokumenter med kontrollerbare kilder.
- pgvector til vektorsimilaritetssøgning direkte i PostgreSQL — ingen Pinecone/Weaviate
- Hybridsøgning: tætte vektorer + sparse BM25 (nøgleord) → RRF-fusion
- RAG-evaluering med RAGAS — præcision, recall og faithfulness måles automatisk
- Metadatafiltrering til multi-tenant: bruger A ser ikke bruger B's dokumenter
Computer vision og dokumentbehandling
Til udtrækning af data fra scannede eller fotograferede dokumenter (fakturaer, kontrakter, ID-papirer) bruger vi en kombineret pipeline: billedforbehandling (deskew, støjreduktion med OpenCV), OCR med Google Document AI eller Amazon Textract (struktureret, ikke rå OCR) og efterbehandling med LLM til normalisering og validering. Over 98 % nøjagtighed på typiske forretningsdokumenter.
Billedklassificering (produkter, kategorier, NSFW-detektion) udføres med finjusterede modeller baseret på CLIP eller EfficientNet, udrullet som FastAPI-mikrotjenester med valgfri GPU-inferens (CUDA). Til projekter uden GPU-budget tilbyder cloud-API'er (Google Vision, AWS Rekognition) over 95 % nøjagtighed til en marginal pris.
- Automatisk dataudtrækning fra PDF-/billedfakturaer → struktureret database
- Identitetsverifikation: dokument-OCR + selfie liveness-detektion
- Moderering af brugergenereret indhold med cloud-API'er + LLM-fallback
- Tale-til-tekst med Whisper large-v3 til transskription af lydoptagelser af møder
Fordele og begrænsninger
Fordele
- Automatiserer gentagne processer: dataudtrækning, klassificering, support.
- RAG svarer ud fra kundens dokumenter, med kontrollerbare kilder.
- Prompt caching skærer op til 90 % af omkostningerne ved gentagen kontekst.
- Modelfallback (Claude → GPT-4o → Gemini) for tilgængelighed.
Begrænsninger
- LLM'er kan hallucinere — ethvert kritisk output kræver validering og kilder.
- Prisen pr. token vokser hurtigt ved store mængder uden omhyggelig caching.
- Følsomme data sendt til tredjeparts-API'er giver anledning til bekymring om privatliv.
- Latenstiden på et genereret svar kan nå op på flere sekunder.
Kort konklusion
Integrer AI, hvor den skaber reel ROI: automatisering, dokument-RAG, dataudtrækning. Undgå AI for AI's skyld i opgaver, hvor en simpel regel eller klassisk søgning er nok.
Specifikationstabel
| Egenskab | Grænse / tærskel | Typisk anvendelse | |
|---|---|---|---|
| LLM-kontekst | Op til 200k tokens (Claude) | Stor kontekst øger pris og latenstid | Analyse af lange dokumenter, rapporter |
| RAG | pgvector, hybridsøgning, re-ranking | Kvaliteten afhænger af chunking og kilder | Chatbot over egne dokumenter |
| Computer vision | Struktureret OCR, > 98 % nøjagtighed | GPU-inferens øger prisen | Fakturaudtrækning, ID-verifikation |
| Typisk pris | Afregnes pr. token / pr. API-kald | Vokser med mængden uden caching | Fra chatbot til komplet pipeline |
RAG vs. finjustering
| Kriterium | RAG | Finjustering |
|---|---|---|
| Opdatering af viden | Øjeblikkelig (tilføj dokumenter) | Kræver gentræning |
| Kontrollerbare kilder | Ja, med henvisning | Nej |
| Startomkostning | Lav | Høj (data + GPU) |
Ofte stillede spørgsmål
Hvad er RAG, og hvornår bruger jeg det?
RAG (Retrieval-Augmented Generation) lader AI'en svare ud fra dine dokumenter (kontrakter, manualer, lovgivning) uden gentræning. Brug det, når du vil have præcise svar med kilder baseret på dine egne data.
RAG eller finjustering?
RAG til viden, der ændrer sig ofte, og til kontrollerbare kilder — du opdaterer den ved at tilføje dokumenter. Finjustering til fast stil eller format, med højere startomkostning. I de fleste forretningscases er RAG det rigtige valg.
Hvordan kontrollerer I AI-hallucinationer?
Vi bruger RAG med kildehenvisning, strukturerede output (JSON) valideret med Pydantic og menneskelig validering af kritisk output. AI'en svarer ud fra rigtige dokumenter, ikke fra hukommelsen, og hver påstand har en tilknyttet kilde.
Forbliver mine data fortrolige?
Følsomme data kan isoleres pr. tenant og om nødvendigt behandles med selvhostede modeller eller API'er med klausuler om ingen træning. I regulerede tilfælde vælger vi udbydere, der ikke bruger data til træning.