Projekt ma na celu systematyczne badanie metod treningu lokalnych modeli językowych — od analizy bazowych modeli, przez przygotowanie danych, po fine-tuning LoRA/QLoRA i implementację RAG.

Całość działa w pełni lokalnie — bez zależności od API, bez wysyłania danych do chmury. Każdy etap jest dokumentowany, mierzalny i powtarzalny.

This project systematically investigates methods for training local language models — from baseline model analysis, through data preparation, to LoRA/QLoRA fine-tuning and RAG implementation.

Everything runs entirely locally — no API dependencies, no data sent to the cloud. Each stage is documented, measurable, and reproducible.

Kluczowe cele
Key objectives

Efektywność treningu — osiągnięcie wysokich wyników przy minimalnym zużyciu zasobów

Powtarzalność — pełna dokumentacja parametrów, danych i konfiguracji

Praktyczne zastosowanie — modele gotowe do pracy na rzeczywistych zadaniach

Training efficiency — achieving high results with minimal resource usage

Reproducibility — full documentation of parameters, data, and configurations

Practical application — models ready for real-world tasks

Mapa faz
Phase map
2025 — Faza 01 zakończona
2025 — Phase 01 done
Benchmarkowanie bazowych modeli bez fine-tuningu.
Benchmarking baseline models without fine-tuning.
kwi 2026 — Faza 02 zakończona
Apr 2026 — Phase 02 done
Kolekcjonowanie, czyszczenie, strukturyzacja danych treningowych.
Collecting, cleaning, and structuring training data.
maj 2026 — Faza 03 bieżąca
May 2026 — Phase 03 current
Implementacja systemu RAG, wybór modeli embeddingowych.
RAG system implementation, embedding model selection.
2026/27 — Faza 04 przyszłość
2026/27 — Phase 04 future
Efektywny trening parametryczny, fine-tuning niskokosztowy.
Efficient parametric training, low-cost fine-tuning.
2027+ — Faza 05 koncepcja
2027+ — Phase 05 concept
Kompleksowa ocena wszystkich podejść, rekomendacje.
Comprehensive evaluation of all approaches, recommendations.
Stack oprogramowania
Software stack
Ollama llama.cpp Ubuntu 24.04 LTS Unsloth QLoRA / LoRA ChromaDB / FAISS
← powrót do ← back to AI Lab →

Pierwsza faza obejmowała benchmarkowanie bazowych modeli językowych bez jakiegokolwiek fine-tuningu — celem było ustalenie linii bazowej i zrozumienie potencjału poszczególnych modeli przed rozpoczęciem treningu.

Phase 1 involved benchmarking baseline language models without any fine-tuning — the goal was to establish a baseline and understand the potential of each model before starting training.

Szacowane wymagania VRAM
Estimated VRAM requirements

Poniższy wykres przedstawia szacunkowe zapotrzebowanie na pamięć VRAM dla poszczególnych modeli w formacie FP16. Wartości obliczono jako ~2 bajty × liczba parametrów, co odpowiada minimalnej pamięci potrzebnej do załadowania modelu. Im niższy pasek, tym mniejsze wymagania sprzętowe — modele poniżej 6 GB można uruchomić na tańszych kartach GPU. Testy przeprowadzono na AMD 7900 24GB z 64GB RAM, Ubuntu 24.04 LTS.

The chart below shows estimated VRAM requirements for each model in FP16 format. Values are calculated as ~2 bytes × parameter count, representing the minimum memory needed to load the model. Lower bars indicate lower hardware requirements — models under 6 GB can run on more affordable GPUs. Tests were conducted on AMD 7900 24GB with 64GB RAM, Ubuntu 24.04 LTS.

VRAM szacunkowe (FP16) — im niżej, tym lepiej
Estimated VRAM (FP16) — lower is better
Qwen2-0.5B
~1 GB
TinyLlama-1B
~2 GB
Gemma2-2B
~4 GB
Llama3.2-3B
~6 GB
Phi3.5-3.8B
~8 GB
Mistral-7B
~14 GB
Pytanie badawcze i metodologia
Research question and methodology

Postawowym pytaniem, które pojawiło się na początku projektu, było: jak można określić 'wiedzę' modelu z danej dziedziny?

