Erste SchritteKostenlos loslegen

Vorbereiten der Dokumente und der Vektordatenbank

In den nächsten Übungen baust du einen vollständigen RAG Workflow auf, um eine Konversation mit einem PDF Dokument zu führen, das das Papier RAG VS Fine-Tuning enthält: Pipelines, Tradeoffs und eine Fallstudie zur Landwirtschaft von Balaguer et al. (2024). Dazu werden die Dokumente in Stücke zerlegt, in einer Vektordatenbank gespeichert, eine Eingabeaufforderung definiert, um die abgerufenen Dokumente mit den Benutzereingaben zu verbinden, und eine Abrufkette für LLM erstellt, um auf diese externen Daten zuzugreifen.

In dieser Übung bereitest du das Dokument für die Speicherung vor und gibst es in eine Chroma-Vektordatenbank ein. Du verwendest eine RecursiveCharacterTextSplitter, um die PDF zu chunkern und sie mit einer OpenAI Embedding-Funktion in eine Chroma-Vektordatenbank einzubringen. Wie für den Rest des Kurses brauchst du keinen eigenen OpenAI-API-Schlüssel.

Die folgenden Klassen sind bereits für dich importiert worden: RecursiveCharacterTextSplitter, Chroma, und OpenAIEmbeddings.

Diese Übung ist Teil des Kurses

Entwicklung von LLM Anwendungen mit LangChain

Kurs anzeigen

Anleitung zur Übung

  • Teile die Dokumente in data mit einem rekursiven Zeichensplitter mit einem chunk_size von 300 und chunk_overlap von 50 auf; lass das Argument separators weg, da es standardmäßig ["\n\n", "\n", " ", ""] ist.
  • Definiere ein OpenAI-Embedding-Modell mit dem bereitgestellten Platzhalter <OPENAI_API_TOKEN> und verwende es, um die Dokumente in eine Chroma-Datenbank einzubetten und zu importieren.
  • Konfiguriere vectorstore in ein Retriever-Objekt, das die Top 3 Dokumente für die Verwendung in der endgültigen RAG Kette zurückgibt.

Interaktive Übung zum Anfassen

Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.

loader = PyPDFLoader('rag_vs_fine_tuning.pdf')
data = loader.load()

# Split the document using RecursiveCharacterTextSplitter
splitter = ____
docs = splitter.____(data) 

# Embed the documents in a persistent Chroma vector database
embedding_function = OpenAIEmbeddings(api_key='', model='text-embedding-3-small')
vectorstore = Chroma.____(
    ____,
    embedding=____,
    persist_directory=os.getcwd()
)

# Configure the vector store as a retriever
retriever = ____(
    search_type="similarity",
    search_kwargs={____}
)
Bearbeiten und Ausführen von Code