LoslegenKostenlos loslegen

Eine Suchfunktion erstellen

Ein wichtiger Schritt beim Retrieval Augmented Generation (RAG)-Workflow ist das Abrufen von Daten aus der Datenbank. In dieser Übung entwirfst du eine benutzerdefinierte Funktion namens „ retrieve() “, die diesen wichtigen Prozess in der letzten Übung des Kurses ausführt.

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).
  • Definiere die Funktion „ retrieve “, die vier Parameter nimmt: „ query “, „ top_k “, „ namespace “ und „ emb_model “.
  • Füge den Eingabe- query mit dem Argument „ emb_model “ ein.
  • Ruf die Vektoren ab, die ähnlich sind wie top_k und query_emb, zusammen mit den Metadaten, und gib dabei die Funktion namespace als Argument an.

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')

# Define a retrieve function that takes four arguments: query, top_k, namespace, and emb_model
def retrieve(query, top_k, namespace, emb_model):
    # Encode the input query using OpenAI
    query_response = ____(
        input=____,
        model=____
    )
    
    query_emb = query_response.data[0].embedding
    
    # Query the index using the query_emb
    docs = index.query(vector=____, top_k=____, namespace=____, include_metadata=True)
    
    retrieved_docs = []
    sources = []
    for doc in docs['matches']:
        retrieved_docs.append(doc['metadata']['text'])
        sources.append((doc['metadata']['title'], doc['metadata']['url']))
    
    return retrieved_docs, sources

documents, sources = retrieve(
  query="How to build next-level Q&A with OpenAI",
  top_k=3,
  namespace='youtube_rag_dataset',
  emb_model="text-embedding-3-small"
)
print(documents)
print(sources)
Code bearbeiten und ausführen