SERIA · LOCAL AI LAB

RAG bez chmury — agent, który zna dokumentację

Budowa lokalnej bazy wiedzy z PDF-ów, instrukcji, katalogów i procedur. Z OCR dla skanów i odpowiedziami, które zawsze podają numer strony źródła.

SZOPA NA WSI2 MIN CZYTANIA
RAG bez chmury — agent, który zna dokumentację
RAG.LOCALLOCAL AI LAB · 10 KROKÓW
OFFLINE
WEJŚCIEPRZETWARZANIENARZĘDZIEMAGAZYNWYJŚCIE01DOKUMENTPDF · DOCX · skan02EKSTRAKCJATEKSTU03OCR SKANÓW04PODZIAŁ NAFRAGMENTY512 tokenów05METADANEplik, strona, dział06EMBEDDINGI07BAZA WEKTOROWA08ZAPYTANIE09DOPASOWANIE10ODPOWIEDŹ ZEŹRÓDŁEMINDEKS WEKTOROWY768 WYMIARÓWPDF / DOCXfragment 1 · 512 tok.fragment 2 · 512 tok.fragment 3 · 512 tok.fragment 4 · 512 tok.EMBEDDINGIVECTOR DB+ ŹRÓDŁO I STRONA
DOKUMENTY NIE OPUSZCZAJĄ SERWERA · KAŻDA ODPOWIEDŹ Z NUMEREM STRONY ŹRÓDŁA

Model nie zna twoich procedur, kart katalogowych ani instrukcji maszyn. RAG jest sposobem, żeby je poznał bez trenowania czegokolwiek — i bez wysyłania dokumentów na zewnątrz.

Problem

Dokumentacja techniczna żyje w PDF-ach: karty produktów, instrukcje obsługi, protokoły pomiarowe, stare rysunki w formie skanów. Znalezienie w nich konkretnej wartości zajmuje kilka minut przeglądania. Wyszukiwanie pełnotekstowe nie pomaga, gdy nie pamiętasz dokładnego słowa użytego w dokumencie.

Ekstrakcja i OCR

Pierwszy etap jest najbardziej niewdzięczny. PDF-y dzielą się na trzy grupy: z warstwą tekstową (łatwe), skany (wymagają OCR) i hybrydy — dokumenty z tekstem, w których najważniejsze dane siedzą w obrazkach tabel.

Ta trzecia grupa jest najbardziej podstępna: ekstrakcja kończy się sukcesem, wygląda poprawnie, a brakuje w niej dokładnie tych liczb, o które ktoś zapyta. Dlatego OCR uruchamiamy także dla dokumentów z warstwą tekstową, jeśli udział obrazów przekracza próg.

Dokumentacja techniczna — najczęstsze źródło w lokalnej bazie wiedzy
Dokumentacja techniczna — najczęstsze źródło w lokalnej bazie wiedzy · fot. City of Seattle, Engineering Department · Public domain · Wikimedia Commons

Podział na fragmenty i metadane

Fragmenty po około 512 tokenów, z zakładką kilkudziesięciu tokenów między kolejnymi, żeby zdanie przecięte na granicy nie zniknęło z obu stron. Ważniejsze od samego rozmiaru jest to, co dokładamy obok.

  • nazwa pliku i numer strony — bez tego odpowiedź jest bezużyteczna, bo nie da się jej zweryfikować,
  • dział i typ dokumentu — pozwala zawęzić wyszukiwanie do instrukcji albo do kart katalogowych,
  • data — przy dwóch sprzecznych wersjach procedury wygrywa nowsza.

Wyszukiwanie

Samo podobieństwo wektorowe zawodzi przy symbolach i numerach katalogowych — „ABDA7517F2” dla modelu embeddingów wygląda jak losowy ciąg. Dlatego łączymy wyszukiwanie wektorowe z klasycznym pełnotekstowym i scalamy oba rankingi. Ta jedna zmiana dała największy skok trafności w całym projekcie.

Interfejs wyszukiwarki pokazujący znalezione fragmenty dokumentów wraz ze źródłem

Odpowiedź ze źródłem

Model dostaje wyłącznie znalezione fragmenty i wyraźną instrukcję: jeśli odpowiedzi nie ma we fragmentach, powiedz, że jej nie znalazłeś. Każde zdanie odpowiedzi kończy się odnośnikiem do pliku i strony.

To wymaganie zmienia charakter narzędzia. Bez źródeł jest to ciekawostka, której nikt nie ufa. Ze źródłami staje się skrótem do dokumentu — użytkownik i tak często klika w odnośnik, ale trafia od razu na właściwą stronę.

Wynik

Baza obejmuje instrukcje maszyn, karty materiałów i własne procedury. Czas znalezienia parametru spadł z kilku minut do kilkunastu sekund. Koszt utrzymania to jeden proces indeksujący, uruchamiany po dorzuceniu nowych plików do katalogu.

TAGI:AIAUTOMATIONCODE