Przyjęta metodologia — benchmarking — została przeprowadzona poprzez generowanie przez modele zestawu pytań z danej dziedziny oraz odpowiedzi na cały zestaw pytań wygenerowanych przez wszystkie 6 modeli. Dzięki temu uzyskaliśmy spójny zbiór danych, który pozwala porównać wiedzę i umiejętności poszczególnych modeli w kontekście UK Highway Code.

The fundamental question that arose at the start of the project was: how can we measure a model's 'knowledge' in a given domain?

The adopted methodology — benchmarking — was conducted by having models generate a set of questions from a given domain and answers to the entire set of questions generated by all 6 models. This provided us with a consistent dataset that allows comparison of knowledge and capabilities of each model in the context of the UK Highway Code.

Generacja pytań (Zadanie 1.1)
Question Generation (Task 1.1)

Modele przechodziły przez wiele rund generacji pytań — najpierw próba generacji JSON (2 rundy), a następnie format raw (1 runda). Tylko TinyLlama-1B wygenerował poprawny JSON; pozostałe 5 modeli nie zakończyło JSON-a (wyczerpanie tokenów), ale wszystkie 6 modeli pomyślnie wygenerowało pytania w formacie raw.

Models went through multiple rounds of question generation — first JSON format attempts (2 rounds), then raw format (1 round). Only TinyLlama-1B produced valid JSON output; the remaining 5 models failed JSON generation (token exhaustion), but all 6 models successfully generated questions in raw format.

Model Qwen2-0.5B TinyLlama-1B Gemma2-2B Llama3.2-3B Phi3.5-3.8B Mistral-7B
JSON JSON Invalid Valid ✅ Invalid Invalid Invalid Invalid
Raw format Raw format
Wall time (single-Q) Wall time (single-Q) 9 356 ms 8 040 ms 13 988 ms 12 915 ms 15 266 ms 18 201 ms
Terminacja (JSON) Termination (JSON) length stop length length length length
Total tok/s Total tok/s 218.90 168.66 146.41 158.58 134.15 112.52

5/6 modeli — raw success; 1/6 — valid JSON (TinyLlama-1B) 5/6 models — raw success; 1/6 — valid JSON (TinyLlama-1B)

Analiza unikalności pytań
Question Uniqueness Analysis

Wszystkie wygenerowane pytania (z rund JSON + raw) zostały połączone w jeden zbiór i poddane analizie unikalności. Wynik: wysoka różnorodność przy minimalnej liczbie duplikatów.

All generated questions (from JSON + raw rounds) were merged into a single dataset and analyzed for uniqueness. Result: high diversity with minimal duplication.

⚠ UWAGA: 5 z 6 modeli nie wygenerowało poprawnego JSON-a ⚠ WARNING: 5 of 6 models failed to produce valid JSON
Podczas testu generowania JSON-a wszystkie modele oprócz TinyLlama-1B zakończyły generowanie przed czasem (powód: length — wyczerpanie limitu tokenów). Tylko TinyLlama-1B wygenerował poprawny JSON i zakończył się naturalnie (stop). Wszystkie modele poprawnie wygenerowały odpowiedzi w formacie surowym — problem dotyczy wyłącznie struktury JSON. During JSON generation testing, all models except TinyLlama-1B terminated prematurely (reason: length — token exhaustion). Only TinyLlama-1B produced valid JSON and completed naturally (stop). All models successfully generated answers in raw format — the issue is exclusively with JSON structuring.
Pytań unikalnych: 834
Unikalność: 99.28%
Duplikaty: 6 (0.72%)
Generacja: JSON ×2 + Raw ×1
Unique questions: 834
Uniqueness: 99.28%
Duplicates: 6 (0.72%)
Generation: JSON ×2 + Raw ×1
Benchmark odpowiedzi (Zadanie 2)
Answering Benchmark (Task 2)

Każdy model odpowiadał na wszystkie 834 unikalne pytania. Poniższe metryki pochodzą z surowych plików JSON benchmarku — dla wszystkich 6 modeli dostępne są pełne dane dotyczące czasu odpowiedzi i szybkości generowania tokenów.

Each model answered all 834 unique questions. The metrics below are extracted from raw JSON benchmark files — complete wall time and throughput data is available for all 6 models.

