ComenzarEmpieza gratis

Creación de una función de recuperación

Un proceso clave en el flujo de trabajo de generación aumentada por recuperación (RAG) es la recuperación de datos de la base de datos. En este ejercicio, diseñarás una función personalizada llamada « retrieve() » que realizará este proceso crucial en el ejercicio final del curso.

Este ejercicio forma parte del curso

Bases de datos vectoriales para incrustaciones con Pinecone

Ver curso

Instrucciones del ejercicio

  • Inicializa el cliente Pinecone con tu clave API (el cliente OpenAI está disponible en client).
  • Define la función retrieve que toma cuatro parámetros: query, top_k, namespace y emb_model.
  • Incrusta la entrada query utilizando el argumento emb_model.
  • Recupera los vectores similares a top_k y query_emb con metadatos, especificando el namespace proporcionado a la función como argumento.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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)
Editar y ejecutar código