BlogRAG
Jak asystent powinien odpowiadać na pytania zależne od tabel i arkuszy
Najpierw posortuj pytania. Na pytanie o jedną wartość w jednym wierszu można odpowiedzieć, pobierając ten wiersz jako tekst, o ile wiersz niesie ze sobą nazwy kolumn. Pytanie, które sumuje, filtruje, zlicza albo porównuje wiele wierszy, wymaga zapytania do danych, bo wyszukiwanie zwraca kilka chunków, a odpowiedź zależy od wszystkich wierszy. Przy każdej wyliczonej odpowiedzi pokazuj zapytanie i datę danych.
Trzy rodzaje pytań o tabele
- Wyszukanie: jedna wartość z kontekstem, na przykład okres wypowiedzenia u jednego dostawcy albo cena jednej części
- Obliczenie: sumy, średnie, rankingi, zliczenia albo filtry na wielu wierszach
- Wyjaśnienie: co oznacza kolumna, dlaczego zmieniła się liczba albo jaka reguła dała wartość, co zwykle jest w dokumencie obok tabeli
Większość asystentów dostaje wszystkie trzy wymieszane. Pytanie projektowe brzmi: jak rozpoznać każdy rodzaj i skierować go na ścieżkę, która potrafi na niego odpowiedzieć.
Dlaczego wyszukiwanie top-k nie zsumuje kolumny
Wyszukiwanie wybiera kilka chunków najbardziej podobnych do pytania. Suma z trzech tysięcy pozycji zamówień wymaga ich wszystkich, a żaden ranking podobieństwa nie zwróci dokładnie tych wierszy, które zwróciłby filtr. Model sumuje to, co dostał, i pewnie przedstawia wynik. Brakujące wiersze wyglądają jak mniejsza liczba, a nie jak błąd.
Wklejenie całego arkusza do promptu omija problem wyboru przy małych tabelach, ale liczenie na wielu liczbach w tekście nadal jest zawodne. Baza danych albo dataframe robi to dokładnie.
Jak przygotować wiersze do wyszukiwania
Na potrzeby wyszukiwania pojedynczych wartości indeksuj każdy wiersz jako osobny dokument. Azure AI Search oferuje na przykład tryb parsowania delimitedText, który zamienia każdą linię pliku CSV w osobny dokument; bez niego cały plik staje się jednym dokumentem. Indekser SQL mapuje pojedynczą tabelę albo widok wiersz po wierszu i zostawia wartości dziesiętne i pieniężne jako tekst, bo konwersja na liczby zmiennoprzecinkowe straciłaby precyzję.
Zapisz każdy wiersz jako tekst, który człowiek mógłby przeczytać samodzielnie: nazwy kolumn obok wartości, jednostki i waluta wypisane wprost, nazwa arkusza albo tabeli i data eksportu. Wiersz zawierający tylko 48213, 3, 0.15, PL jest nie do znalezienia po znaczeniu i niejednoznaczny dla modelu.
Ścieżka zapytań do obliczeń
Do obliczeń pozwól modelowi wygenerować zapytanie do znanego schematu, uruchom je w bazie i odpowiadaj na podstawie wyniku. LlamaIndex dokumentuje ten wzorzec text-to-SQL i radzi wskazywać tabele do odpytania, bo ładowanie wszystkich schematów może przepełnić kontekst; przy wielu tabelach najpierw pobiera właściwy schemat. Ten sam przewodnik ostrzega, że wykonywanie dowolnego SQL jest ryzykowne, i zaleca ograniczone role, bazy tylko do odczytu i sandboxing.
W praktyce dodajemy kolejne ograniczenia: rolę bazodanową widzącą tylko zatwierdzone widoki, filtry wierszy dla osoby pytającej, limity czasu i liczby wierszy. Dla pytań zadawanych co tydzień predefiniowane, sparametryzowane zapytania udostępnione jako narzędzia łatwiej przetestować niż dowolny SQL. Tak czy inaczej odpowiedź powinna pokazywać użyte zapytanie albo raport, wynik, liczbę wierszy i datę danych, żeby dało się ją sprawdzić.
Jeden eksport, pytanie po pytaniu
Poniższy przykład jest zmyślony. Jeden eksport sprzedaży zasila obie ścieżki: wiersze są indeksowane do wyszukiwania i ładowane do tabeli do zapytań.
Source: monthly sales export, one row per order line (hypothetical)
Question Route Why
Discount on line 3 of order 48213? retrieval one line row, found by
order ID + line number
Which region had the highest revenue in Q2? query aggregates every Q2 row
How many Polish orders totalled over 10,000 EUR? query sum line amounts per order,
then count distinct orders
above the threshold
Why is the Q2 figure lower than in the board pack? explain needs the definitions note,
then a query to reconcile
Answer contract for "query":
show the query or named report used, the result,
the data timestamp and the row count it coveredTestuj router równie starannie jak obie ścieżki. Pytanie obliczeniowe skierowane do wyszukiwania zwraca wiarygodnie wyglądającą błędną liczbę, a taką trudniej zauważyć niż komunikat o błędzie.
Arkusze, które zachowują się jak dokumenty
Wiele arkuszy biznesowych nie jest tabelami. Mają scalone nagłówki, kilka tabel na jednym arkuszu, notatki wpisane w komórki i liczby, które istnieją dopiero po przeliczeniu formuł. Kilka kopii krąży mailem. Zanim podłączysz taki plik, ustal, która kopia jest obowiązująca i czy dane nie powinny najpierw trafić do prawdziwej tabeli ze zdefiniowanymi kolumnami. Takie uporządkowanie jest często warte więcej niż sam asystent.
Pytania
Czy model może sam liczyć?
Przy kilku liczbach często liczy dobrze, ale nie wiesz, kiedy się myli. Dokładne wyniki powinny pochodzić z bazy danych, dataframe albo narzędzia obliczeniowego, a model wybiera operację i objaśnia wynik.
Czy text-to-SQL można udostępnić wszystkim w firmie?
Tylko z tymi samymi regułami dostępu, które ludzie już mają. Uruchamiaj zapytania w roli ograniczonej do zatwierdzonych widoków tylko do odczytu, stosuj filtry wierszy dla użytkownika i loguj każde zapytanie. Jeśli tych kontroli nie ma, zacznij od predefiniowanych zapytań.
A co z tabelami w plikach PDF i Word?
Wyodrębniaj je jako tabele, a nie ciągły tekst. Analiza układu strony potrafi odtworzyć wiersze i nagłówki, a długie tabele rozciągnięte na kilka stron wymagają powtórzenia nagłówka w każdym chunku. Jeśli liczby służą też do obliczeń, załaduj je dodatkowo do magazynu strukturalnego, a dokument zachowaj jako dowód przy wyszukiwaniu wartości.
Powiązane usługi
Tworzenie systemów RAG
Asystenci odpowiadający na podstawie twoich wewnętrznych dokumentów, z uprawnieniami, źródłami i testami na twoich pytaniach.
Inżynieria i architektura AI
Asystenci, interfejsy głosowe i agenci w produktach, które sprzedajesz, razem z serwowaniem modeli i wyszukiwaniem pod spodem.
Tworzenie serwerów MCP
Serwery MCP łączące zatwierdzone wewnętrzne API z asystentami AI, z wąskimi uprawnieniami, akceptacją zmian i testami.
Więcej z bloga
Chunking dokumentów biznesowych
Jak dzielić umowy, polityki i długie procedury tak, żeby odpowiedź pozostała przy swoich wyjątkach i definicjach, oraz jak wybrać strategię eksperymentalnie na własnych pytaniach.
Uprawnienia w RAG
Jak reguły dostępu trafiają z systemów źródłowych do indeksu wyszukiwania, gdzie się gubią i które testy negatywne pokazują, że nikt nie pobierze tego, czego nie może otworzyć.
Wyszukiwanie czy generowanie?
Procedura diagnostyczna, która pokazuje, czy błędna odpowiedź RAG zaczęła się w ingestii, wyszukiwaniu, rerankingu czy w modelu, z oznaczonymi dowodami i śladem dla każdego pytania.
Porozmawiaj z inżynierem
Przyjdź z jednym zadaniem, które chcesz usprawnić. Rozmowa trwa 30 minut i nie wymaga dostępu do twoich systemów ani danych.
Rezerwacja odbywa się w Kalendarzu Google.
Wolisz najpierw napisać? Zostaw adres e-mail i kilka zdań, a odpowiemy, proponując terminy.
Sprawdź wersję roboczą w swoim programie pocztowym
Wyślij ją stamtąd, a inżynier odpowie ci osobiście, proponując terminy 30-minutowej rozmowy. Jeśli wersja robocza się nie otworzyła, napisz do nas na adres miki@cloudsail.com.