Aan de slagGa gratis aan de slag

Een retrieval-functie bouwen

Een kernstap in de Retrieval Augmented Generation (RAG)-workflow is het ophalen van gegevens uit de database. In deze oefening ontwerp je een aangepaste functie retrieve() die dit cruciale proces uitvoert in de laatste oefening van de cursus.

Deze oefening maakt deel uit van de cursus

Vector-databases voor embeddings met Pinecone

Cursus bekijken

Oefeninstructies

  • Initialiseer de Pinecone-client met je API-sleutel (de OpenAI-client is beschikbaar als client).
  • Definieer de functie retrieve met vier parameters: query, top_k, namespace en emb_model.
  • Embed de input query met het argument emb_model.
  • Haal de top_k vergelijkbare vectoren op ten opzichte van query_emb met metadata, waarbij je de meegegeven namespace als argument specificeert.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren