LLM-gestützte Anwendungen mit LlamaIndex erstellen

Auf dieser Seite werden einige Anwendungsfälle für das Erstellen von LLM-gestützten Anwendungen mit LlamaIndex beschrieben, das in AlloyDB for PostgreSQL eingebunden ist. Links zu Notebooks auf GitHub helfen Ihnen, Ansätze zu erkunden oder Ihre Anwendung zu entwickeln.

LlamaIndex ist ein Orchestrierungs-Framework für generative KI, mit dem Sie Datenquellen mit Large Language Models (LLMs) verbinden und integrieren können. Mit LlamaIndex können Sie Anwendungen erstellen, die über Abfragen in natürlicher Sprache auf Informationen aus privaten oder domainspezifischen Daten zugreifen und diese abfragen.

LlamaIndex fungiert als Brücke zwischen benutzerdefinierten Daten und LLMs und erleichtert die Entwicklung von Knowledge Assistant-Anwendungen mit RAG-Funktionen (Retrieval-Augmented Generation).

LlamaIndex eignet sich gut für dokumentenzentrierte Anwendungen, da es den Schwerpunkt auf die strukturierte Dokumentenverwaltung legt, was die Indexierung und den Abruf vereinfacht. Dieses Framework bietet optimierte Abfragemechanismen, die die Geschwindigkeit und Relevanz des Informationszugriffs verbessern, sowie eine robuste Metadatenverarbeitung für eine differenzierte Filterung.

Weitere Informationen zum LlamaIndex-Framework finden Sie in der LlamaIndex-Produktdokumentation.

LlamaIndex-Komponenten

AlloyDB bietet die folgenden LlamaIndex-Schnittstellen:

  • Vektorspeicher
  • Dokumentenspeicher
  • Index Stores
  • Chat-Stores
  • Dokumentenleser

Informationen zur Verwendung von LlamaIndex mit der Kurzanleitung für AlloyDB.

Vektorspeicher

Mit dieser LlamaIndex-Integration können Sie die robuste und skalierbare Natur von AlloyDB nutzen, um Ihre LlamaIndex-Daten zu speichern und zu verwalten. Durch die Kombination der Indexierungs- und Abfragefunktionen von LlamaIndex mit der hohen Leistung und Zuverlässigkeit von AlloyDB können Sie effizientere und skalierbarere LLM-gestützte Anwendungen erstellen.

LlamaIndex zerlegt ein Dokument (DOC, Text und PDF) in Dokumentkomponenten, die als Knoten bezeichnet werden. Der VectorStore darf nur die Einbettungsvektoren der aufgenommenen Knoteninhalte und den Text der Knoten enthalten. Ein Knoten, der ein First-Class-Konzept ist, enthält Textinhalte, Vektoreinbettungen und Metadaten. Sie können Filter auf diese Metadatenfelder anwenden, um den Knotenabruf auf diejenigen zu beschränken, die den angegebenen Metadatenkriterien entsprechen.

Verwenden Sie die Klasse AlloyDBVectorStore, um mit Vektorspeichern in AlloyDB zu arbeiten. Weitere Informationen finden Sie unter LlamaIndex-Vektorspeicher.

Vektoreinbettungen mit der Klasse „AlloyDBVectorStore“ speichern

Im AlloyDB-Notebook für Vektorspeicher erfahren Sie, wie Sie Folgendes tun:

  • Tabelle zum Speichern von Vektoreinbettungen initialisieren
  • Erstellen Sie eine Einbettungsklasseninstanz mit einem beliebigen Llama Index-Einbettungsmodell.
  • Standard-AlloyDBVectorStore-Vektorspeicher initialisieren
  • Erstellen Sie mit VectorStoreIndex einen Index aus dem Vektorspeicher und fragen Sie ihn ab.
  • Erstellen Sie einen benutzerdefinierten Vektorspeicher, um Metadaten effektiv zu speichern und zu filtern.
  • Fügen Sie einen ANN-Index hinzu, um die Suchlatenz zu verbessern.

Dokument- und Indexspeicher

Die LlamaIndex-Integration für Dokumentenspeicher verwaltet die strukturierte Speicherung und den Abruf von Dokumenten und optimiert die dokumentenzentrierten Funktionen von LlamaIndex. Im Document Store werden die Inhalte gespeichert, die sich auf die Vektoren im Vector Store beziehen.

Weitere Informationen finden Sie in der Produktdokumentation zu LlamaIndex-Dokumentspeichern.

