--- 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` 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 © 2025 Jerzy Głowacki na licencji Apache 2.0.