prosty-rag / README.md
jglowa's picture
Update README.md
3f40317 verified
---
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.