rag1

Bolmo RAG Toolkit

Zestaw narzędzi do eksperymentów z Retrieval-Augmented Generation (RAG) oparty na skrypcie rag.py. Repozytorium zawiera gotowy skrypt instalacyjny install.sh oraz dopasowany Makefile, które w kilka sekund przygotowują środowisko uruchomieniowe i dostarczają wygodne cele (install, run, clean).

Wymagania wstępne

Instalacja środowiska (install.sh)

  1. Nadaj plikowi uprawnienia wykonywalne:

    chmod +x install.sh
    
  2. Uruchom skrypt:

    ./install.sh
    

Skrypt:

Po zakończeniu aktywuj środowisko komendą source .venv/bin/activate.

Uwaga: jeśli pracujesz na starszej dystrybucji, upewnij się, że masz zainstalowane build-essential, rustc oraz cargo; nowe paczki powinny jednak instalować się z gotowych kółek (wheels) i nie wymagać kompilacji.

Przykładowa kolekcja docs/

Repozytorium zawiera katalog docs/ z wieloma formatami, które możesz wykorzystać do szybkiego testu pipeline’u:

Aby uruchomić demo na tych danych:

make run FOLDER=./docs QUERY="Co zawiera pakiet demo?"

Wyniki, z cytowaniem źródeł:

$ make run
CUDA_HOME=/usr/local/cuda .venv/bin/python rag.py --folder ./docs --query "Co to jest Bolmo?" --k 5
[rag] Ładowanie dokumentów z ./docs...
[rag] Załadowano 7 plików.
[rag] Chunkowanie dokumentów...
[rag] Chunkowanie zakończone – 7 fragmentów.
[rag] Ładowanie embeddera all-MiniLM-L6-v2...
[rag] Ładowanie istniejącego indexu FAISS...
[rag] Retrieval – wyszukiwanie 5 fragmentów...
[rag] Pobrano 5 fragmentów kontekstu.
[rag] Ładowanie modelu allenai/Bolmo-1B na urządzeniu cuda...
Loading checkpoint shards: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00, 90.62it/s]
[rag] Generowanie odpowiedzi...
[1] support.html
# Kontakt zespołem Bolmo

Napisz do nas na [help@bolmo.ai](mailto:help@bolmo.ai), aby uzyskać wsparcie.

* Aktualizacje produktu w każdy wtorek
  * Wsparcie 24/7 dla klientów enterprise

[2] faq.md
# Najczęstze pytania

## Czym jest Bolmo?
Bolmo to przykład systemu wspomagającego analizę dokumentów w modelu RAG.

## Jak korzystać z próbek?
Ustaw `FOLDER=./docs` podczas wywołania `make run`, aby przetestować pipeline na zróżnich plikach.

[3] overview.pdf
Bolmo RAG DemoTen PDF ilustruje obsÅugÄ plików binarnych w pipeline.Możesz zastÄpiÄ go wÅasnymi materiaÅami referencyjnymi.

[4] readme.txt
Bolmo RAG Sample Corpus
===============================

To demo the pipeline, point the --folder flag to this directory.
It contains multiple document formats that mirror real-world inputs.

[5] meeting_notes.docx
Spotkanie: Harmonogram wdrożeń
Ustalenia: Przygotować demo dla zespołu sprzedaży.

Konfiguracja modeli przez .env

  1. Sklonuj plik wzorcowy i ustaw zmienną:

    cp .env.example .env
    
  2. Otwórz .env i ustaw:

    • BOLMO_MODEL – model generatywny (domyślnie allenai/Bolmo-1B). Jeśli masz zasoby GPU, możesz przełączyć na allenai/Bolmo-7B.
    • BOLMO_EMBEDDER – sentence-transformer do częśći retrieval (domyślnie all-MiniLM-L6-v2). Możesz wskazać np. sentence-transformers/all-mpnet-base-v2.

Skrypt rag.py ładuje .env automatycznie dzięki python-dotenv, więc każda zmiana wartości jest widoczna przy kolejnym uruchomieniu make run.

Automatyzacja za pomocą Makefile

Makefile udostępnia zestaw celów:

make install                      # tworzy .venv poprzez install.sh
make run FOLDER=./docs QUERY="?"   # uruchamia rag.py z parametrami
make test                         # uruchamia pytest
make clean                        # usuwa katalog .venv
make docker-build                 # buduje obraz Dockera bolmo-rag
make docker-run FOLDER=... QUERY=... # buduje i uruchamia obraz z zamontowanymi docs/.env
make docker-shell                 # wchodzi do python:3.11 z repo pod /app
make docker-up / docker-logs / docker-stop # zarządza kontenerem w tle

