stub LlamaIndex: Z łatwością rozszerzaj swoje aplikacje LLM o niestandardowe dane - Unite.AI
Kontakt z nami

Artificial Intelligence

LlamaIndex: Z łatwością rozszerzaj swoje aplikacje LLM o niestandardowe dane

mm
Zaktualizowano on
LamaIndeks

Duże modele językowe (LLM), takie jak seria GPT OpenAI, zostały przeszkolone na różnorodnych publicznie dostępnych danych, wykazując niezwykłe możliwości w zakresie generowania tekstu, podsumowywania, odpowiadania na pytania i planowania. Pomimo ich wszechstronności, często zadawane pytanie dotyczy bezproblemowej integracji tych modeli z danymi niestandardowymi, prywatnymi lub zastrzeżonymi.

Firmy i osoby prywatne są zalewane unikalnymi i niestandardowymi danymi, często przechowywanymi w różnych aplikacjach, takich jak Notion, Slack i Salesforce, lub przechowywanymi w plikach osobistych. Aby wykorzystać LLM dla tych konkretnych danych, zaproponowano i przetestowano kilka metodologii.

Strojenie stanowi jedno z takich podejść, polega na dostosowaniu wag modelu w celu uwzględnienia wiedzy z poszczególnych zbiorów danych. Jednak proces ten nie jest pozbawiony wyzwań. Wymaga to znacznego wysiłku w przygotowaniu danych, w połączeniu z trudną procedurą optymalizacji, wymagającą pewnego poziomu wiedzy specjalistycznej w zakresie uczenia maszynowego. Co więcej, konsekwencje finansowe mogą być znaczące, szczególnie w przypadku dużych zbiorów danych.

Alternatywą okazało się uczenie kontekstowe, w którym priorytetem jest tworzenie danych wejściowych i podpowiedzi, aby zapewnić LLM kontekst niezbędny do generowania dokładnych wyników. Takie podejście ogranicza potrzebę szeroko zakrojonego przekwalifikowywania modeli, oferując bardziej wydajne i dostępne sposoby integracji prywatnych danych.

Jednak wadą tego rozwiązania jest poleganie na umiejętnościach i wiedzy użytkownika szybka inżynieria. Ponadto uczenie się kontekstowe nie zawsze może być tak precyzyjne i niezawodne jak dostrajanie, szczególnie w przypadku danych wysoce specjalistycznych lub technicznych. Wstępne uczenie modelu na podstawie szerokiego zakresu tekstów internetowych nie gwarantuje zrozumienia określonego żargonu lub kontekstu, co może prowadzić do niedokładnych lub nieistotnych wyników. Jest to szczególnie problematyczne, gdy prywatne dane pochodzą z niszowej domeny lub branży.

Co więcej, ilość kontekstu, który można podać w jednym wierszu, jest ograniczona, a wydajność LLM może się pogorszyć wraz ze wzrostem złożoności zadania. Wyzwaniem jest również prywatność i bezpieczeństwo danych, ponieważ informacje podane w monicie mogą potencjalnie być wrażliwe lub poufne.

Gdy społeczność bada te techniki, narzędzia takie jak LamaIndeks teraz zwracają na siebie uwagę.

Indeks lamy

Indeks lamy

Rozpoczęła się o Jerry'ego Liu, były pracownik naukowy Ubera. Jesienią eksperymentując z GPT-3, Liu zauważył ograniczenia modelu dotyczące obsługi prywatnych danych, takich jak pliki osobiste. Ta obserwacja doprowadziła do rozpoczęcia projektu open source LlamaIndex.

Inicjatywa przyciągnęła inwestorów, zabezpieczając $ 8.5 mln w ostatniej rundzie finansowania zalążkowego.

LlamaIndex ułatwia rozszerzanie LLM o niestandardowe dane, wypełniając lukę między wstępnie wytrenowanymi modelami a niestandardowymi przypadkami użycia danych. Dzięki LlamaIndex użytkownicy mogą wykorzystywać własne dane za pomocą LLM, odblokowując generowanie wiedzy i rozumowanie dzięki spersonalizowanym spostrzeżeniom.

