LLM-gestützte Anwendungen mit LlamaIndex erstellen

Auf dieser Seite werden einige Anwendungsfälle für die Erstellung von LLM-basierten Anwendungen mit LlamaIndex beschrieben, der in AlloyDB for PostgreSQL eingebunden ist. Links zu Notebooks auf GitHub sollen Ihnen helfen, Ansätze zu untersuchen oder Ihre Anwendung zu entwickeln.

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

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

LlamaIndex eignet sich gut für dokumentorientierte Anwendungen, da der Schwerpunkt auf der strukturierten Dokumentenverwaltung liegt, was die Indexierung und den Abruf vereinfacht. Dieses Framework bietet optimierte Abfragemechanismen, die die Geschwindigkeit und Relevanz des Informationszugriffs verbessern, sowie eine robuste Metadatenverwaltung für differenziertes Filtern.

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

LlamaIndex-Komponenten

AlloyDB bietet die folgenden LlamaIndex-Schnittstellen:

  • Vector Store
  • Dokumentenspeicher
  • Indexspeicher
  • Chat-Shops
  • Dokumentenlesegerät

Weitere Informationen zur Verwendung von LlamaIndex finden Sie in der Kurzanleitung für AlloyDB.

Vector Store

Mit dieser LlamaIndex-Integration können Sie die robuste und skalierbare AlloyDB-Umgebung 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-basierte Anwendungen entwickeln.

LlamaIndex gliedert ein Dokument – DOC-, Text- und PDF-Dateien – in Dokumentkomponenten auf, die als Knoten bezeichnet werden. Der VectorStore darf nur die Einbettungsvektoren der aufgenommenen Knoteninhalte und den Text der Knoten enthalten. Ein Knoten ist ein First-Class-Konzept und enthält Textinhalte, Vektor-Embeddings und Metadaten. Sie können Filter auf diese Metadatenfelder anwenden, um den Abruf von Knoten auf solche 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 Vector Stores.

Vektoreinbettungen mit der AlloyDBVectorStore-Klasse speichern

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

  • Tabelle zum Speichern von Vektoreinbettungen initialisieren
  • Erstellen Sie eine Instanz der Einbettungsklasse mit einem beliebigen Llama-Index-Embeddings-Modell.
  • Standard-AlloyDBVectorStore-Vektorspeicher initialisieren
  • Mit VectorStoreIndex können Sie einen Index aus dem Vektorspeicher erstellen und abfragen.
  • 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 Integration von LlamaIndex-Dokumentspeichern verwaltet den Speicher und Abruf strukturierter Dokumente und optimiert sie für die dokumentorientierten Funktionen von LlamaIndex. Im Dokumentspeicher werden die Inhalte gespeichert, die sich auf die Vektoren im Vektorspeicher beziehen.

Weitere Informationen finden Sie in der Produktdokumentation zu LlamaIndex Document Stores.

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 schlanker Speicher nur für die Knotenmetadaten. Aktualisierungen der Knotenmetadaten erfordern keine erneute Indexierung (d. h. keine erneute Generierung des Einbettungscodes) des gesamten Knotens oder aller Knoten in einem Dokument.

Weitere Informationen finden Sie unter LlamaIndex-Indexspeicher.

Dokumente und Indexe speichern

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

  • Erstellen Sie eine AlloyDBEngine mit AlloyDBEngine.from_instance().
  • Erstellen Sie Tabellen für den DocumentStore und den IndexStore.
  • Standard-AlloyDBDocumentStore initialisieren
  • Richten Sie ein AlloyDBIndexStore ein.
  • Fügen Sie der Docstore Dokumente hinzu.
  • Verwenden Sie Dokumentenspeicher mit mehreren Indexen.
  • Vorhandene Indexe laden

Chat-Shops

Chat-Shops verwalten den Unterhaltungsverlauf und den Kontext für chatbasierte Anwendungen und ermöglichen so personalisierte Interaktionen. Chat-Stores sind zentrale Repositories, in denen Chatnachrichten innerhalb einer Unterhaltung gespeichert und abgerufen werden. So kann das LLM den Kontext beibehalten und auf Grundlage des laufenden Dialogs relevantere Antworten geben.

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

Das Speichermodul in LlamaIndex ermöglicht die effiziente Speicherung und Abfrage des Konversationskontexts, was personalisiertere und kontextbezogenere Interaktionen in Chat-Anwendungen ermöglicht. Sie können das Speichermodul in LlamaIndex mit einem ChatStore und einem ChatMemoryBuffer integrieren.
Weitere Informationen finden Sie unter LlamaIndex Chat Stores.

Chatprotokoll speichern

Im AlloyDB-Notebook für Chat-Stores wird gezeigt, wie Sie mit AlloyDB for PostgreSQL den Chatverlauf mit der Klasse AlloyDBChatStore 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 das AlloyDBChatStore ohne Speicherkontext.
  • Verwenden Sie AlloyDBChatStore mit einem Speicherkontext.
  • Chat Engine erstellen und verwenden

Dokumentenlesegerät

Document Reader ruft Daten effizient aus AlloyDB ab und transformiert sie in LlamaIndex-kompatible Formate für die Indexierung. Die Document Reader-Schnittstelle bietet Methoden zum Laden von Daten aus einer Quelle als Documents. Document ist eine Klasse, in der ein Text und zugehörige Metadaten gespeichert werden. Mit Dokumentenlesegeräten können Sie Dokumente laden, die Sie in Dokumentenspeichern speichern oder zum Erstellen von Indexen verwenden möchten.

Weitere Informationen finden Sie unter LlamaIndex Document Reader.

Daten als Dokumente abrufen

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

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

Nächste Schritte