Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen eines einfachen RAG-Agenten mit LlamaIndex

Erstellen eines einfachen RAG-Agenten mit LlamaIndex

DDD
DDDOriginal
2024-10-01 06:38:02353Durchsuche

Building a simple RAG agent with LlamaIndex

LlamaIndex ist ein Framework zum Erstellen kontexterweiterter generativer KI-Anwendungen mit LLMs.

Was ist Kontexterweiterung?

Kontexterweiterung bezieht sich auf eine Technik, bei der einem LLM-Modell zusätzliche relevante Informationen oder Kontext bereitgestellt werden, wodurch sein Verständnis und seine Antworten auf eine bestimmte Anfrage verbessert werden. Diese Erweiterung umfasst typischerweise das Abrufen, Integrieren oder Anhängen externer Datenquellen wie Dokumente oder Einbettungen an die Modelleingabe. Das Ziel besteht darin, das Modell fundierter zu machen, indem es mit dem notwendigen Kontext ausgestattet wird, der ihm hilft, bessere, genauere und differenziertere Antworten zu geben. Retrieval Augmented Generation (RAG) ist das beliebteste Beispiel für Kontexterweiterung.

Was sind Agenten?

Agenten sind automatisierte Argumentations- und Entscheidungsmaschinen, die von LLMs unterstützt werden und Tools zur Durchführung von Recherchen, Datenextraktion, Websuche und anderen Aufgaben verwenden. Sie können für einfache Anwendungsfälle wie die Beantwortung von Fragen auf der Grundlage der Daten verwendet werden, um Entscheidungen zu treffen und Maßnahmen zu ergreifen, um Aufgaben zu erledigen.

In diesem Beitrag erstellen wir einen einfachen RAG-Agenten mit LlamaIndex.

Erstellen eines RAG-Agenten

Abhängigkeiten installieren

Wir verwenden Python, um mithilfe von LlamaIndex einen einfachen RAG-Agenten zu erstellen. Lassen Sie uns zunächst die erforderlichen Abhängigkeiten wie folgt installieren:

pip install llama-index python-dotenv

LLM einrichten und Dokumente laden

Wir werden den gpt-4o-mini von OpenAI als LLM verwenden. Sie müssen den API-Schlüssel in die Umgebungsvariablendatei einfügen. Weitere Informationen zum Einrichten eines lokalen LLM mit LLamaIndex finden Sie hier.

from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, Settings
from llama_index.llms.openai import OpenAI
from dotenv import load_dotenv

# Load environment variables (e.g., OPENAI_API_KEY)
load_dotenv()

# Configure OpenAI model
Settings.llm = OpenAI(model="gpt-4o-mini")

# Load documents from the local directory
documents = SimpleDirectoryReader("./data").load_data()

# Create an index from documents for querying
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()

  • Zuerst konfigurieren wir das LLM-Modell mit OpenAI und geben das gpt-4o-mini-Modell an. Sie können je nach Bedarf zu anderen verfügbaren Modellen/LLMs wechseln.
  • Dann verwenden wir SimpleDirectoryReader, um Dokumente aus dem lokalen ./data-Verzeichnis zu laden. Dieser Reader durchsucht das Verzeichnis, liest Dateien und strukturiert die Daten für die Abfrage.
  • Als nächstes erstellen wir einen Vektorspeicherindex aus den geladenen Dokumenten, der es uns ermöglicht, während der Abfrageausführung einen effizienten vektorbasierten Abruf durchzuführen.

Erstellen benutzerdefinierter Funktionen für Agenten

Lassen Sie uns nun einige grundlegende Funktionen definieren, die der Agent zum Ausführen von Aufgaben verwenden kann.

def multiply(a: float, b: float) -> float:
    """Multiply two numbers and returns the product"""
    return a * b

def add(a: float, b: float) -> float:
    """Add two numbers and returns the sum"""
    return a + b

Erstellen von Tools für den Agenten

Als nächstes erstellen wir Tools aus den Funktionen und der Abfrage-Engine, die wir zuvor definiert haben, die der Agent zum Ausführen von Aufgaben verwenden wird. Diese Tools fungieren als Dienstprogramme, die der Agent bei der Bearbeitung verschiedener Arten von Abfragen nutzen kann.

from llama_index.core.tools import FunctionTool, QueryEngineTool

# Wrap functions as tools
add_tool = FunctionTool.from_defaults(fn=add)
multiply_tool = FunctionTool.from_defaults(fn=multiply)

# Create a query engine tool for document retrieval
space_facts_tool = QueryEngineTool.from_defaults(
    query_engine,
    name="space_facts_tool",
    description="A RAG engine with information about fun space facts."
)

  • Das FunctionTool umschließt die Additions- und Multiplikationsfunktionen und stellt sie als Werkzeuge bereit. Der Agent kann nun auf diese Tools zugreifen, um Berechnungen durchzuführen.
  • Das QueryEngineTool umschließt die query_engine, damit der Agent Informationen aus dem Vektorspeicher abfragen und abrufen kann. Wir haben es space_facts_tool mit einer Beschreibung genannt, die darauf hinweist, dass dieses Tool Informationen über Weltraumfakten abrufen kann. Sie können alles aufnehmen und das Tool entsprechend den aufgenommenen Daten anpassen.

Erstellen des Agenten

Wir erstellen nun den Agenten mit ReActAgent. Der Agent ist dafür verantwortlich, zu entscheiden, wann er die Tools nutzt und wie er auf Anfragen reagiert.

from llama_index.core.agent import ReActAgent

# Create the agent with the tools
agent = ReActAgent.from_tools(
    [multiply_tool, add_tool, space_facts_tool], verbose=True
)

Dieser Agent verwendet das ReAct-Framework, das es dem Modell ermöglicht, zu argumentieren und zu handeln, indem es die gegebenen Werkzeuge in einer logischen Reihenfolge verwendet. Der Agent wird mit den von uns erstellten Tools initialisiert und das Flag verbose=True gibt detaillierte Informationen darüber aus, wie der Agent Aufgaben begründet und ausführt.

Ausführen des Agenten

Lassen Sie uns abschließend den Agenten in einer interaktiven Schleife ausführen, in der er Benutzeranfragen verarbeitet, bis wir ihn beenden.

while True:
    query = input("Query: ")

    if query == "/bye":
        exit()

    response = agent.chat(query)
    print(response)
    print("-" * 10)

Wie funktioniert der RAG-Agent?

  • Wenn Sie eine Frage zu den von Ihnen aufgenommenen Dokumenten stellen, ruft das space_facts_tool, d. h. das Vektorspeichertool, die relevanten Informationen mithilfe der query_engine ab.
  • Wenn Sie nach Berechnungen fragen, verwendet der Agent entweder add_tool oder multiply_tool, um diese Aufgaben auszuführen.
  • Der Agent entscheidet spontan, welches Tool er verwenden möchte, basierend auf der Benutzerabfrage und stellt die Ausgabe bereit.

Das obige ist der detaillierte Inhalt vonErstellen eines einfachen RAG-Agenten mit LlamaIndex. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn