KI-Modelle und Plattformen

LlamaIndex: Erweitern Sie Ihre LLM-Anwendungen mithilfe von benutzerdefinierten Daten leicht

mm
Unite.AI zu deinen bevorzugten Quellen auf Google hinzufÞgen

Große Sprachmodelle (LLMs) wie OpenAIs GPT-Serie wurden auf eine vielfÃĪltige Palette Ãķffentlich zugÃĪnglicher Daten trainiert und zeigen bemerkenswerte FÃĪhigkeiten bei der Textgenerierung, Zusammenfassung, Fragebeantwortung und Planung. Trotz ihrer Vielseitigkeit dreht sich eine hÃĪufig gestellte Frage um die nahtlose Integration dieser Modelle mit benutzerdefinierten, privaten oder proprietÃĪren Daten.

Unternehmen und Einzelpersonen werden von einzigartigen und benutzerdefinierten Daten Þberflutet, die oft in verschiedenen Anwendungen wie Notion, Slack und Salesforce (CRM ) oder in persÃķnlichen Dateien gespeichert sind. Um LLMs fÞr diese spezifischen Daten zu nutzen, wurden mehrere Methoden vorgeschlagen und experimentiert.

Feinabstimmung stellt einen solchen Ansatz dar, bei dem die Gewichte des Modells angepasst werden, um Wissen aus bestimmten DatensÃĪtzen zu integrieren. Dieser Prozess ist jedoch nicht ohne Herausforderungen. Er erfordert erhebliche Anstrengungen bei der Datenvorbereitung, verbunden mit einem schwierigen Optimierungsverfahren, das ein bestimmtes Maß an maschineller Lernkompetenz erfordert. DarÞber hinaus kÃķnnen die finanziellen Auswirkungen erheblich sein, insbesondere bei der Arbeit mit großen DatensÃĪtzen.

Das kontextbasierte Lernen hat sich als Alternative herausgebildet, bei der der Schwerpunkt auf der Gestaltung von Eingaben und Prompts liegt, um dem LLM den notwendigen Kontext fÞr die Generierung genauer Ausgaben zu liefern. Dieser Ansatz mildert die Notwendigkeit einer umfassenden Modellneukonfiguration, indem er einen effizienteren und zugÃĪnglicheren Weg zur Integration privater Daten bietet.

Aber der Nachteil hierfÞr ist seine AbhÃĪngigkeit von den FÃĪhigkeiten und dem Fachwissen des Benutzers in Prompt-Engineering. ZusÃĪtzlich kann das kontextbasierte Lernen nicht immer so prÃĪzise oder zuverlÃĪssig sein wie die Feinabstimmung, insbesondere bei der Arbeit mit hochspezialisierten oder technischen Daten. Die Vorabtrainierung des Modells auf einem breiten Spektrum an Internettexten garantiert nicht unbedingt ein VerstÃĪndnis spezifischer Fachjargons oder Kontexte, was zu ungenauen oder irrelevanten Ausgaben fÞhren kann. Dies ist besonders problematisch, wenn die privaten Daten aus einem Nischenbereich oder einer Branche stammen.

DarÞber hinaus ist die Menge an Kontext, die in einem einzelnen Prompt bereitgestellt werden kann, begrenzt, und die Leistung des LLMs kann sich verschlechtern, wenn die KomplexitÃĪt der Aufgabe zunimmt. Es gibt auch die Herausforderung der PrivatsphÃĪre und der Datensicherheit, da die in dem Prompt bereitgestellten Informationen potenziell sensibel oder vertraulich sein kÃķnnen.

WÃĪhrend die Gemeinschaft diese Techniken erforscht, gewinnen Tools wie LlamaIndex an Aufmerksamkeit.

Llama Index

Llama Index

Es wurde von Jerry Liu gegrÞndet, einem ehemaligen Forschungswissenschaftler bei Uber. WÃĪhrend er im letzten Herbst mit GPT-3 experimentierte, stellte Liu die EinschrÃĪnkungen des Modells bei der Verarbeitung privater Daten wie persÃķnlicher Dateien fest. Diese Beobachtung fÞhrte zum Start des Open-Source-Projekts LlamaIndex.

Die Initiative hat Investoren angezogen und 8,5 Millionen Dollar in einer jÞngsten Seed-Finanzierungsrunde gesichert.

LlamaIndex ermÃķglicht die Erweiterung von LLMs mit benutzerdefinierten Daten, indem es die LÞcke zwischen vorgefertigten Modellen und benutzerdefinierten DatenanwendungsfÃĪllen schließt. Mit LlamaIndex kÃķnnen Benutzer ihre eigenen Daten mit LLMs nutzen, wodurch Wissensgenerierung und Argumentation mit personalisierten Erkenntnissen ermÃķglicht werden.