Model Qwen2-0.5B TinyLlama-1B Gemma2-2B Llama3.2-3B Phi3.5-3.8B Mistral-7B
Wall time (834 Q) Wall time (834 Q) 185.57 s 633.90 s 292.70 s 324.37 s 879.28 s 752.05 s
Średni czas/pytanie Avg time/question 222.50 ms 760.07 ms 350.96 ms 388.93 ms 1 054.29 ms 901.74 ms
Total tok/s Total tok/s 890.09 572.87 467.35 531.98 290.16 270.01
Completion tok/s Completion tok/s 342.70 389.87 121.60 178.92 167.84 133.48
Odpowiedzi Answered 834/834 834/834 834/834 834/834 834/834 834/834

5 004 odpowiedzi raw (834 × 6 modeli) — dane z plików JSON benchmarku 5 004 raw responses (834 × 6 models) — data from raw JSON benchmark files

Statystyki zbioru pytań
Question dataset statistics

Zbiór 834 pytań został wygenerowany automatycznie przez modele LLM jako badanie rynku brytyjskiego na podstawie UK Highway Code. Badanie prowadzono w całości po angielsku — źródłowy materiał oraz wszystkie prompty dla modeli były w języku angielskim. Pytania pokrywają zakres tematyczny przepisów drogowych — znaki, pierwszeństwo, zaokrąglenia, prędkość, parking, procedury awaryjne, warunki atmosferyczne oraz wymagania dotyczące bezpieczeństwa pojazdów. Pełen zbiór 834 pytań został wykorzystany do benchmarku wszystkich 6 modeli.

The dataset of 834 questions was automatically generated by LLMs as a UK market study based on the UK Highway Code, with all source material and prompts provided in English. Questions cover a wide range of traffic topics — road signs, right-of-way, roundabouts, speed limits, parking, emergency procedures, weather conditions, and vehicle safety requirements. The full set of 834 questions was used to benchmark all 6 models.

Wykres wydajności modeli
Model performance chart

Wykres porównuje wydajność 6 modeli bazowych bez fine-tuningu. Dwa wskaźniki zostały zmierzone: Total tok/s — całkowita przepustowość (włączając tokeny promptu), oraz Completion tok/s — przepustowość samego generowania odpowiedzi. Każdy model przetestowano na 834 pytaniach z UK Highway Code. Generowanie odbywało się pojedynczo, bez batchowania, na AMD 7900 24GB.

The chart compares performance of 6 baseline models without fine-tuning. Two metrics were measured: Total tok/s — total throughput (including prompt tokens), and Completion tok/s — response-only generation throughput. Each model was tested on 834 questions from the UK Highway Code dataset. Generation was performed individually, without batching, on AMD 7900 24GB.

Kluczowe wnioski
Key findings
Najszybszy model
Fastest model
168.66 tok/s
TinyLlama-1B — 8 040 ms wall time, jedyny z poprawnym JSON
TinyLlama-1B — 8 040 ms wall time, only valid JSON
Najwyższa przepustowość
Highest throughput
218.90 tok/s
Qwen2-0.5B — 218.90 total, 196.24 completion tokens/s
Qwen2-0.5B — 218.90 total, 196.24 completion tokens/s
Najwyższa unikalność
Highest uniqueness
99.28%
834 unikalnych pytań z 840 wygenerowanych
834 unique questions out of 840 generated
Raport: Zbiory danych z benchmarkowania
Report: Datasets from benchmarking

W wyniku benchmarkowania przeprowadzonego w Fazie 1 otrzymaliśmy następujące zbiory danych:

  • Zbiór pytań: 834 pytań z dziedziny UK Highway Code wygenerowanych przez 6 modeli LLM
  • Zbiór odpowiedzi: odpowiedzi na 834 pytań wygenerowane przez każdy z 6 modeli (6 × 834 = 5 004 odpowiedzi)
  • Dane wydajnościowe: pomiary przepustowości (tok/s) dla każdego modelu na każdym pytaniu

Do czego posłużą te zbiory w dalszych krokach?
Po treningu (LoRA/QLoRA fine-tuning, Fazy 2–3) model będzie używał tych danych do:

  • Ewaluacji własnych odpowiedzi — model po treningu sam klasyfikuje i ocenia swoje odpowiedzi wygenerowane w Fazie 1
  • Oceny krzyżowej — potencjalnie inny model (np. lepszy/większy) dokona oceny odpowiedzi modelu wytrenowanego
  • Pomiaru postępu — porównanie jakości odpowiedzi przed i po treningu

As a result of benchmarking conducted in Phase 1, we obtained the following datasets:

  • Questions dataset: 834 questions from the UK Highway Code domain generated by 6 LLM models
  • Answers dataset: answers to 834 questions generated by each of the 6 models (6 × 834 = 5,004 answers)
  • Performance data: throughput measurements (tok/s) for each model on each question

