Udostępnij za pośrednictwem


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.

RAG application architecture all up

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:

RAG application architecture for just the indexing pipeline and retrieval and generation, the RAG chain, pieces of RAG. The top section shows the RAG chain consuming the query and the subsequent steps of query processing, query expansion, retrieval and re-ranking, prompt engineering, initial response generation and post-processing, all before generating a response to the query. The bottom portion shows the RAG chain connected to separate data pipelines for 1. unstructured data, which includes data parsing, chunking and embedding and storing that data in a vector search database or index. Unstructured data pipelines require interaction with embedding and foundational models to feed into the RAG chain and 2. structured data pipelines, which includes consuming already embedded data chunks and performing ETL tasks and feature engineering before serving this data to the RAG chain

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:

  1. Pozyskiwanie danych z zastrzeżonego źródła danych.
  2. 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.
  3. Użyj modelu osadzania, aby utworzyć wektorowe osadzanie fragmentów danych.
  4. 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.

  1. Osadź żądanie przy użyciu tego samego modelu osadzania, który został użyty do osadzania danych w baza wiedzy.
  2. 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.
  3. Pobierz fragmenty danych, które są najbardziej istotne dla żądania.
  4. 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.
  5. Wygeneruj odpowiedź.

Na poniższym diagramie przedstawiono ten proces:

RAG workflow after a request

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.

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:

  1. Pozyskiwanie danych z zastrzeżonego źródła danych. Te dane można przechowywać w woluminie tabeli delty lub w wykazie aparatu Unity.
  2. 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.
  3. 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.
  4. Gdy funkcja Wyszukiwania wektorowego oblicza osadzanie, usługa Databricks przechowuje je w tabeli delty.
  5. 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.

RAG indexing pipeline processing unstructured data and Databricks managed embeddings. This diagram shows the RAG application architecture for just the indexing pipeline.

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:

  1. Pozyskiwanie danych z zastrzeżonego źródła danych. Te dane można przechowywać w tabeli delty lub woluminie wykazu aparatu Unity.
  2. 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.
  3. 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.
  4. Po obliczeniu osadzania można je przechowywać w tabeli delty, którą można zsynchronizować z wyszukiwaniem wektorowym.
  5. 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.

RAG with Databricks unstructured data and self managed embeddings

Przetwarzanie danych ustrukturyzowanych

W przypadku przetwarzania danych ustrukturyzowanych pokazano następujące kroki i diagram:

  1. Pozyskiwanie danych z zastrzeżonego źródła danych. Te dane można przechowywać w tabeli delty lub woluminie wykazu aparatu Unity.
  2. 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.
  3. Utwórz tabelę funkcji. Tabela funkcji to tabela delty w wykazie aparatu Unity, która ma klucz podstawowy.
  4. 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.

RAG with Databricks structured data

Ł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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Wygeneruj odpowiedź.

Running the chain

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.