Benutzer kÃķnnen LLMs nahtlos mit ihren eigenen Daten versorgen, was eine Umgebung schafft, in der Wissensgenerierung und Argumentation tief personalisiert und erkenntnisreich sind. LlamaIndex mildert die EinschrÃĪnkungen des kontextbasierten Lernens, indem es eine benutzerfreundlichere und sicherere Plattform fÞr die Datennutzung bietet, sodass auch Benutzer mit begrenzten maschinellen Lernkenntnissen das volle Potenzial von LLMs mit ihren privaten Daten nutzen kÃķnnen.

Hohe Konzepte und Einblicke

1. Retrieval Augmented Generation (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG ist ein zweistufiger Prozess, der darauf abzielt, LLMs mit benutzerdefinierten Daten zu koppeln, um die FÃĪhigkeit des Modells zu verbessern, prÃĪzisere und informiertere Ausgaben zu liefern. Der Prozess umfasst:

  • Indexierungsphase: Dies ist die Vorbereitungsphase, in der die Grundlage fÞr die Erstellung einer Wissensbasis gelegt wird.
LlamaIndex Indexing

LlamaIndex Indexing

  • Abfragen-Phase: Hier wird die Wissensbasis nach relevantem Kontext durchsucht, um LLMs bei der Beantwortung von Abfragen zu unterstÞtzen.
LlamaIndex Query Stage

LlamaIndex Query Stage

Indexierungsreise mit LlamaIndex:

  • Daten-Connector: Denken Sie an Daten-Connector als das “Reisepass” Ihrer Daten zu LlamaIndex. Sie helfen dabei, Daten aus verschiedenen Quellen und Formaten zu importieren und in eine einfache “Dokument”-Darstellung zu ÞberfÞhren. Daten-Connector kÃķnnen in LlamaHub gefunden werden, einem Open-Source-Repository, das mit Daten-Loadern gefÞllt ist. Diese Loader sind fÞr eine einfache Integration konzipiert und bieten ein Plug-and-Play-Erlebnis mit jeder LlamaIndex-Anwendung.
Llama hub

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

  • Dokumente / Knoten: Ein Dokument ist wie ein generischer Koffer, der verschiedene Datentypen aufnehmen kann – sei es ein PDF, API-Ausgaben oder DatenbankeintrÃĪge. Andererseits ist ein Knoten ein Ausschnitt oder “Chunk” aus einem Dokument, angereichert mit Metadaten und Beziehungen zu anderen Knoten, was eine solide Grundlage fÞr prÃĪzise Datenabruf spÃĪter bietet.
  • Daten-Indexe: Nach der Datenaufnahme hilft LlamaIndex dabei, diese Daten in eine abrufbare Form zu indexieren. Im Hintergrund zerlegt es rohe Dokumente in ZwischenreprÃĪsentationen, berechnet Vektor-Embeddings und leitet Metadaten ab. Unter den Indexen ist “VectorStoreIndex” oft die bevorzugte Wahl.

Typen von Indexen in LlamaIndex: SchlÞssel zu organisierten Daten

LlamaIndex bietet verschiedene Arten von Indexen, jeweils fÞr unterschiedliche BedÞrfnisse und AnwendungsfÃĪlle. Im Kern dieser Indizes liegen “Knoten” wie oben diskutiert. Lassen Sie uns LlamaIndex-Indizes mit ihrer Mechanik und ihren Anwendungen verstehen.

1. Listen-Index:

  • Mechanismus: Ein Listen-Index ordnet Knoten sequenziell wie eine Liste an. Nachdem die Eingabedaten in Knoten aufgeteilt wurden, werden sie linear angeordnet, bereit, um sequenziell oder Þber SchlÞsselwÃķrter oder Embeddings abgefragt zu werden.
  • Vorteil: Diese Indexart glÃĪnzt, wenn die Notwendigkeit fÞr sequenzielle Abfragen besteht. LlamaIndex stellt sicher, dass Ihre gesamten Eingabedaten genutzt werden, selbst wenn sie die Token-Grenze des LLMs Þberschreiten, indem es clever Text aus jedem Knoten abfragt und Antworten verfeinert, wÃĪhrend es die Liste hinunter navigiert.

2. Vektor-Speicher-Index:

  • Mechanismus: Hier werden Knoten in Vektor-Embeddings umgewandelt, die entweder lokal oder in einer spezialisierten Vektor-Datenbank wie Milvus gespeichert werden. Wenn abgefragt, werden die top_k ÃĪhnlichsten Knoten abgerufen und an den Antwort-Synthesizer geleitet.
  • Vorteil: Wenn Ihre ArbeitsablÃĪufe von Textvergleich fÞr semantische Ähnlichkeit Þber Vektorsuche abhÃĪngen, kann dieser Index verwendet werden.

3. Baum-Index:

  • Mechanismus: In einem Baum-Index entwickeln sich die Eingabedaten zu einer Baumstruktur, die von unten nach oben aus Blattknoten (den ursprÞnglichen Daten-Chunks) aufgebaut wird. Elternknoten entstehen als Zusammenfassungen von Blattknoten, die mit GPT erstellt werden. Bei einer Abfrage kann der Baum-Index vom Wurzelknoten zu Blattknoten hinabsteigen oder Antworten direkt aus ausgewÃĪhlten Blattknoten konstruieren.
  • Vorteil: Mit einem Baum-Index wird die Abfrage langer Text-Chunks effizienter, und die Informationsgewinnung aus verschiedenen Textsegmenten wird vereinfacht.

4. SchlÞsselwort-Index:

  • Mechanismus: Eine Karte von SchlÞsselwÃķrtern zu Knoten bildet den Kern eines SchlÞsselwort-Index. Wenn abgefragt, werden SchlÞsselwÃķrter aus der Abfrage ausgewÃĪhlt, und nur die zugeordneten Knoten werden in den Vordergrund gerÞckt.
  • Vorteil: Wenn Sie klare Benutzerabfragen haben, kann ein SchlÞsselwort-Index verwendet werden. Zum Beispiel wird das Durchsuchen von Gesundheitsdokumenten effizienter, wenn Sie sich nur auf Dokumente konzentrieren, die fÞr COVID-19 relevant sind.

Installation von LlamaIndex

Die Installation von LlamaIndex ist ein einfacher Prozess. Sie kÃķnnen sich entscheiden, es direkt Þber Pip oder aus dem Quellcode zu installieren. (Stellen Sie sicher, dass Python auf Ihrem System installiert ist oder Sie Google Colab verwenden kÃķnnen)

1. Installation Þber Pip:

  • FÞhren Sie den folgenden Befehl aus:
    pip install llama-index
  • Hinweis: WÃĪhrend der Installation kann LlamaIndex bestimmte Pakete wie NLTK und HuggingFace herunterladen und lokale Dateien speichern. Um ein Verzeichnis fÞr diese Dateien anzugeben, verwenden Sie die Umgebungsvariable “LLAMA_INDEX_CACHE_DIR”.

2. Installation aus dem Quellcode:

  • Erstellen Sie zunÃĪchst das LlamaIndex-Repository von GitHub:
    git clone https://github.com/jerryjliu/llama_index.git
  • Nach dem Klonen navigieren Sie zum Projektverzeichnis.
  • Sie benÃķtigen Poetry fÞr die Verwaltung von Paket-AbhÃĪngigkeiten.
  • Erstellen Sie nun eine virtuelle Umgebung mit Poetry:
    poetry shell
  • Installieren Sie schließlich die Kernpaket-Anforderungen mit:
    poetry install

Einrichten Ihrer Umgebung fÞr LlamaIndex

1. OpenAI-Setup:

  • StandardmÃĪßig verwendet LlamaIndex OpenAIs gpt-3.5-turbo fÞr die Textgenerierung und text-embedding-ada-002 fÞr Abruf und Embeddings.
  • Um diese Konfiguration zu verwenden, benÃķtigen Sie einen OPENAI_API_KEY. Erhalten Sie einen, indem Sie sich auf der OpenAI-Website registrieren und einen neuen API-Token erstellen.
  • Sie haben die FlexibilitÃĪt, das zugrunde liegende Large Language Model (LLM) an Ihre Projektanforderungen anzupassen. AbhÃĪngig von Ihrem LLM-Anbieter benÃķtigen Sie mÃķglicherweise zusÃĪtzliche Umgebungs-SchlÞssel und Token.

2. Lokale Umgebungs-Einrichtung:

  • Wenn Sie OpenAI nicht verwenden mÃķchten, wechselt LlamaIndex automatisch zu lokalen Modellen – LlamaCPP und llama2-chat-13B fÞr die Textgenerierung und BAAI/bge-small-en fÞr Abruf und Embeddings.
  • Um LlamaCPP zu verwenden, folgen Sie der bereitgestellten Installationsanleitung. Stellen Sie sicher, dass Sie das llama-cpp-python-Paket installieren, idealerweise kompiliert, um Ihre GPU zu unterstÞtzen. Diese Einrichtung wird etwa 11,5 GB Speicher Þber CPU und GPU hinweg verwenden.
  • FÞr lokale Embeddings fÞhren Sie pip install sentence-transformers aus. Diese lokale Einrichtung wird etwa 500 MB Speicher verwenden.

Mit diesen Einrichtungen kÃķnnen Sie Ihre Umgebung anpassen, um entweder die Leistung von OpenAI zu nutzen oder Modelle lokal auszufÞhren, abgestimmt auf Ihre Projektanforderungen und Ressourcen.

Ein einfaches Anwendungsbeispiel: Abfragen von Webseiten mit LlamaIndex und OpenAI

Hier ist ein einfaches Python-Skript, um zu demonstrieren, wie Sie eine Webseite fÞr spezifische Erkenntnisse abfragen kÃķnnen:

!pip install llama-index html2text


<p>import os
from llama_index import VectorStoreIndex, SimpleWebPageReader</p>

<p># Geben Sie Ihren OpenAI-SchlÞssel ein:
os.environ["OPENAI_API_KEY"] = ""</p>

<p># URL, die Sie in Ihren Vektor-Speicher laden mÃķchten:
url = "http://www.paulgraham.com/fr.html"</p>

<p># Laden Sie die URL in Dokumente (mehrere Dokumente mÃķglich)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>

<p># Erstellen Sie einen Vektor-Speicher aus den Dokumenten
index = VectorStoreIndex.from_documents(documents)</p>

<p># Erstellen Sie einen Abfrage-Engine, um Fragen zu stellen
query_engine = index.as_query_engine()</p>

<p># Stellen Sie so viele Fragen wie Sie mÃķchten an die geladenen Daten:
response = query_engine.query("Was sind die 3 besten RatschlÃĪge von Paul, um Geld aufzubringen?")
print(response)
Die drei besten RatschlÃĪge von Paul, um Geld aufzubringen, sind:
1. Beginnen Sie mit einer niedrigen Zahl, wenn Sie zunÃĪchst Geld aufbringen. Dies ermÃķglicht FlexibilitÃĪt und erhÃķht die Chancen, in der langen Frist mehr Geld aufzubringen.
2. Zielen Sie darauf ab, rentabel zu sein, wenn mÃķglich. Ein Plan, der darauf abzielt, ohne weitere Finanzierung rentabel zu sein, macht das Startup fÞr Investoren attraktiver.
3. Optimieren Sie nicht fÞr Bewertung. WÃĪhrend Bewertung wichtig ist, ist sie nicht der wichtigste Faktor bei der Finanzierung. Konzentrieren Sie sich darauf, die notwendigen Mittel zu beschaffen und gute Investoren zu finden.
Google Colab Llama Index Notebook

Google Colab Llama Index Notebook

Mit diesem Skript haben Sie ein leistungsfÃĪhiges Werkzeug erstellt, um spezifische Informationen von einer Webseite zu extrahieren, indem Sie einfach eine Frage stellen. Dies ist nur ein Blick auf das, was mit LlamaIndex und OpenAI bei der Abfrage von Webdaten erreicht werden kann.

LlamaIndex vs Langchain: Auswahl basierend auf Ihrem Ziel

Ihre Wahl zwischen LlamaIndex und Langchain hÃĪngt von Ihrem Projektziel ab. Wenn Sie ein intelligentes Suchtool entwickeln mÃķchten, ist LlamaIndex eine solide Wahl, da es als intelligentes Speichermechanismus fÞr Datenabruf hervorragt. Andererseits, wenn Sie ein System wie ChatGPT mit Plugin-FÃĪhigkeiten erstellen mÃķchten, ist Langchain Ihre Wahl. Es ermÃķglicht nicht nur mehrere Instanzen von ChatGPT und LlamaIndex, sondern erweitert auch die FunktionalitÃĪt, indem es die Konstruktion von Multi-Task-Agents ermÃķglicht. Mit Langchain kÃķnnen Sie beispielsweise Agents erstellen, die Python-Code ausfÞhren und gleichzeitig eine Google-Suche durchfÞhren. Kurz gesagt, wÃĪhrend LlamaIndex bei der Datenverwaltung hervorragt, orchestriert Langchain mehrere Tools, um eine umfassende LÃķsung zu liefern.

LlamaIndex Logo Artwork created using Midjourney

LlamaIndex Logo Artwork created using Midjourney

Ich habe die letzten fÞnf Jahre damit verbracht, mich in die faszinierende Welt des Machine Learning und Deep Learning zu vertiefen. Mein Engagement und meine Expertise haben mich dazu gefÞhrt, an Þber 50 verschiedenen Software-Entwicklungsprojekten mit einem besonderen Fokus auf AI/ML beizutragen. Meine anhaltende Neugier hat mich auch zum Bereich der Natural Language Processing hingezogen, einem Feld, das ich weiter erforschen mÃķchte.