How will these datasets be used in subsequent steps?
After training (LoRA/QLoRA fine-tuning, Phases 2–3), the model will use these data for:

  • Self-evaluation — the post-training model classifies and evaluates its own answers generated in Phase 1
  • Cross-evaluation — potentially another model (e.g., better/larger) will evaluate the trained model's answers
  • Progress measurement — comparison of answer quality before and after training

Zanim dane trafią do modeli embeddingowych, muszą przejść przez proces czyszczenia, segmentacji i formatowania. Ta faza obejmuje podział 31 dokumentów PDF UK Highway Code na 1,642 segmentów tekstowych (max 520 znaków), generowanie plików JSONL i metadanych, walidację gotowości danych oraz iteracyjny wybór modelu embeddingowego — wszystko w ramach przygotowania warstwy RAG (Retrieval-Augmented Generation).

Before data enters embedding models, it must go through cleaning, segmentation and formatting. This phase covers splitting 31 PDF documents of the UK Highway Code into 1,642 text segments (max 520 characters), generating JSONL files and metadata, validating data readiness, and iteratively selecting the embedding model — all as part of the RAG (Retrieval-Augmented Generation) layer preparation.

Faza 1 — Embedding tekstowy modelem cpp-nomic-embed
Phase 1 — Text embedding with cpp-nomic-embed
Parametr
Parameter
Wartość
Value
Model
Model
cpp-nomic-embed (skwantowany GGUF)
cpp-nomic-embed (quantized GGUF)
Silnik
Engine
llama.cpp
llama.cpp
Wymiar wektora
Vector dimension
768
768
Maks. kontekst modelu
Max model context
256 tokenów
256 tokens
Limit znaków na segment
Char limit per segment
520 znaków
520 characters
Batch size
Batch size
1 (pojedyncze segmenty)
1 (single segments)
⚠ Problem: exceed_context_size_error
⚠ Problem: exceed_context_size_error

W początkowych uruchomieniach proces embeddingu generował błędy HTTP 400 typu exceed_context_size_error. Przyczyną było przekroczenie maksymalnego rozmiaru wejścia modelu (256 tokenów) przez część chunków tekstowych.

Initial embedding runs generated HTTP 400 errors of type exceed_context_size_error. The cause was exceeding the model's maximum input size (256 tokens) for some text chunks.

✓ Wprowadzono dzielenie chunków na krótsze segmenty zdaniowe
✓ Introduced splitting chunks into shorter sentence segments
✓ Wtórne cięcie do maks. 520 znaków
✓ Secondary cut to max 520 characters
✓ Przetwarzanie z BATCH_SIZE=1
✓ Processing with BATCH_SIZE=1
Rezultat embeddingu tekstowego
Text embedding result
Metryka
Metric
Wartość
Value
Dokumenty źródłowe (PDF)
Source documents (PDF)
31
31
Segmenty tekstowe przetworzone
Text segments processed
31 plików JSONL
31 JSONL files
Wygenerowane embeddingi tekstowe
Generated text embeddings
1,642
1,642
Błędy
Errors
0
0
Czas przetwarzania
Processing time
17.784 sekund
17.784 seconds
Średnia długość segmentu
Average segment length
371.16 znaków
371.16 characters
Minimalna długość segmentu
Min segment length
1 znak
1 character
Maksymalna długość segmentu
Max segment length
520 znaków
520 characters
Obrazy wykryte w źródłach
Images detected in sources
330
330
Status embeddingu obrazów
Image embedding status
❌ NIE WYKONANO — model tylko tekstowy
❌ NOT DONE — text-only model
🚨 Problem krytyczny: ograniczenie do tekstu
🚨 Critical problem: text-only limitation

Lokalny model cpp-nomic-embed uruchomiony przez llama.cpp nie obsługuje przetwarzania plików graficznych. Wykryto 330 plików graficznych (ilustracje znaków drogowych, sygnałów, oznaczeń poziomych, schematów), które pozostały nieprzetworzone. System RAG oparty wyłącznie na embeddingu tekstowym nie byłby w stanie przeszukiwać informacji zawartej w graficznych elementach Highway Code.

The local cpp-nomic-embed model via llama.cpp does not support graphic file processing. 330 graphic files (road signs, signals, markings, diagrams) were detected but left unprocessed. A RAG system based solely on text embedding would be unable to search or utilize information contained in the graphic elements of the Highway Code.

