IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Inizializza il client Pinecone con la tua chiave API (il client OpenAI è disponibile come client).
  • Definisci la funzione retrieve che accetta quattro parametri: query, top_k, namespace ed emb_model.
  • Crea l'embedding della query in input usando l'argomento emb_model.
  • Recupera i top_k vettori più simili a query_emb con i metadati, specificando il namespace passato 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)
Modifica ed esegui il codice