Opis celów

Scenariusz „Docker + logi”

  1. Zbuduj obraz i odpal pipeline w tle:

    make docker-up FOLDER=./docs QUERY="Co to jest Bolmo?"
    
  2. Podejrzyj logi na żywo (działa jak docker logs -f):

    make docker-logs
    
  3. Po zakończeniu zatrzymaj kontener:

    make docker-stop
    

Jeżeli chcesz jedynie wejść w interaktywnego basha w obrazie referencyjnym, uruchom make docker-shell, a następnie w kontenerze wykonaj python -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt && make run ....

Przykładowe użycie celu run

make run FOLDER=./docs QUERY="Co to jest Bolmo?"

Zmodyfikuj wartości FOLDER i QUERY, aby wskazać własny zbiór dokumentów oraz pytanie kierowane do modułu RAG.

Reset i ponowna instalacja środowiska

Jeśli chcesz upewnić się, że pracujesz na świeżej konfiguracji, wykonaj kolejno:

make clean                              # usuwa poprzednią virtualenv
make install                            # ponownie tworzy środowisko i instaluje zależności
make run FOLDER=./docs QUERY="Co to jest Bolmo?"  # uruchamia RAG na próbkach z docs/

Pierwsze dwa kroki gwarantują czyste środowisko, a trzeci demonstruje pełne wywołanie pipeline’u na przykładowej kolekcji.

Dalsze kroki

Powodzenia w pracy z Bolmo RAG!

Bolmo RAG

A simple Retrieval-Augmented Generation (RAG) system for processing documents and answering queries based on their content.

Overview

Bolmo RAG allows you to index documents in a specified folder and query them using natural language. It supports three retrieval backends:

Installation

To set up the environment and install dependencies:

make install

Expected Outcome: This will create a virtual environment and install all necessary packages. You should see the installation process complete with a message indicating the environment is ready.

Usage

Build cache once, then query:

make index BACKEND=faiss FOLDER=./docs
make run   BACKEND=faiss FOLDER=./docs QUERY="Czym jest Bolmo?" K=5

Indexing Documents

Indexing requirements depend on the backend:

With FAISS Backend (Default)

make index BACKEND=faiss FOLDER=./docs

Expected Outcome: The system will process all supported document types in the specified folder, create chunks, and build a FAISS index. You should see a message like Cache/index gotowy. indicating the index is ready.

To force rebuild:

make reindex BACKEND=faiss FOLDER=./docs

With FAISS Baseline (No Cache)

No separate indexing step. Just run:

make run BACKEND=faiss_nocache FOLDER=./docs QUERY="Czym jest Bolmo?" K=5

With Qdrant Backend

make reindex BACKEND=qdrant FOLDER=./docs

Expected Outcome: Similar to FAISS, but the system will (via make reindex) attempt to start a local Qdrant container named qdrant-server and then ingest the document chunks into a Qdrant collection. You should see Ingest do Qdrant zakończony. upon completion.

Note: Ensure Docker is installed and running for Qdrant backend.

Querying

After indexing (if required), you can query the documents:

.venv/bin/python rag.py --backend faiss --folder ./docs --query "Czym jest Bolmo?"

Expected Outcome: The system will retrieve relevant document chunks and generate an answer based on the context using the Bolmo model. The response will be in Markdown format with citations to the source documents.

Specify Backend for Query

.venv/bin/python rag.py --backend qdrant --folder ./docs --query "Czym jest Bolmo?" --k 5

Expected Outcome: Same as above, but uses Qdrant for retrieval if the collection exists.

Reindexing

If documents change or you want to force a rebuild of the index:

make reindex BACKEND=faiss FOLDER=./docs

or for Qdrant:

make reindex BACKEND=qdrant FOLDER=./docs

Expected Outcome: The cache and index will be rebuilt from scratch, reflecting any changes in the documents.

Make targets

The default interface is via make:

make install
make run BACKEND=faiss FOLDER=./docs QUERY="..." K=5
make index BACKEND=faiss FOLDER=./docs
make query BACKEND=faiss FOLDER=./docs QUERY="..." K=5
make reindex BACKEND=faiss FOLDER=./docs

Backend Comparison

Environment Variables

You can customize settings via environment variables (see .env.example for defaults):

Benchmarks

There is a benchmark script that measures retrieval speed and a simple quality proxy (hit@k) for all three backends:

python benchmarks/benchmark_rag.py --folder ./docs --k 5 --reindex

More examples are in BENCHMARKS.md.

Tests

make test

Optional Qdrant smoke tests (requires running Qdrant):

RUN_QDRANT_TESTS=1 QDRANT_URL=http://localhost:6333 make test

Troubleshooting