Faza 2 — Migracja do modelu multimodalnego jina-clip-v1
Phase 2 — Migration to multimodal jina-clip-v1 model

Ze względu na wykrycie 330 plików graficznych oraz ograniczenia modelu cpp-nomic-embed wyłącznie do tekstu, podjęto decyzję o wdrożeniu multimodalnego modelu embeddingowego zdolnego do jednoczesnego przetwarzania tekstu i obrazów we wspólnej przestrzeni wektorowej.

Due to the detection of 330 graphic files and the cpp-nomic-embed model's text-only limitation, a decision was made to implement a multimodal embedding model capable of processing both text and images in a shared vector space.

Parametr
Parameter
Wartość
Value
Model
Model
jinaai/jina-clip-v1
jinaai/jina-clip-v1
Akceleracja
Acceleration
AMD ROCm (zamiast CPU)
AMD ROCm (instead of CPU)
Wymiar wektora
Vector dimension
768
768
Maks. kontekst
Max context
8,192 tokenów
8,192 tokens
Pliki przetworzone
Files processed
31
31
Pomyślnie wektoryzowane
Successfully vectorized
31
31
Błędy
Errors
0
0
Czas przetwarzania
Processing time
2.81 sekund
2.81 seconds
Ścieżka iteracyjna — 5 prób
Iterative path — 5 attempts
Próba 1 Próba 2 Próba 3 Próba 4 Próba 5 ✅
Próba 1: colnomic-embed-multimodal-7b
Attempt 1: colnomic-embed-multimodal-7b

BLOKADA: Model nie obsługiwał obrazów przez standardowe API embeddingowe.

BLOCKED: Model did not support images via the standard embedding API.

✓ Decyzja: Odrzucono
✓ Decision: Rejected
Próba 2: Nomic Vision v1.5
Attempt 2: Nomic Vision v1.5

BLOKADA: Błąd walidacji konfiguracji modelu — niezgodność typów danych odrzucana przez nowsze wersje biblioteki.

BLOCKED: Model configuration validation error — data type mismatch rejected by newer library versions.

✓ Decyzja: Odrzucono
✓ Decision: Rejected
Próba 3: ColQwen2-7B
Attempt 3: ColQwen2-7B

BLOKADA: Błąd dostępu do modelu — wymagał niestandardowego silnika, niekompatybilny ze standardową biblioteką.

BLOCKED: Model access error — required a custom engine, incompatible with standard library.

✓ Decyzja: Odrzucono
✓ Decision: Rejected
Próba 4: OpenAI CLIP
Attempt 4: OpenAI CLIP

BLOKADA: Limit 77 tokenów był zbyt mały dla tekstów Highway Code. Dodatkowy problem: domyślna instalacja CUDA zamiast AMD ROCm.

BLOCKED: The 77-token limit was too small for Highway Code texts. Additional issue: default CUDA installation instead of AMD ROCm.