Indexspeicher erleichtern die Verwaltung von Indexen, um schnelle Abfragen und Datenabrufe zu ermöglichen, z. B. Zusammenfassungs-, Keyword- und Baumindexe. Index in LlamaIndex ist ein einfacher Speicher nur für die Knotenmetadaten. Bei Aktualisierungen von Knotenmetadaten ist keine Neuindexierung (Einbettungsgenerierung) des gesamten Knotens oder aller Knoten in einem Dokument erforderlich.

Weitere Informationen finden Sie unter LlamaIndex-Indexspeicher.

Dokumente und Indexe speichern

Im AlloyDB-Notebook für Dokumentenspeicher wird gezeigt, wie Sie mit AlloyDB Dokumente und Indexe mithilfe der Klassen AlloyDBDocumentStore und AlloyDBIndexStore speichern. Sie lernen, wie Sie Folgendes tun:

  • Erstellen Sie mit AlloyDBEngine.from_instance() einen AlloyDBEngine.
  • Erstellen Sie Tabellen für DocumentStore und IndexStore.
  • Standard-AlloyDBDocumentStore initialisieren
  • Richten Sie ein AlloyDBIndexStore ein.
  • Fügen Sie dem Docstore Dokumente hinzu.
  • Dokumentspeicher mit mehreren Indexen verwenden.
  • Vorhandene Indexe laden.

Chat-Stores

Chat Stores speichern den Unterhaltungsverlauf und den Kontext für chatbasierte Anwendungen und ermöglichen so personalisierte Interaktionen. Chat Stores bieten ein zentrales Repository, in dem Chatnachrichten innerhalb einer Unterhaltung gespeichert und abgerufen werden. So kann das LLM den Kontext beibehalten und relevantere Antworten basierend auf dem laufenden Dialog liefern.

Large Language Models sind standardmäßig zustandslos. Das bedeutet, dass sie vorherige Eingaben nicht speichern, es sei denn, diese Eingaben werden jedes Mal explizit angegeben. Durch die Verwendung eines Chat-Speichers können Sie den Kontext der Unterhaltung beibehalten, sodass das Modell im Laufe der Zeit relevantere und kohärentere Antworten generieren kann.

Das Speichermodul in LlamaIndex ermöglicht das effiziente Speichern und Abrufen von Konversationskontext, was personalisiertere und kontextbezogenere Interaktionen in Chatanwendungen ermöglicht. Sie können das Speichermodul in LlamaIndex mit einem ChatStore und einem ChatMemoryBuffer einbinden.
Weitere Informationen finden Sie unter LlamaIndex-Chatspeicher.

Chatverlauf speichern

Im AlloyDB-Notebook für Chat Stores wird gezeigt, wie Sie AlloyDB for PostgreSQL verwenden, um den Chatverlauf mit der Klasse AlloyDBChatStore zu speichern. Sie lernen, wie Sie Folgendes tun:

  • Erstellen Sie mit AlloyDBEngine.from_instance() einen AlloyDBEngine.
  • Standard-AlloyDBChatStore initialisieren
  • Erstellen Sie einen ChatMemoryBuffer.
  • Erstellen Sie eine LLM-Klasseninstanz.
  • Verwenden Sie AlloyDBChatStore ohne Speicherkontext.
  • Verwenden Sie AlloyDBChatStore mit einem Speicherkontext.
  • Chat Engine erstellen und verwenden

Dokumentenleser

Der Dokumentenleser ruft Daten aus AlloyDB effizient ab und wandelt sie in LlamaIndex-kompatible Formate für die Indexierung um. Die Document Reader-Schnittstelle bietet Methoden zum Laden von Daten aus einer Quelle als Documents. Document ist eine Klasse, die einen Text und zugehörige Metadaten speichert. Mit Dokumentenlesern können Sie Dokumente laden, die Sie in Dokumentenspeichern speichern oder zum Erstellen von Indexen verwenden möchten.

Weitere Informationen finden Sie unter LlamaIndex-Dokumentenleser.

Daten als Dokumente abrufen

Im AlloyDB-Notebook für Document Reader wird gezeigt, wie Sie mit AlloyDB Daten als Dokumente mithilfe der Klasse AlloyDBReader abrufen. Sie lernen, wie Sie Folgendes tun:

  • Erstellen Sie mit AlloyDBEngine.from_instance() einen AlloyDBEngine.
  • Erstellen Sie AlloyDBReader.
  • Laden Sie Dokumente mit dem Argument table_name.
  • Dokumente mit einer SQL-Abfrage laden.
  • Legen Sie das Format für den Seiteninhalt fest.
  • Laden Sie die Dokumente.

Nächste Schritte