Créer une fonction de repérage de documents
Une étape clé du flux de travail Retrieval Augmented Generation (RAG) consiste à repérer les données dans la base de données. Dans cet exercice, vous allez concevoir une fonction personnalisée appelée retrieve() qui effectuera ce processus essentiel dans l'exercice final du cours.
Cette activité fait partie du cours
Créer des applications d'IA avec Pinecone
Instructions de l’exercice
- Initialisez le client Pinecone avec votre clé d'API (le client OpenAI est disponible sous
client). - Définissez la fonction
retrievequi prend quatre paramètres :query,top_k,namespaceetemb_model. - Générez l'intégration (embedding) de l'entrée
queryen utilisant l'argumentemb_model. - Repérez les
top_kvecteurs les plus similaires àquery_embavec leurs métadonnées, en précisant l'argumentnamespacefourni à la fonction.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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)