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
Anleitung zur Übung
- Starte den Pinecone-Client mit deinem API-Schlüssel (der OpenAI-Client ist unter
clientverfügbar). - Definiere die Funktion „
retrieve“, die vier Parameter nimmt: „query“, „top_k“, „namespace“ und „emb_model“. - Füge den Eingabe-
querymit dem Argument „emb_model“ ein. - Ruf die Vektoren ab, die ähnlich sind wie
top_kundquery_emb, zusammen mit den Metadaten, und gib dabei die Funktionnamespaceals 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)