Pobieranie rozszerzonej generacji (RAG) w usłudze Azure Databricks
Ten artykuł zawiera omówienie pobierania rozszerzonej generacji (RAG) i opis obsługi aplikacji RAG w usłudze Azure Databricks.
Co to jest pobieranie rozszerzonej generacji?
RAG to generowanie wzorca projektowego sztucznej inteligencji, który obejmuje połączenie dużego modelu językowego (LLM) z zewnętrznym pobieraniem wiedzy. Funkcja RAG jest wymagana do łączenia danych w czasie rzeczywistym z aplikacjami generacyjnymi sztucznej inteligencji. W ten sposób zwiększa dokładność i jakość aplikacji, podając dane jako kontekst do usługi LLM w czasie wnioskowania.
Platforma Databricks udostępnia zintegrowany zestaw narzędzi, które obsługują następujące scenariusze RAG.
Typ rag | opis | Przykładowy przypadek użycia |
---|---|---|
Dane bez struktury | Korzystanie z dokumentów — pliki PDF, witryny typu wiki, zawartość witryny internetowej, dokumenty Google lub Microsoft Office itd. | Chatbot over product documentation (Czatbot dotyczący dokumentacji produktu) |
Dane strukturalne | Korzystanie z danych tabelarycznych — tabele różnicowe, dane z istniejących interfejsów API aplikacji. | Chatbot w celu sprawdzenia stanu zamówienia |
Wywoływanie narzędzi i funkcji | Wywołaj interfejsy API innych firm lub wewnętrznych, aby wykonywać określone zadania lub aktualizować stany. Na przykład wykonywanie obliczeń lub wyzwalanie biznesowego przepływu pracy. | Chatbot do składania zamówienia |
Agenci | Dynamicznie zdecyduj, jak reagować na zapytanie użytkownika przy użyciu usługi LLM, aby wybrać sekwencję akcji. | Chatbot zastępujący agenta obsługi klienta |
Architektura aplikacji RAG
Poniżej przedstawiono składniki tworzące aplikację RAG.
Aplikacje RAG wymagają potoku i składnika łańcucha w celu wykonania następujących czynności:
- Indeksowanie potoku, który pozyskuje dane ze źródła i je indeksuje. Te dane mogą być ustrukturyzowane lub nieustrukturyzowane.
- Pobieranie i generowanie To jest rzeczywisty łańcuch RAG. Pobiera ono zapytanie użytkownika i pobiera podobne dane z indeksu, a następnie przekazuje dane wraz z zapytaniem do modelu LLM.
Na poniższym diagramie przedstawiono następujące podstawowe składniki:
Przykład rag danych nieustrukturyzowanych
W poniższych sekcjach opisano szczegóły potoku indeksowania i łańcucha RAG w kontekście przykładu RAG danych bez struktury.
Potok indeksowania w aplikacji RAG
W poniższych krokach opisano potok indeksowania:
- Pozyskiwanie danych z zastrzeżonego źródła danych.
- Podziel dane na fragmenty, które mogą mieścić się w oknie kontekstowym podstawowego modułu LLM. Ten krok obejmuje również analizowanie danych i wyodrębnianie metadanych. Te dane są często określane jako baza wiedzy, na których szkolony jest podstawowy moduł LLM.
- Użyj modelu osadzania, aby utworzyć wektorowe osadzanie fragmentów danych.
- Przechowuj osadzanie i metadane w bazie danych wektorów, aby były dostępne do wykonywania zapytań przez łańcuch RAG.
Pobieranie przy użyciu łańcucha RAG
Po przygotowaniu indeksu można obsłużyć łańcuch RAG aplikacji w celu odpowiedzi na pytania. Poniższe kroki i diagram opisują sposób, w jaki aplikacja RAG odpowiada na przychodzące żądanie.
- Osadź żądanie przy użyciu tego samego modelu osadzania, który został użyty do osadzania danych w baza wiedzy.
- Wykonaj zapytanie względem bazy danych wektorów, aby przeprowadzić wyszukiwanie podobieństwa między osadzonym żądaniem a osadzonymi fragmentami danych w bazie danych wektorów.
- Pobierz fragmenty danych, które są najbardziej istotne dla żądania.
- Przekaż odpowiednie fragmenty danych i żądanie do dostosowanego modułu LLM. Fragmenty danych zapewniają kontekst, który pomaga usłudze LLM wygenerować odpowiednią odpowiedź. Często usługa LLM ma szablon dotyczący formatowania odpowiedzi.
- Wygeneruj odpowiedź.
Na poniższym diagramie przedstawiono ten proces:
Tworzenie aplikacji RAG za pomocą usługi Azure Databricks
Usługa Databricks oferuje następujące możliwości ułatwiające tworzenie aplikacji RAG.
- Wykaz aparatu Unity na potrzeby zapewniania ładu, odnajdywania, przechowywania wersji i kontroli dostępu do danych, funkcji, modeli i funkcji.
- Notesy i przepływy pracy na potrzeby tworzenia i organizowania potoku danych.
- Tabele różnicowe do przechowywania danych ustrukturyzowanych i fragmentów danych bez struktury oraz osadzania.
- Wyszukiwanie wektorów udostępnia bazę danych wektorów z możliwością wykonywania zapytań, która przechowuje wektory osadzania i można je skonfigurować do automatycznej synchronizacji z baza wiedzy.
- Model usługi Databricks służący do wdrażania maszyn LLM i hostowania łańcucha RAG. Możesz skonfigurować dedykowany model obsługujący punkt końcowy specjalnie na potrzeby uzyskiwania dostępu do najnowocześniejszych otwartych maszyn LLM za pomocą interfejsów API modelu foundation lub modeli innych firm z modelami zewnętrznymi.
- MLflow na potrzeby śledzenia opracowywania łańcuchów RAG i oceny LLM.
- Inżynieria cech i obsługa. Zwykle dotyczy to scenariuszy rag danych strukturalnych.
- Tabele online. Tabele online można służyć jako interfejs API o małych opóźnieniach w celu uwzględnienia danych w aplikacjach RAG.
- Lakehouse Monitoring for data monitoring and tracking model prediction quality and drift using automatic payload logging with inference tables (Monitorowanie usługi Lakehouse na potrzeby monitorowania i śledzenia jakości przewidywania modelu i dryfu przy użyciu automatycznego rejestrowania ładunków z tabelami wnioskowania).
- Plac zabaw dla sztucznej inteligencji. Interfejs użytkownika oparty na czacie do testowania i porównywania maszyn LLM.
Architektura RAG w usłudze Azure Databricks
Poniższe diagramy architektury pokazują, gdzie każda funkcja usługi Azure Databricks pasuje do przepływu pracy RAG. Aby zapoznać się z przykładem, zobacz pokaz Deploy Your LLM Chatbot With Retrieval Augmented Generation (Wdrażanie czatbota LLM za pomocą pobierania rozszerzonej generacji).
Przetwarzanie danych bez struktury i osadzania zarządzanych przez usługę Databricks
W przypadku przetwarzania danych bez struktury i osadzania zarządzanych przez usługę Databricks przedstawiono następujące kroki diagramu i diagram:
- Pozyskiwanie danych z zastrzeżonego źródła danych. Te dane można przechowywać w woluminie tabeli delty lub w wykazie aparatu Unity.
- Dane są następnie podzielone na fragmenty, które mogą mieścić się w oknie kontekstowym podstawowego modułu LLM. Ten krok obejmuje również analizowanie danych i wyodrębnianie metadanych. Do wykonywania tych zadań można użyć przepływów pracy usługi Databricks, notesów usługi Databricks i tabel różnicowych na żywo. Te dane są często określane jako baza wiedzy, na których szkolony jest podstawowy moduł LLM.
- Analizowane i fragmentowane dane są następnie używane przez model osadzania w celu utworzenia osadzania wektorów. W tym scenariuszu usługa Databricks oblicza osadzanie w ramach funkcji wyszukiwania wektorowego, która używa funkcji modelowania do udostępniania modelu osadzania.
- Gdy funkcja Wyszukiwania wektorowego oblicza osadzanie, usługa Databricks przechowuje je w tabeli delty.
- Również w ramach wyszukiwania wektorowego osadzanie i metadane są indeksowane i przechowywane w bazie danych wektorów, aby były dostępne do wykonywania zapytań przez łańcuch RAG. Funkcja wyszukiwania wektorowego automatycznie oblicza osadzanie dla nowych danych dodawanych do tabeli danych źródłowych i aktualizuje indeks wyszukiwania wektorowego.
Przetwarzanie danych bez struktury i osadzania zarządzanych przez klienta
W przypadku przetwarzania danych bez struktury i osadzania zarządzanych przez klienta przedstawiono następujące kroki i diagram:
- Pozyskiwanie danych z zastrzeżonego źródła danych. Te dane można przechowywać w tabeli delty lub woluminie wykazu aparatu Unity.
- Następnie można podzielić dane na fragmenty, które mogą mieścić się w oknie kontekstowym podstawowego modułu LLM. Ten krok obejmuje również analizowanie danych i wyodrębnianie metadanych. Do wykonywania tych zadań można użyć przepływów pracy usługi Databricks, notesów usługi Databricks i tabel różnicowych na żywo. Te dane są często określane jako baza wiedzy, na których szkolony jest podstawowy moduł LLM.
- Następnie przeanalizowane i fragmentowane dane mogą być używane przez model osadzania w celu utworzenia osadzania wektorów. W tym scenariuszu samodzielnie obliczasz osadzanie i możesz użyć funkcji Modelowanie obsługujące do obsługi osadzania modelu.
- Po obliczeniu osadzania można je przechowywać w tabeli delty, którą można zsynchronizować z wyszukiwaniem wektorowym.
- W ramach wyszukiwania wektorowego osadzanie i metadane są indeksowane i przechowywane w bazie danych wektorów, aby były dostępne do wykonywania zapytań przez łańcuch RAG. Funkcja wyszukiwania wektorowego automatycznie synchronizuje nowe osadzanie dodawane do tabeli delty i aktualizuje indeks wyszukiwania wektorów.
Przetwarzanie danych ustrukturyzowanych
W przypadku przetwarzania danych ustrukturyzowanych pokazano następujące kroki i diagram:
- Pozyskiwanie danych z zastrzeżonego źródła danych. Te dane można przechowywać w tabeli delty lub woluminie wykazu aparatu Unity.
- W przypadku inżynierii cech można używać notesów usługi Databricks, przepływów pracy usługi Databricks i tabel delta live tables.
- Utwórz tabelę funkcji. Tabela funkcji to tabela delty w wykazie aparatu Unity, która ma klucz podstawowy.
- Utwórz tabelę online i hostuj ją w punkcie końcowym obsługującym funkcję. Punkt końcowy zostanie automatycznie zsynchronizowany z tabelą funkcji.
Przykładowy notes ilustrujący korzystanie z tabel online i funkcji obsługujących aplikacje RAG można znaleźć w tabelach online usługi Databricks i funkcjach obsługujących punkty końcowe dla przykładowego notesu RAG.
Łańcuch RAG
Po przygotowaniu indeksu można obsłużyć łańcuch RAG aplikacji w celu odpowiedzi na pytania. Poniższe kroki i diagram opisują sposób działania łańcucha RAG w odpowiedzi na pytanie przychodzące.
- Pytanie przychodzące jest osadzone przy użyciu tego samego modelu osadzania, który został użyty do osadzania danych w baza wiedzy. Obsługa modelu służy do obsługi modelu osadzania.
- Po osadzonym pytaniu można użyć wyszukiwania wektorowego, aby przeprowadzić wyszukiwanie podobieństwa między osadzonym pytaniem a osadzonymi fragmentami danych w bazie danych wektorów.
- Po pobraniu fragmentów danych, które są najbardziej istotne dla żądania, te fragmenty danych wraz z odpowiednimi funkcjami z funkcji obsługujących i osadzone pytanie są używane w dostosowanym module LLM do przetwarzania końcowego przed wygenerowaniem odpowiedzi.
- Fragmenty danych i funkcje zapewniają kontekst, który pomaga llM wygenerować odpowiednią odpowiedź. Często usługa LLM ma szablon dotyczący formatowania odpowiedzi. Po raz kolejny usługa Modelowanie służy do obsługi usługi LLM. Możesz również użyć usługi Unity Catalog i Lakehouse Monitoring, aby przechowywać dzienniki i monitorować odpowiednio przepływ pracy łańcucha.
- Wygeneruj odpowiedź.
Dostępność w regionach
Funkcje, które obsługują tworzenie aplikacji RAG w usłudze Databricks, są dostępne w tych samych regionach co obsługa modelu.
Jeśli planujesz korzystanie z interfejsów API modelu foundation w ramach tworzenia aplikacji RAG, możesz ograniczyć się do obsługiwanych regionów dla interfejsów API modelu Foundation.