LoslegenKostenlos loslegen

RAG-Fragen-Antwort-Funktion

Du bist fast am Ziel! Der letzte Schritt im RAG-Workflow ist, die gefundenen Dokumente in ein Frage-Antwort-Modell einzubauen.

Die Funktion „ prompt_with_context_builder() “ wurde bereits definiert und steht dir zur Verfügung. Diese Funktion holt die Dokumente aus dem Pinecone-Index und macht sie zu einer Eingabeaufforderung, die das Frage-Antwort-Modell verstehen kann:

def prompt_with_context_builder(query, docs):
    delim = '\n\n---\n\n'
    prompt_start = 'Answer the question based on the context below.\n\nContext:\n'
    prompt_end = f'\n\nQuestion: {query}\nAnswer:'

    prompt = prompt_start + delim.join(docs) + prompt_end
    return prompt

Du implementierst die Funktion „ question_answering() “, die dem Sprachmodell „ gpt-4o-mini “ von OpenAI zusätzlichen Kontext und Quellen liefert, mit denen es deine Fragen beantworten kann.

Diese Übung ist Teil des Kurses

Vektordatenbanken für Einbettungen mit Pinecone

Kurs anzeigen

Anleitung zur Übung

  • Starte den Pinecone-Client mit deinem API-Schlüssel (der OpenAI-Client ist unter client verfügbar).
  • Hol die drei Dokumente, die dem Text „ query ” am ähnlichsten sind, aus dem Namensraum „ 'youtube_rag_dataset' ”.
  • Erstelle eine Antwort auf die angegebenen E-Mails „ prompt “ und „ sys_prompt “ mit dem Modell „ 'gpt-4o-mini' “ von OpenAI, das mit dem Funktionsargument „ chat_model “ angegeben ist.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Initialize the Pinecone client
pc = Pinecone(api_key="____")
index = pc.Index('pinecone-datacamp')

query = "How to build next-level Q&A with OpenAI"

# Retrieve the top three most similar documents and their sources
documents, sources = retrieve(____, top_k=____, namespace='____', emb_model="text-embedding-3-small")

prompt_with_context = prompt_with_context_builder(query, documents)
print(prompt_with_context)

def question_answering(prompt, sources, chat_model):
    sys_prompt = "You are a helpful assistant that always answers questions."
    
    # Use OpenAI chat completions to generate a response
    res = ____(
        model=____,
        messages=[
            {"role": "system", "content": ____},
            {"role": "user", "content": ____}
        ],
        temperature=0
    )
    answer = res.choices[0].message.content.strip()
    answer += "\n\nSources:"
    for source in sources:
        answer += "\n" + source[0] + ": " + source[1]
    
    return answer

answer = question_answering(
  prompt=prompt_with_context,
  sources=sources,
  chat_model='gpt-4o-mini')
print(answer)
Code bearbeiten und ausführen