Modele i platformy AI
LlamaIndex: Uzupełnij swoje aplikacje LLM o dane niestandardowe w łatwy sposób
Duże modele językowe (LLM) takie jak seria GPT od OpenAI zostały przeszkolone na różnorodnych, publicznie dostępnych danych, demonstrując zdumiewające możliwości w generowaniu tekstu, podsumowaniu, odpowiedziach na pytania i planowaniu. Pomimo ich wszechstronności, często stawianym pytaniem jest płynna integracja tych modeli z danymi niestandardowymi, prywatnymi lub własnościowymi.
Przedsiębiorstwa i osoby są zalewane unikalnymi danymi niestandardowymi, często przechowywanymi w różnych aplikacjach, takich jak Notion, Slack i Salesforce (CRM ), lub przechowywanych w plikach osobistych. Aby wykorzystać LLM do tych konkretnych danych, zaproponowano i eksperymentowano z kilkoma metodami.
Dostosowywanie reprezentuje jeden z takich podejść, polegający na dostosowaniu wag modelu w celu uwzględnienia wiedzy z konkretnych zbiorów danych. Jednak ten proces nie jest pozbawiony wyzwań. Wymaga znacznego wysiłku w przygotowaniu danych, połączonego z trudnym procesem optymalizacji, wymagającym pewnego poziomu wiedzy z zakresu uczenia maszynowego. Ponadto, implikacje finansowe mogą być znaczące, zwłaszcza przy dużych zbiorach danych.
Uczenie w kontekście pojawiło się jako alternatywa, priorytetowo traktując tworzenie wejść i podpowiedzi w celu dostarczenia LLM niezbędnego kontekstu do generowania dokładnych wyjść. To podejście zmniejsza potrzebę intensywnego ponownego szkolenia modelu, oferując bardziej wydajny i dostępny sposób integracji danych prywatnych.
Ale wadą tego jest jego zależność od umiejętności i doświadczenia użytkownika w inżynierii podpowiedzi. Ponadto, uczenie w kontekście może nie zawsze być tak precyzyjne lub niezawodne jak dostosowywanie, zwłaszcza przy danych wyspecjalizowanych lub technicznych. Przeszkolenie modelu na szerokim zakresie tekstu internetowego nie gwarantuje zrozumienia konkretnych terminów lub kontekstu, co może prowadzić do niedokładnych lub nieistotnych wyjść. Jest to szczególnie problematyczne, gdy dane prywatne pochodzą z wąskiej dziedziny lub branży.
Ponadto, ilość kontekstu, który można dostarczyć w jednej podpowiedzi, jest ograniczona, a wydajność LLM może się pogarszać wraz ze zwiększaniem się złożoności zadania. Istnieje również wyzwanie związane z prywatnością i bezpieczeństwem danych, ponieważ informacje dostarczane w podpowiedzi mogą być potencjalnie wrażliwe lub poufne.
Ponieważ społeczność eksploruje te techniki, narzędzia takie jak LlamaIndex zyskują na popularności.
Zostało założone przez Jerry’ego Liu, byłego naukowca badawczego w Uberze. Podczas eksperymentów z GPT-3 w zeszłym roku, Liu zauważył ograniczenia modelu w radzeniu sobie z danymi prywatnymi, takimi jak pliki osobiste. To spostrzeżenie doprowadziło do rozpoczęcia projektu open-source LlamaIndex.
Inicjatywa przyciągnęła inwestorów, zabezpieczając $8,5 miliona w recentnej rundzie finansowania.
LlamaIndex ułatwia rozszerzanie LLM o dane niestandardowe, mostkując lukę między przeszkolonymi modelami a przypadkami użycia danych niestandardowych. Za pomocą LlamaIndex, użytkownicy mogą wykorzystać swoje własne dane z LLM, odblokowując generowanie wiedzy i rozumowanie z personalizowanymi wglądami.
Użytkownicy mogą bezproblemowo dostarczyć LLM swoje własne dane, tworząc środowisko, w którym generowanie wiedzy i rozumowanie są głęboko personalizowane i wglądowe. LlamaIndex rozwiązuje ograniczenia uczenia w kontekście, dostarczając bardziej przyjazne i bezpieczne środowisko interakcji z danymi, zapewniając, że nawet osoby z ograniczoną wiedzą z zakresu uczenia maszynowego mogą w pełni wykorzystać potencjał LLM z danymi prywatnymi.
Poziom ogólny & niektóre wglądy
1. Retrieval Augmented Generation (RAG):
RAG jest dwuetapowym procesem zaprojektowanym do połączenia LLM z danymi niestandardowymi, zwiększając zdolność modelu do dostarczania bardziej precyzyjnych i poinformowanych odpowiedzi. Proces składa się z:
- Etapy indeksowania: Jest to faz przygotowawcza, w której tworzy się podstawy dla tworzenia bazy wiedzy.
- Etapy zapytania: Tutaj baza wiedzy jest przeszukiwana w celu znalezienia istotnego kontekstu, który pomoże LLM w odpowiedziach na zapytania.
Podróż indeksowania z LlamaIndex:
- Łączniki danych: Łączniki danych można uznać za paszport Twoich danych do LlamaIndex. Pomagają one w importowaniu danych z różnych źródeł i formatów, kapsułkując je w prostą reprezentację “Dokumentu”. Łączniki danych można znaleźć w LlamaHub, repozytorium open-source wypełnionym ładowarkami danych. Te ładowarki są zaprojektowane z myślą o łatwej integracji, umożliwiając doświadczenie plug-and-play z każdą aplikacją LlamaIndex.
- Dokumenty / Węzły: Dokument jest jak generyczna walizka, która może zawierać różne typy danych – czy to plik PDF, wyjście API, czy wpisy z bazy danych. Z drugiej strony, węzeł jest fragmentem lub “kawałkiem” z dokumentu, wzbogaconym o metadane i relacje z innymi węzłami, zapewniając solidną podstawę dla precyzyjnego odzyskiwania danych później.
- Indeksy danych: Po przyjęciu danych LlamaIndex pomaga w indeksowaniu ich w sposób, który umożliwia odzyskiwanie. Za kulisami rozdziela surowe dokumenty na pośrednie reprezentacje, oblicza wektorowe osadzanie i wnioskuje metadane. Wśród indeksów “VectorStoreIndex” jest często wybierany.
Rodzaje indeksów w LlamaIndex: Klucz do zorganizowanych danych
LlamaIndex oferuje różne typy indeksów, każdy dla różnych potrzeb i przypadków użycia. W centrum tych indeksów leżą “węzły”, jak omówiono powyżej. Próbujmy zrozumieć indeksy LlamaIndex z ich mechaniką i zastosowaniami.
1. Indeks listowy:
- Mechanizm: Indeks listowy układa węzły sekwencyjnie jak lista. Po podzieleniu danych wejściowych na węzły, są one ułożone w liniowej formie, gotowe do zapytań sekwencyjnych lub za pomocą słów kluczowych lub osadzania.
- Przewaga: Ten typ indeksu wyróżnia się, gdy potrzebne jest sekwencyjne zapytanie. LlamaIndex zapewnia wykorzystanie całych danych wejściowych, nawet jeśli przekraczają limit tokenów LLM, poprzez inteligentne zapytanie tekstu z każdego węzła i ulepszanie odpowiedzi, gdy przechodzi w dół listy.
2. Indeks magazynu wektorowego:
- Mechanizm: Tutaj węzły przekształcają się w wektorowe osadzanie, przechowywane lokalnie lub w specjalistycznej bazie danych wektorowej, takiej jak Milvus. Podczas zapytania, pobiera najbardziej podobne węzły, kierując je do syntetyzera odpowiedzi.
- Przewaga: Jeśli Twoje przepływo pracy zależy od porównania tekstu dla podobieństwa semantycznego za pomocą wyszukiwania wektorowego, ten indeks może być użyty.
3. Indeks drzewiasty:
- Mechanizm: W indeksie drzewiastym dane wejściowe ewoluują w strukturę drzewa, zbudowaną od dołu z węzłów liści (oryginalne fragmenty danych). Węzły nadrzędne pojawiają się jako podsumowania węzłów liści, tworzone przy użyciu GPT. Podczas zapytania, indeks drzewiasty może przechodzić od węzła korzenia do węzłów liści lub konstruować odpowiedzi bezpośrednio z wybranych węzłów liści.
- Przewaga: Z indeksem drzewiastym, zapytanie długich fragmentów tekstu staje się bardziej wydajne, a wydobycie informacji z różnych segmentów tekstu jest ułatwione.
4. Indeks słów kluczowych:
- Mechanizm: Mapa słów kluczowych na węzły tworzy rdzeń indeksu słów kluczowych. Podczas zapytania, słowa kluczowe są pobierane z zapytania, a tylko odwzorowane węzły są wprowadzane do światła.
- Przewaga: Gdy masz wyraźne zapytania użytkowników, indeks słów kluczowych może być użyty. Na przykład, przeszukiwanie dokumentów medycznych staje się bardziej efektywne, gdy koncentrujesz się tylko na dokumentach dotyczących COVID-19.
Instalowanie LlamaIndex
Instalowanie LlamaIndex jest prostym procesem. Możesz wybrać instalację bezpośrednio z Pip lub z źródła. (Upewnij się, że masz zainstalowany Python w systemie lub możesz użyć Google Colab)
1. Instalacja z Pip:
- Wykonaj następującą komendę:
pip install llama-index
- Uwaga: Podczas instalacji, LlamaIndex może pobrać i zapisać pliki lokalne dla pewnych 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 z źródła:
- Pierwszym krokiem jest sklonowanie repozytorium LlamaIndex z GitHub:
git clone https://github.com/jerryjliu/llama_index.git
- Po sklonowaniu, przejdź do katalogu projektu.
- Potrzebujesz Poetry do zarządzania zależnościami pakietów.
- Teraz, utwórz środowisko wirtualne przy użyciu Poetry:
poetry shell - Na koniec, zainstaluj podstawowe wymagania pakietu za pomocą:
poetry install
Konfigurowanie środowiska dla LlamaIndex
1. Konfiguracja OpenAI:
- Domyslnie, LlamaIndex wykorzystuje
gpt-3.5-turbood OpenAI do generowania tekstu itext-embedding-ada-002do odzyskiwania i osadzania. - Aby użyć tej konfiguracji, będziesz potrzebować
OPENAI_API_KEY. Uzyskaj go, rejestrując się na stronie OpenAI i tworząc nowy token API. - Masz elastyczność w dostosowaniu podstawowego modelu LLM do Twoich potrzeb projektowych. W zależności od dostawcy LLM, możesz potrzebować dodatkowych kluczy środowiskowych i tokenów.
2. Konfiguracja środowiska lokalnego:
- Jeśli wolisz nie korzystać z OpenAI, LlamaIndex automatycznie przełącza się na modele lokalne –
LlamaCPPillama2-chat-13Bdo generowania tekstu, orazBAAI/bge-small-endo odzyskiwania i osadzania. - Aby użyć
LlamaCPP, postępuj zgodnie z dostarczoną instrukcją instalacji. Upewnij się, że zainstalowałeś pakietllama-cpp-python, najlepiej skompilowany z obsługą Twojej karty graficznej. To ustawienie zajmie około 11,5 GB pamięci na CPU i GPU. - Dla lokalnych osadzań, wykonaj
pip install sentence-transformers. To lokalne ustawienie zajmie około 500 MB pamięci.
Z tymi ustawieniami, możesz dostosować swoje środowisko do wykorzystania mocy OpenAI lub uruchamiania modeli lokalnie, dostosowując się do wymagań Twojego projektu i zasobów.
Prosty przypadek użycia: Zapytanie stron internetowych z LlamaIndex i OpenAI
Oto prosty skrypt Pythona, który demonstruje, jak możesz zapytać stronę internetową o określone wglądy:
!pip install llama-index html2text
<p>import os
from llama_index import VectorStoreIndex, SimpleWebPageReader</p>
<p># Wprowadź swój klucz API OpenAI poniżej:
os.environ["OPENAI_API_KEY"] = ""</p>
<p># Adres URL, który chcesz załadować do swojego magazynu wektorowego, znajduje się tutaj:
url = "http://www.paulgraham.com/fr.html"</p>
<p># Załaduj adres URL do dokumentów (możliwe są wiele dokumentów)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>
<p># Utwórz magazyn wektorowy z dokumentów
index = VectorStoreIndex.from_documents(documents)</p>
<p># Utwórz silnik zapytań, abyśmy mogli zadawać pytania:
query_engine = index.as_query_engine()</p>
<p># Zadaj tyle pytań, ile chcesz, przeciwko załadowanym danym:
response = query_engine.query("Jakie są trzy najlepsze porady Paula, aby zebrać pieniądze?")
print(response)
Trzy najlepsze porady Paula, aby zebrać pieniądze, to: 1. Zacznij od niskiej liczby, gdy po raz pierwszy zbierasz pieniądze. To pozwala na elastyczność i zwiększa szanse na zebranie większej ilości pieniędzy w dłuższej perspektywie. 2. Staraj się być rentowny, jeśli to możliwe. Posiadanie planu, aby osiągnąć rentowność bez polegania na dodatkowym finansowaniu, sprawia, że startup jest bardziej atrakcyjny dla inwestorów. 3. Nie optymalizuj pod kątem wyceny. Chociaż wycena jest ważna, nie jest najważniejszym czynnikiem w zbieraniu funduszy. Skoncentruj się na uzyskaniu niezbędnych funduszy i znalezieniu dobrych inwestorów zamiast tego.
Z tym skryptem, stworzyłeś potężne narzędzie do wyodrębniania konkretnych informacji ze strony internetowej, po prostu zadając pytanie. To tylko zarys tego, co można osiągnąć z LlamaIndex i OpenAI przy zapytaniu danych internetowych.
LlamaIndex vs Langchain: Wybór na podstawie celu
Twój wybór między LlamaIndex a Langchain zależy od celu Twojego projektu. Jeśli chcesz rozwijać inteligentne narzędzie wyszukiwania, LlamaIndex jest solidnym wyborem, wyróżniając się jako inteligentny mechanizm przechowywania danych do odzyskiwania. Z drugiej strony, jeśli chcesz stworzyć system jak ChatGPT z możliwościami wtyczek, Langchain jest Twoim wyborem. Nie tylko umożliwia wiele instancji ChatGPT i LlamaIndex, ale także rozszerza funkcjonalność, pozwalając na konstruowanie agentów wielozadaniowych. Na przykład, z Langchain, możesz stworzyć agenci zdolne do wykonywania kodu Pythona podczas prowadzenia wyszukiwania Google. W skrócie, podczas gdy LlamaIndex wyróżnia się w obszarze danych, Langchain orkiestruje wiele narzędzi, aby dostarczyć kompleksowe rozwiązanie.


















