File size: 3,970 Bytes
20ae7d6
 
 
 
 
 
 
 
 
 
 
 
 
3b2fae3
20ae7d6
 
8a47f3a
ddd0ebf
20ae7d6
 
 
 
 
3f40317
20ae7d6
ddd0ebf
20ae7d6
8a47f3a
20ae7d6
 
 
8a47f3a
20ae7d6
 
 
 
8a47f3a
 
 
166e11e
 
b0393ce
ddd0ebf
6a31e7c
8a47f3a
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
---
license: apache-2.0
language:
- pl
base_model:
- speakleash/Bielik-4.5B-v3.0-Instruct
pipeline_tag: text-generation
tags:
- rag
---

# Prosty RAG

Prosty RAG to otwarto藕r贸d艂owy asystent AI oparty na polskim modelu j臋zykowym [Bielik-4.5B-v3.0-Instruct](https://huggingface.co/speakleash/Bielik-4.5B-v3.0-Instruct), kt贸ry odpowiada na pytania z prywatnej bazy wiedzy u偶ytkownika, wykorzystuj膮c technik臋 RAG (Retrieval-Augmented Generation). **Asystent dzia艂a w pe艂ni lokalnie**, jako dwa pliki wykonywalne na Windows/Linux/MacOS, wykorzystuj膮ce technologi臋 [llamafile](https://llamafile.ai/) i embedfile. Aplikacja jest przeno艣na, nie wymaga 艣rodowiska Python z mn贸stwem pakiet贸w (np. LangChain, LangGraph, LlamaIndex i podobne), automatycznie wykrywa zainstalowane biblioteki GPU (CUDA/ROCm), a w przypadku ich braku wykorzystuje CPU.

Zasada dzia艂ania:
1. Umieszczamy pliki bazy wiedzy PDF, TXT, MD (Markdown) lub CSV w folderze `baza`,
2. Pliki s膮 indeksowane (PDF konwertowane na TXT za pomoc膮 [pdftotext](https://www.xpdfreader.com/pdftotext-man.html)), dzielone na fragmenty (po 200 s艂贸w, 10 s艂贸w nak艂ada si臋) i osadzane w wektorowej bazie danych [sqlite-vec](https://github.com/asg017/sqlite-vec),
3. Dla danego zapytania pobierane s膮 najbardziej trafne fragmenty z bazy danych, kt贸re uzupe艂niaj膮 kontekst pytania,
4. Model j臋zykowy generuje odpowied藕 na pytanie wykorzystuj膮c wzbogacone dane z bazy wiedzy. 

### Uruchamianie

Wystarczy pobra膰 plik [**prosty-rag.cmd**](https://huggingface.co/jglowa/prosty-rag/resolve/main/prosty-rag.cmd?download=true) (klikaj膮c prawym przyciskiem -> zapisz link jako...) i uruchomi膰 go (klikaj膮c dwukrotnie mysz膮 lub wpisuj膮c w wierszu polece艅 `./prosty-rag.cmd`). Pod Windows nale偶y najpierw upewni膰 si臋, 偶e skrypt ma znaki ko艅ca linii Windws (CRLF) - je艣li nie, to nale偶y skonwertowa膰 poleceniem `more /p <prosty-rag.cmd >prosty-rag.cmd` i uruchomi膰 `prosty-rag.cmd`. Skrypt sam pobierze pliki: `prosty-rag.llamafile` i `prosty-rag.embedfile` (je艣li nie zosta艂y wcze艣niej pobrane), uruchomi indeksator (je艣li nie zosta艂 jeszcze uruchomiony), za艂aduje serwer z modelem osadzania (embedfile), serwer z modelem j臋zykowym (llamafile) i otworzy stron臋 [http://localhost:8080](http://localhost:8080) w przegl膮darce internetowej. Asystent dzia艂a off-line, a wszelkie dane pozostaj膮 lokalnie na urz膮dzeniu.

W folderze `baza` nale偶y umie艣ci膰 wszystkie pliki PDF, TXT, MD i CSV do stworzenia bazy wiedzy. Nast臋pnie nale偶y uruchomi膰 skrypt `indeksator.cmd`, kt贸ry skonwertuje pliki PDF do TXT i zaindeksuje pliki tesktowe w wektorowej bazie danych SQLite `prosty-rag.db`, korzystaj膮c z modelu osadzania BGE-M3. Indeksator nale偶y uruchomi膰 po ka偶dej zmianie plik贸w w folderze `baza`.

Aby zadawa膰 pytania dotycz膮ce zaindeksowanej bazy wiedzy, nale偶y uruchomi膰 skrypt `prosty-rag.cmd` i wpisa膰 pytanie w aplikacji czatu na [http://localhost:8080](http://localhost:8080). Najbardziej trafne fragmenty zostan膮 wyszukane w bazie danych `prosty-rag.db`, a nast臋pnie zostanie za艂adowany model j臋zykowy Bielik 4.5B v3.0, kt贸ry wygeneruje odpowied藕 w oparciu o kontekst z bazy wiedzy.

### Budowanie

Aby zbudowa膰 w艂asn膮 wersj臋 asystenta AI, nale偶y 艣ci膮gn膮膰 skrypt `build.cmd` i uruchomi膰 go pod Windows/Linux/MacOS. Po udanym zbudowaniu powinien pojawi膰 si臋 nowy plik `prosty-rag.llamafile`.

### Podgl膮d

![Prosty RAG](https://cdn-uploads.huggingface.co/production/uploads/682faccfdf2cde4aac0985bc/8guqZD1SyqNExoafoDRcb.png)

### Lista zmian

- 0.1 - pierwsza wersja wieloplatformowa
- 0.2 - dodanie serwera embedfile z modelem osadzania BGE-M3
- 0.3 - dodanie obs艂ugi CSV, logowania do pliku `prosty-rag.log`
- 0.4 - wyszukiwanie hybrydowe za pomoc膮 FTS (BM25) i wektor贸w, oddzielne pobieranie modeli GGUF
- 0.5 - zmiana modelu osadzania na multilingual-e5-large-instruct

### Licencja

&copy; 2025 Jerzy G艂owacki na licencji Apache 2.0.