Zyski:
- Projektowanie komponentów i przepływu danych kompleksowego asystenta RAG dla przedsiębiorstwa
- Łączenie danych z wielu źródeł (wiki, bilety, pliki PDF, baza danych) w jednego asystenta
- Podejmuj decyzje dotyczące architektury dotyczące skalowalności, buforowania i opóźnień
W poprzednich rozdziałach uczyliśmy się poszczególnych części: osadzanie, baza danych wektorowych, fragmentowanie, pobieranie. Teraz połączmy to i zbudujmy kompleksową architekturę asystenta, który komunikuje się z danymi Twojej firmy. Celem jest, aby pracownik zadał pytanie: „Jaka jest nasza polityka dotycząca urlopów?” System, w którym ludzie mogą zadawać pytania, odpowiedzi opierają się na prawdziwych dokumentach wewnętrznych, cytatach i łączą wiele źródeł danych. Jednostka ta przetwarza całą architekturę, przepływ danych i decyzje na poziomie produkcji.
Komponenty typu end-to-end
Korporacyjny asystent RAG składa się z dwóch odrębnych linii. Linia indeksowania (offline) przygotowuje dane; Wiersz zapytania (online) odpowiada na pytanie.
Elementy linii indeksującej:
- Złącza: Złącza pobierające dane ze źródeł — wiki, systemu zgłoszeń, magazynu plików, bazy danych, poczty e-mail.
- Normalizacja: Konwersja różnych formatów (PDF, HTML, DOCX) na czysty tekst; czyszczenie nagłówka/stopki.
- Porcjowanie + metadane: Porcjowanie i tagowanie (źródło, data, autorytet).
- Osadzanie + ładowanie: Zapis wektorów i metadanych do bazy wektorów.
Zapytanie o komponenty potoku:
- Wstępne przetwarzanie zapytań: przepisywanie, decentralizacja.
- Pobieranie: wyszukiwanie hybrydowe + filtr metadanych + zmiana rankingu.
- Szybkie tworzenie: Umieszczenie kontekstu + pytania + instrukcji w szablonie.
- Generacja: Ugruntowana (kontekstowa) odpowiedź na podstawie modelu + źródeł.
- Przetwarzanie końcowe: formatowanie cytatów, kontrola bezpieczeństwa, rejestrowanie.
Wskazówka: Fizycznie oddziel linię indeksowania od linii zapytania. Indeksowanie jest powolne i okresowe (działa partiami przez noc); Kierunek zapytania powinien być lekki i natychmiastowy. Mieszanie dwóch linii wymusza intensywne przetwarzanie, podczas gdy użytkownik czeka.
Wizualizacja przepływu danych
[INDEKSOWANIE - offline] Zasoby → Normalizuj → Kawałek+Metadane → Osadź → Wektorowa baza danych (wiki, bilet, PDF, DB)[ZAPYTANIE - online]Pytanie użytkownika → Przetwarzanie wstępne → Pobieranie (hybryda+filtr+ponowna ranga) → Podpowiedź (kontekst+pytanie+instrukcja) → Model → Odpowiedź+Źródło → Użytkownik
Łączenie danych z wielu źródeł
W prawdziwych firmach odpowiedź nie kończy się w jednym miejscu. „Jak dokonać zwrotu pieniędzy dla klienta?” Odpowiedź na pytanie znajdziesz zarówno w artykule pomocy (procedura), w historii zgłoszeń (realne przykłady), jak i w dokumencie PDF polityki (regulamin). Asystent powinien przeszukać je wszystkie w jednej puli.
Punkt krytyczny: podczas łączenia zasobów w jeden magazyn wektorowy każdy fragment musi zawierać metadane „source_tour”. Możesz więc przeszukać je wszystkie i w razie potrzeby przefiltrować, na przykład „podaj tylko oficjalne zasady”. Ponadto różne źródła mają różny poziom wiarygodności: oficjalna polityka > artykuł pomocy > notatka pracownika. Możesz określić ten priorytet w ponownym rankingu lub podpowiedzi.
Źródło
Typ treści
zaufaj
Częstotliwość aktualizacji
Polityka PDF
oficjalna zasada
wysoki
miesięcznie
Artykuł pomocy
Procedura
średnio-wysoki
tygodniowo
Historia biletów
prawdziwa próbka
średni
Ciągłe
wiki
Notatka mieszana/bieżąca
Zmienna
Ciągłe
Skalowalność, pamięć podręczna i opóźnienie
W produkcji wyróżniają się trzy kwestie. Opóźnienie: doświadczenie pogarsza się, gdy użytkownik czeka dłużej niż 2 sekundy. Rozwiązanie: wyświetl odpowiedź w formie strumieniowej — jest ona wylewana na ekran w trakcie pisania modelu. Pamięć podręczna: w przypadku często zadawanych pytań i powtarzających się kontekstów pamięć podręczna zwiększa szybkość i zmniejsza koszty. Skala: w miarę zwiększania się liczby użytkowników konieczna jest możliwość skalowania wyszukiwania i modelowania wywołań w poziomie.
Praktyczna zasada dotycząca kosztów: najdroższym krokiem jest zwykle liczba tokenów trafiających do większego modelu. Dlatego ograniczenie kontekstu do 4 dobrych części poprzez zmianę rankingu poprawia zarówno jakość, jak i koszty. Powszechnym projektem jest użycie mniejszego/szybszego modelu do prostej klasyfikacji lub routingu oraz mocniejszego modelu do ostatecznej odpowiedzi (np. claude-opus-4-8).
Uwaga: nie konfiguruj indeksowania w trybie „zrób to raz i zapomnij”. Dokumenty są zmieniane, usuwane, dodawane. Ustal strategię ponownego indeksowania: wykrywaj zmienione dokumenty i przetwarzaj ponownie tylko je. Nieaktualny indeks generuje odpowiedź, która wydaje się aktualna, ale jest błędna.
Słaba architektura / silna architektura
Słabe (pojedynczy skrypt, wszystko pomieszane):
Kiedy użytkownik pyta: przeczytaj w tym momencie dokumenty, zniszcz je, osadź, przeszukaj, odpowiedz.# Problem: dla każdego pytania powtarzane jest całe indeksowanie; sekundy opóźnienia, # brak separacji źródeł, brak filtra, brak odświeżania.
Potężny (podzielone potoki + metadane + pamięć podręczna + przesyłanie strumieniowe):
Indeksowanie: wsadowe uruchamianie w nocy, odświeżanie zmienionych dokumentów. Zapytanie: lekka linia — przetwarzanie wstępne → pobieranie hybrydowe+filtr → rerank → podpowiedź → model (streaming) → cytat → log. Często zadawane pytania i źródła są przechowywane w pamięci podręcznej.
Trzy mini etui
Przypadek 1 — Zamieszana linia, duże opóźnienie. Startup napisał skrypt, który ponownie przetwarza pliki PDF przy każdym pytaniu; Każda odpowiedź trwała średnio 11 sekund. Kiedy linia indeksowania została oddzielona, a dane zostały wcześniej przesłane do magazynu wektorów, czas zapytania spadł do 1,3 sekundy, a przy przesyłaniu strumieniowym „pierwsze słowo” pojawiło się po 400 ms.
Przypadek 2 — Zbyt wiele zasobów, zły priorytet. Asystent pomocy technicznej przywiązał taką samą wagę do pliku PDF z polityką i starych notatek o biletach; Model czasami jako oficjalną zasadę podawał błędną ocenę pracownika sprzed dwóch lat. Po dodaniu do podpowiedzi metadanych source_tour i instrukcji „uwzględnij oficjalną politykę w przypadku konfliktu”, liczba błędów o fałszywym priorytecie została zmniejszona o 89%.
Przypadek 3 – Nieaktualny indeks. Asystent HR pracował z indeksem, który nie był aktualizowany przez 3 miesiące; Polityka urlopowa uległa zmianie, ale asystentka mówiła jak dawniej. Po zainstalowaniu codziennego odświeżania, które wykrywa zmienione pliki, bieżący współczynnik odpowiedzi wzrósł z 70% do 99%.
Typowe błędy
- Mieszanie wierszy indeksowania i zapytań: intensywne przetwarzanie odbywa się, gdy użytkownik czeka; opóźnienie eksploduje.
- Nie umieszczanie typu źródła w metadanych: brak priorytetyzacji i filtrowania; Niezaufane źródło wydaje się być oficjalne.
- Brak ustanowienia strategii odświeżania: Indeks staje się nieaktualny; Wyświetlane są błędne odpowiedzi, które wydają się aktualne.
- Pomiń przesyłanie strumieniowe: użytkownik patrzy na pusty ekran; Postrzegane opóźnienie staje się duże.
- Korzystanie z największego modelu na każdym etapie: Niepotrzebny wzrost kosztów; Sterowanie zostaw mniejszemu modelowi.
Podsumowując
- Korporacyjny asystent RAG składa się z dwóch odrębnych linii: indeksowania offline i zapytań online; oddzielić je fizycznie.
- Indeksowanie = łącznik + normalizacja + fragment/metadane + osadzanie/przesyłanie; zapytanie = przetwarzanie wstępne + pobieranie + monit + generowanie + przetwarzanie końcowe.
- Dane z wielu źródeł są łączone w jedno repozytorium, ale metadane typu źródła i priorytet zaufania zostają zachowane.
- Przesyłanie strumieniowe i pamięć podręczna pod kątem opóźnień, ograniczanie kontekstu i wybór modelu ze względu na koszty mają kluczowe znaczenie.
- Bez ponownego indeksowania indeks staje się nieaktualny; Regularnie przetwarzaj ponownie zmieniające się dokumenty.
Zadanie aplikacji
Narysuj schemat architektoniczny asystenta własnego zespołu. (1) Zidentyfikuj co najmniej trzy rzeczywiste źródła danych i zapisz dla każdego potrzebę łącznika, częstotliwość aktualizacji i poziom zaufania. (2) Narysuj oddzielnie linie indeksowania i zapytania za pomocą diagramu ze strzałkami prostokątnymi. (3) „Gdzie w tym asystencie mogę zmniejszyć opóźnienia i koszty?” Napisz co najmniej dwie konkretne decyzje na to pytanie. (4) W jednym zdaniu opisz swoją strategię odświeżania: który zasób będzie reindeksowany i jak często?
lista kontrolna
- [ ] Potrafię narysować linie indeksowania i zapytania oddzielnie i przy użyciu odpowiednich komponentów.
- [ ] Potrafię łączyć dane z wielu źródeł z typem_źródła i priorytetem zaufania.
- [ ] Mogę podejmować decyzje dotyczące przesyłania strumieniowego/pamięci podręcznej dotyczące opóźnień i wyboru modelu pod kątem kosztów.
- [ ] Wiem, dlaczego strategia ponownego indeksowania jest niezbędna.
- [ ] Pamiętam, że najdroższym krokiem w mojej architekturze jest zazwyczaj token, który trafia do większego modelu.