Użytkownicy mogą bezproblemowo udostępniać LLM własne dane, tworząc środowisko, w którym generowanie wiedzy i rozumowanie są głęboko spersonalizowane i wnikliwe. LlamaIndex rozwiązuje ograniczenia uczenia się kontekstowego, zapewniając bardziej przyjazną dla użytkownika i bezpieczną platformę do interakcji z danymi, dzięki czemu nawet osoby z ograniczoną wiedzą na temat uczenia maszynowego mogą wykorzystać pełny potencjał LLM w oparciu o swoje prywatne dane.

Koncepcje wysokiego poziomu i kilka spostrzeżeń

1. Generowanie rozszerzone odzyskiwania (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG to dwuetapowy proces mający na celu połączenie LLM z niestandardowymi danymi, zwiększając w ten sposób zdolność modelu do dostarczania bardziej precyzyjnych i świadomych odpowiedzi. Proces obejmuje:

  • Etap indeksowania: Jest to faza przygotowawcza, podczas której kładzie się podwaliny pod utworzenie bazy wiedzy.
INDEKSY LlamaIndex

Indeksowanie LlamaIndex

  • Etap zapytania: Tutaj baza wiedzy jest przeszukiwana pod kątem odpowiedniego kontekstu, aby pomóc LLM w odpowiadaniu na zapytania.
ETAP ZAPYTANIA LlamaIndex

Etap zapytania LlamaIndex

Podróż indeksowania z LlamaIndex:

  • Złącza danych: Pomyśl o złączach danych jak o paszporcie danych do LlamaIndex. Pomagają w importowaniu danych z różnych źródeł i formatów, hermetyzując je w uproszczoną reprezentację „Dokumentu”. Łączniki danych można znaleźć w LlamaHub, repozytorium typu open source wypełnionym modułami ładującymi dane. Te programy ładujące zostały zaprojektowane z myślą o łatwej integracji, umożliwiając korzystanie z dowolnej aplikacji LlamaIndex w trybie plug-and-play.
Centrum Lamy

Centrum LlamaIndex (https://llamahub.ai/)

  • Dokumenty / Węzły: Dokument przypomina ogólną walizkę, w której można przechowywać różne typy danych — niezależnie od tego, czy jest to plik PDF, dane wyjściowe API, czy wpisy do bazy danych. Z drugiej strony węzeł to fragment lub „fragment” dokumentu, wzbogacony o metadane i relacje z innymi węzłami, zapewniający solidną podstawę do późniejszego precyzyjnego wyszukiwania danych.
  • Indeksy danych: Po przyjęciu danych LlamaIndex pomaga w indeksowaniu tych danych do formatu możliwego do odzyskania. Za kulisami dzieli surowe dokumenty na reprezentacje pośrednie, oblicza osadzanie wektorów i wyprowadza metadane. Wśród indeksów często wybieranym jest „VectorStoreIndex”.

Rodzaje indeksów w LlamaIndex: klucz do uporządkowanych danych

LlamaIndex oferuje różne typy indeksów, każdy dla różnych potrzeb i przypadków użycia. W sercu tych indeksów leżą „węzły”, jak omówiono powyżej. Spróbujmy zrozumieć indeksy LlamaIndex z ich mechaniką i zastosowaniami.

1. Indeks listy:

  • Mechanizm: Indeks listy wyrównuje węzły sekwencyjnie jak lista. Po podzieleniu danych wejściowych na węzły są one ułożone w sposób liniowy i gotowe do przeszukiwania sekwencyjnie lub za pomocą słów kluczowych lub osadzania.
  • Korzyść: Ten typ indeksu sprawdza się, gdy zachodzi potrzeba wykonywania zapytań sekwencyjnych. LlamaIndex zapewnia wykorzystanie wszystkich danych wejściowych, nawet jeśli przekraczają limit tokenów LLM, poprzez inteligentne wysyłanie zapytań do tekstu z każdego węzła i udoskonalanie odpowiedzi podczas poruszania się w dół listy.

2. Indeks sklepu wektorowego:

  • Mechanizm: Tutaj węzły przekształcają się w osadzanie wektorów, przechowywane lokalnie lub w wyspecjalizowanej bazie danych wektorów, np Milvus. Po zapytaniu pobiera top_k najbardziej podobnych węzłów, kierując je do syntezatora odpowiedzi.
  • Korzyść: Jeśli przepływ pracy zależy od porównania tekstu pod kątem podobieństwa semantycznego za pomocą wyszukiwania wektorowego, można użyć tego indeksu.

3. Indeks drzewa:

  • Mechanizm: W indeksie drzewa dane wejściowe ewoluują w strukturę drzewa zbudowaną od dołu do góry z węzłów liści (oryginalnych fragmentów danych). Węzły nadrzędne pojawiają się jako podsumowania węzłów liści, utworzone przy użyciu GPT. Podczas zapytania indeks drzewa może przechodzić od węzła głównego do węzłów liściowych lub konstruować odpowiedzi bezpośrednio z wybranych węzłów liściowych.
  • Korzyść: Dzięki indeksowi drzewa wykonywanie zapytań dotyczących długich fragmentów tekstu staje się bardziej wydajne, a wydobywanie informacji z różnych segmentów tekstu jest uproszczone.

4. Indeks słów kluczowych:

  • Mechanizm: Mapa słów kluczowych do węzłów stanowi rdzeń Indeksu słów kluczowych. Podczas zapytania słowa kluczowe są pobierane z zapytania i tylko zamapowane węzły są umieszczane w centrum uwagi.
  • Korzyść: Jeśli masz jasne zapytania użytkowników, możesz użyć Indeksu słów kluczowych. Na przykład przeglądanie dokumentów dotyczących opieki zdrowotnej staje się bardziej efektywne, gdy skupiamy się wyłącznie na dokumentach związanych z COVID-19.

Instalowanie LlamaIndex

Instalacja LlamaIndex jest prostym procesem. Możesz zainstalować go bezpośrednio z Pipa lub ze źródła. (Upewnij się, że masz zainstalowany Python w swoim systemie lub możesz skorzystać z Google Colab)

1. Instalacja z Pipa:

  • Wykonaj następujące polecenie:
    pip install llama-index
  • Note: Podczas instalacji LlamaIndex może pobierać i przechowywać pliki lokalne dla niektórych pakietów, takich jak NLTK i HuggingFace. Aby określić katalog dla tych plików, użyj zmiennej środowiskowej „LLAMA_INDEX_CACHE_DIR”.

2. Instalacja ze źródła:

  • Najpierw sklonuj repozytorium LlamaIndex z GitHub:
    git clone https://github.com/jerryjliu/llama_index.git
  • Po sklonowaniu przejdź do katalogu projektu.
  • Będziesz potrzebować Poetry do zarządzania zależnościami pakietów.
  • Teraz utwórz środowisko wirtualne za pomocą Poezji:
    poetry shell
  • Na koniec zainstaluj wymagania pakietu podstawowego za pomocą:
    poetry install

Konfigurowanie środowiska dla LlamaIndex

1. Konfiguracja OpenAI:

  • Domyślnie LlamaIndex wykorzystuje OpenAI gpt-3.5-turbo do generowania tekstu i text-embedding-ada-002 do pobierania i osadzania.
  • Aby skorzystać z tej konfiguracji, musisz mieć OPENAI_API_KEY. Zdobądź go, rejestrując się na stronie OpenAI i tworząc nowy token API.
  • Masz możliwość dostosowania podstawowego modelu dużego języka (LLM) zgodnie z potrzebami projektu. W zależności od dostawcy LLM możesz potrzebować dodatkowych kluczy i tokenów środowiskowych.

2. Konfiguracja środowiska lokalnego:

  • Jeśli wolisz nie korzystać z OpenAI, LlamaIndex automatycznie przełącza się na modele lokalne – LlamaCPP i llama2-chat-13B do generowania tekstu i BAAI/bge-small-en do pobierania i osadzania.
  • Aby korzystać z LlamaCPPpostępuj zgodnie z dołączoną instrukcją instalacji. Upewnij się, że zainstalowałeś llama-cpp-python pakiet, idealnie skompilowany do obsługi Twojego procesora graficznego. Ta konfiguracja będzie wykorzystywać około 11.5 GB pamięci procesora i karty graficznej.
  • W przypadku osadzania lokalnego wykonaj polecenie pip install sentence-transformers. Ta konfiguracja lokalna zajmie około 500 MB pamięci.

Dzięki tym konfiguracjom możesz dostosować swoje środowisko tak, aby wykorzystywało możliwości OpenAI lub uruchamiało modele lokalnie, dostosowując się do wymagań i zasobów projektu.

Prosty przypadek użycia: wysyłanie zapytań do stron internetowych za pomocą LlamaIndex i OpenAI

Oto prosty skrypt w języku Python ilustrujący sposób wysyłania zapytań do strony internetowej w celu uzyskania określonych informacji:

!pip install llama-index html2text
import os
from llama_index import VectorStoreIndex, SimpleWebPageReader
# Enter your OpenAI key below:
os.environ["OPENAI_API_KEY"] = ""
# URL you want to load into your vector store here:
url = "http://www.paulgraham.com/fr.html"
# Load the URL into documents (multiple documents possible)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])
# Create vector store from documents
index = VectorStoreIndex.from_documents(documents)
# Create query engine so we can ask it questions:
query_engine = index.as_query_engine()
# Ask as many questions as you want against the loaded data:
response = query_engine.query("What are the 3 best advise by Paul to raise money?")
print(response)
The three best pieces of advice by Paul to raise money are:
1. Start with a low number when initially raising money. This allows for flexibility and increases the chances of raising more funds in the long run.
2. Aim to be profitable if possible. Having a plan to reach profitability without relying on additional funding makes the startup more attractive to investors.
3. Don't optimize for valuation. While valuation is important, it is not the most crucial factor in fundraising. Focus on getting the necessary funds and finding good investors instead.
Notatnik z indeksem Lamy Google Colab

Notatnik z indeksem Lamy Google Colab

Za pomocą tego skryptu stworzyłeś potężne narzędzie do wydobywania określonych informacji ze strony internetowej poprzez proste zadanie pytania. To tylko rzut oka na to, co można osiągnąć dzięki LlamaIndex i OpenAI podczas wysyłania zapytań do danych internetowych.

LlamaIndex vs Langchain: wybór na podstawie celu

Twój wybór pomiędzy LlamaIndex i Langchaina będzie zależeć od celu Twojego projektu. Jeśli chcesz opracować inteligentne narzędzie do wyszukiwania, LlamaIndex to solidny wybór, doskonale sprawdzający się jako inteligentny mechanizm przechowywania danych. Z drugiej strony, jeśli chcesz stworzyć system taki jak ChatGPT z funkcjami wtyczek, Langchain jest Twoim wyborem. Nie tylko ułatwia wiele instancji ChatGPT i LlamaIndex, ale także rozszerza funkcjonalność, umożliwiając budowę agentów wielozadaniowych. Na przykład dzięki Langchain możesz tworzyć agenty zdolne do wykonywania kodu Pythona podczas jednoczesnego wyszukiwania w Google. Krótko mówiąc, podczas gdy LlamaIndex przoduje w przetwarzaniu danych, Langchain organizuje wiele narzędzi, aby zapewnić całościowe rozwiązanie.

Grafika z logo LlamaIndex stworzona przy użyciu Midjourney

Grafika z logo LlamaIndex stworzona przy użyciu W połowie drogi

Ostatnie pięć lat spędziłem zanurzając się w fascynującym świecie uczenia maszynowego i głębokiego uczenia się. Moja pasja i wiedza sprawiły, że uczestniczyłem w ponad 50 różnorodnych projektach z zakresu inżynierii oprogramowania, ze szczególnym uwzględnieniem AI/ML. Moja ciągła ciekawość przyciągnęła mnie również w stronę przetwarzania języka naturalnego – dziedziny, którą chcę dalej zgłębiać.