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
Instrucciones del ejercicio
- Inicializa el cliente Pinecone con tu clave API (el cliente OpenAI está disponible en
client). - Define la función
retrieveque toma cuatro parámetros:query,top_k,namespaceyemb_model. - Incrusta la entrada
queryutilizando el argumentoemb_model. - Recupera los vectores similares a
top_kyquery_embcon metadatos, especificando elnamespaceproporcionado 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)