---
title: Sju gratis lektioner i lokal RAG‑programmering med Python
url: https://www.elseif.net/sv/sju-gratis-lektioner-i-lokal-ragprogrammering-med-python
published: 2026-10-05T10:30:37+00:00
language: sv
section: Modeller
source: https://habr.com/ru/articles/1089682/?utm_campaign=1089682&utm_source=habrahabr&utm_medium=rss
organizations: Ollama, Streamlit, local-docs-ai, embeddinggemma, qwen3:1.7b, docqa.py
publisher: elseif
---

# Sju gratis lektioner i lokal RAG‑programmering med Python

Sju gratis lektioner i lokal RAG‑programmering med Python erbjuds för den som vill skapa lokala AI‑applikationer. Kursen går igenom en assistent som söker i användarens dokument, svarar på frågor och visar källtexter för verifiering. En enkel gränssnitt låter användaren lägga filer i en katalog, ställa en fråga och få ett svar. Kursen visar hur hela processen fungerar, från sökning och modellsvaret till den faktiska texten och var den hämtades ifrån. Lektionerna är samlade i en kort kurs med namnet local‑docs‑ai. Varje lektion är en del av en enda programvara som läser Markdown‑ och TXT‑filer, hittar lämpliga fragment med en lokal embedding‑modell, skickar dem till en språkmodell och visar den ursprungliga texten med filnamn och radnummer. Terminalkommandon och ett webbläsargränssnitt ingår.

Kursen förutsätter att deltagaren är bekant med Python‑funktioner, listor och ordinarier. Första steget är att köra ett färdigt exempel. Därefter bryts koden ner steg för steg, dokumenten byts ut och två typer av fel identifieras: antingen blir sökningen fel eller blir svaret fel. Alla lektioner och kod finns i ett gemensamt repository.

RAG‑konceptet innebär att en språkmodell får ett kontextuellt stöd genom att hämta relevanta dokumentfragment innan den svarar. Modellens vikter ändras inte; en ny kunskap blir tillgänglig först när sökindexet uppdateras utan att någon ny träning sker. Processen består av två huvudsteg: först omvandlas texten till vektorer med embeddinggemma, sedan formuleras svaret med qwen3:1.7b. Båda modellerna körs via Ollama på

Kärnan i programmet finns i docqa.py och använder enbart standardbiblioteket: pathlib, hashlib, json, math och urllib.request. För webbläsargränssnittet behövs en enda extern beroende, Streamlit, vars version låses i requirements.txt. Streamlit har egna beroenden.

Begränsningarna är femtio filer och en total storlek på en miljon byte. PDF‑filer stöds inte. Dessa gränser gör att hela indexet kan hållas i minnet och att sökningen kan implementeras med vanlig Python‑kod.

Lektion ett handlar om första körningen och felsökning. Python 3.10 eller nyare krävs liksom Git och en installerad Ollama‑instans. På macOS och Linux kan kommandot vara python3, på Windows py. Projektet körs från projektets katalog. Modeller laddas ner och kopplas till Ollama. Storleken på embeddinggemma är ca 622 MB och qwen3:1.7b ca 1,4 GB. Minnesförbrukningen varierar och kan inte förutsägas enbart utifrån filstorlek. Doctor‑skriptet kontrollerar att både server och modeller är tillgängliga.

För att bekräfta att allt fungerar körs ett exempel från example.md. I rad 15 nämns att ett cykelköp kan erhållas utan faktura. Sökningen visar bara de funna fragmenten och ask‑kommandot lägger till modellens svar. Här kan man jämföra ingång och utgång. Därefter testas en fråga om en adress som saknas i filen, om modellen ändå påstår en gata har man ett fel som kan användas i sista lektionen.

Lektion två fokuserar på fragment och radnummer. Texten delas upp i bitar med en maximal storlek på 1 000 tecken. Rubriker i Markdown inleder nya fragment medan långa rader kan delas upp. Radnumren tas från den ursprungliga texten innan trimning. Om en rad delas i flera delar får alla samma radnummer, vilket är acceptabelt för filreferens men inte för exakt position.

En enkel Markdown‑parsare används; den känner inte igen kodblock med #‑tecken och kan felidentifiera rubriker. Detta kan leda till att gränser mellan två ämnen försvinner. Storleken på fragmentet på 1 000 tecken är inte alltid optimal, token‑antal varierar och kan påverka hur modellen hanterar kontexten.

Fragmenteringen kan inspekteras utan Ollama genom att köra Python i projektkatalogen och visa resultatet för example.md. Detta visar hur texten delas upp och kan läsas utan att någon språkmodell involveras.