✓ Decyzja: Odrzucono
✓ Decision: Rejected
🎉 Próba 5 (finałowa): jinaai/jina-clip-v1 ✅
🎉 Attempt 5 (final): jinaai/jina-clip-v1 ✅
• Natywna obsługa zarówno tekstu, jak i obrazów we wspólnej przestrzeni wektorowej
• Native support for both text and images in a shared vector space
• Ogromne okno kontekstowe: do 8,192 tokenów tekstu (eliminuje problem CLIP-a)
• Massive context window: up to 8,192 text tokens (eliminates CLIP problem)
• W pełni kompatybilny ze standardowym API transformers
• Fully compatible with standard transformers API
• Wymiar wektora: 768 (zgodność z fazą tekstową)
• Vector dimension: 768 (compatible with text phase)
Szczegółowe statystyki — 31 dokumentów źródłowych
Detailed statistics — 31 source documents
#
Dokument (PDF Highway Code)
Document (Highway Code PDF)
Embeddingi
Embeddings
Śr. znaków
Avg chars
Min
Min
Max
Max
Czas [s]
Time [s]
1You and your bicycle8360.751684910.117
2Motorcycle licence requirements16352.121185110.18
3Vehicle documentation and learner driver31353.32745170.346
4The road user and the law26325.54175200.375
5Penalties35340.06735200.397
6Vehicle maintenance, safety and security29380.971765200.317
7First aid on the road16387.562005190.17
8Safety code for new drivers12371.921545160.129
9Breakdowns and incidents52346.2115200.545
10Driving in adverse weather29357.14135200.318
11General rules, techniques and advice164357.3485201.776
12Index426413.4045204.548
13Introduction37413.461865200.395
14Light signals controlling traffic12360.2545200.115
15Motorways80338.68185200.879
16Other information16364.81195200.17
17Road markings30366.43185200.321
18Road users requiring extra care52365.3865200.563
19Road works, level crossings and tramways47375.53365200.484
20Rules about animals23369.871575200.249
21Rules for cyclists65354.8675200.674
22Rules for drivers and motorcyclists70325.11115200.728
23Rules for motorcyclists14381.862275080.152
24Rules for pedestrians61377.39635180.648
25Rules for powered wheelchairs and mobility scooters23358.221915190.24
26Signals by authorised persons13326.23105200.119
27Signals to other road users11338.36485200.112
28Traffic signs74358.7445200.809
29Using the road111350.63275201.241
30Vehicle markings9370.44735200.094
31Waiting and parking50338.6855200.562
RAZEM
TOTAL
1,642 371.16 1 520 17.784
📊 Największe dokumenty (wg liczby embeddingów)
📊 Largest documents (by embedding count)
  1. Index426 embeddingów (indeks alfabetyczny haseł)
  2. Index426 embeddings (alphabetical index of terms)
  3. General rules, techniques and advice164 embeddingów (najobszerniejszy merytorycznie rozdział)
  4. General rules, techniques and advice164 embeddings (most content-rich chapter)
  5. Using the road111 embeddingów
  6. Using the road111 embeddings
  7. Motorways80 embeddingów
  8. Motorways80 embeddings
  9. Traffic signs74 embeddingów
  10. Traffic signs74 embeddings
Produkty końcowe
Deliverables
📁 Skrypty
📁 Scripts
  • Skrypty do embeddingu tekstowego oraz multimodalnego (Jina-CLIP)
  • Scripts for text and multimodal (Jina-CLIP) embedding
📊 Pliki wynikowe
📊 Output files
  • 31 zestawów danych (JSONL, JSON, CSV) zawierających 1,642 embeddingi oraz metadane
  • 31 datasets (JSONL, JSON, CSV) containing 1,642 embeddings and metadata
  • 31 wektorów multimodalnych (Jina-CLIP)
  • 31 multimodal vectors (Jina-CLIP)
📁 Katalogi raportów
📁 Report directories
  • Katalog reports/ z podsumowaniami i statystykami
  • The reports/ directory with summaries and statistics
Gotowość do RAG
RAG readiness
Element
Element
Status
Status
Embedding tekstowy (1,642 wektory)
Text embedding (1,642 vectors)
✅ Gotowe
✅ Ready
Embedding multimodalny (31 wektory zagregowane)
Multimodal embedding (31 aggregated vectors)
✅ Gotowe
✅ Ready
Obrazy (330 wykrytych) — embedding
Images (330 detected) — embedding
⏳ Wymaga przeprocesowania
⏳ Requires reprocessing
Indeks w Qdrant
Index in Qdrant
⏳ Kolejny krok
⏳ Next step
Pipeline RAG
RAG pipeline
⏳ Po indeksacji
⏳ After indexing
🔑 Kluczowe wnioski
🔑 Key takeaways
  • Iteracyjny proces — 5 prób zanim znaleziono działające rozwiązanie (jina-clip-v1)
  • Iterative process — 5 attempts before finding a working solution (jina-clip-v1)
  • Chunking jest kluczowy — 520 znaków max, dzielenie zdaniowe, 0 błędów końcowo
  • Chunking is critical — 520 char max, sentence-level splitting, 0 errors in the end
  • Model multimodalny — jina-clip-v1 z AMD ROCm: 31 wektory w 2.81s (vs 17.784s dla cpp-nomic-embed)
  • Multimodal model — jina-clip-v1 with AMD ROCm: 31 vectors in 2.81s (vs 17.784s for cpp-nomic-embed)
  • Wspólny wymiar — oba modele generują wektory 768-wymiarowe (kompatybilne z Qdrant)
  • Shared dimension — both models generate 768-dimensional vectors (compatible with Qdrant)
  • 330 obrazów czeka na osobny etap embeddowania multimodalnego
  • 330 images awaiting separate multimodal embedding stage

