Creare una funzione di retrieval
Un passaggio chiave nel flusso di lavoro di Retrieval Augmented Generation (RAG) è il recupero dei dati dal database. In questo esercizio progetterai una funzione personalizzata chiamata retrieve() che eseguirà questo passaggio cruciale nell'esercizio finale del corso.
Questo esercizio fa parte del corso
Database vettoriali per Embeddings con Pinecone
Istruzioni dell'esercizio
- Inizializza il client Pinecone con la tua chiave API (il client OpenAI è disponibile come
client). - Definisci la funzione
retrieveche accetta quattro parametri:query,top_k,namespaceedemb_model. - Crea l'embedding della
queryin input usando l'argomentoemb_model. - Recupera i
top_kvettori più simili aquery_embcon i metadati, specificando ilnamespacepassato alla funzione come argomento.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)