Jednostka 5 / 11

Architektura asystenta, która komunikuje się z danymi firmy

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:

  1. Złącza: Złącza pobierające dane ze źródeł — wiki, systemu zgłoszeń, magazynu plików, bazy danych, poczty e-mail.
  2. Normalizacja: Konwersja różnych formatów (PDF, HTML, DOCX) na czysty tekst; czyszczenie nagłówka/stopki.
  3. Porcjowanie + metadane: Porcjowanie i tagowanie (źródło, data, autorytet).
  4. Osadzanie + ładowanie: Zapis wektorów i metadanych do bazy wektorów.

Zapytanie o komponenty potoku:

  1. Wstępne przetwarzanie zapytań: przepisywanie, decentralizacja.
  2. Pobieranie: wyszukiwanie hybrydowe + filtr metadanych + zmiana rankingu.
  3. Szybkie tworzenie: Umieszczenie kontekstu + pytania + instrukcji w szablonie.
  4. Generacja: Ugruntowana (kontekstowa) odpowiedź na podstawie modelu + źródeł.
  5. 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.