Retrieval-Augmented Generation (RAG) pozwala na rozszerzenie możliwości modeli językowych poprzez podłączanie zewnętrznych źródeł wiedzy. Ta faza koncentruje się na wyborze modeli embeddingowych i budowaniu pipeline'u RAG.

Retrieval-Augmented Generation (RAG) extends language model capabilities by connecting external knowledge sources. This phase focuses on selecting embedding models and building the RAG pipeline.

Kluczowe obszary
Key areas

Embedding model comparison — Porównanie modeli pod kątem rozmiaru, jakości i szybkości

Vector database selection — ChromaDB vs FAISS: zalety, wady, wydajność

Retrieval pipeline architecture — Projekt systemu od zapytania do odpowiedzi

Chunking strategy for documents — Optymalny podział dokumentów na fragmenty

RAG vs fine-tuning: when to use which — Kiedy wybrać RAG, a kiedy fine-tuning

Embedding model comparison — Comparing models by size, quality, and speed

Vector database selection — ChromaDB vs FAISS: pros, cons, performance

Retrieval pipeline architecture — Designing the system from query to response

Chunking strategy for documents — Optimal document splitting strategies

RAG vs fine-tuning: when to use which — When to choose RAG vs fine-tuning

Porównanie modeli embeddingowych
Embedding Model Comparison
Embedding Model Dimensions Size Speed Quality
[value] [value] [value] [value] [value]
[value] [value] [value] [value] [value]
[value] [value] [value] [value] [value]

LoRA (Low-Rank Adaptation) i QLoRA (quantyzed LoRA) to metody efektywnego fine-tuningu, które pozwalają na dostosowanie dużych modeli przy użyciu minimalnej liczby parametrów i zasobów obliczeniowych.

LoRA (Low-Rank Adaptation) and QLoRA are efficient fine-tuning methods that enable adapting large models using minimal parameters and computational resources.

Kluczowe obszary
Key areas

LoRA vs QLoRA: trade-offs — Porównanie standardowej LoRA z kwantyzowaną wersją

Rank, alpha, dropout configuration — Optymalne wartości parametrów treningowych

Training duration and resource requirements — Czas i zasoby potrzebne do treningu

Quantization levels (4-bit vs 8-bit) — Poziomy kwantyzacji i wpływ na jakość

Tools: Unsloth, Axolotl, llama-factory — Narzędzia do automatyzacji treningu

LoRA vs QLoRA: trade-offs — Comparing standard LoRA with quantized version

Rank, alpha, dropout configuration — Optimal training parameter values

Training duration and resource requirements — Time and resources needed for training

Quantization levels (4-bit vs 8-bit) — Quantization levels and impact on quality

Tools: Unsloth, Axolotl, llama-factory — Tools for training automation

Konfiguracja treningu
Training Configuration
rank[value]
alpha[value]
dropout[value]
quantization4-bit NF4
epochs[value]
batch size[value]

Ostatnia faza to kompleksowa ocena wszystkich podejść — od bazowych modeli przez RAG po fine-tuning LoRA/QLoRA. Cel: wyznaczenie najlepszych konfiguracji dla różnych przypadków użycia.

The final phase is a comprehensive evaluation of all approaches — from baseline models through RAG to LoRA/QLoRA fine-tuning. Goal: identifying the best configurations for different use cases.

Kluczowe obszary
Key areas

Side-by-side comparison of all approaches — Bezpośrednie porównanie RAG, LoRA, QLoRA i modeli bazowych

Before/after training metrics — Metryki przed i po treningu dla każdego modelu

Cost-benefit analysis per method — Analiza kosztów i korzyści każdej metody

Recommended configurations for different use cases — Rekomendacje dla różnych scenariuszy

Lessons learned and best practices — Wnioski i najlepsze praktyki

Side-by-side comparison of all approaches — Direct comparison of RAG, LoRA, QLoRA, and baseline models

Before/after training metrics — Pre and post training metrics for each model

Cost-benefit analysis per method — Cost and benefit analysis for each method

Recommended configurations for different use cases — Recommendations for different scenarios

Lessons learned and best practices — Key takeaways and best practices

Porównanie przed/po
Before/After Comparison
Metric Phase 1 (Baseline) Phase 4 (Trained) Delta
Generation speed (tok/s) [value] [value] [value]
Task accuracy [value] [value] [value]
Coherence score [value] [value] [value]
Factual accuracy [value] [value] [value]