Création d'une fonction de recherche
Un processus clé du flux de travail RAG (Retrieval Augmented Generation) consiste à extraire des données de la base de données. Dans cet exercice, vous allez concevoir une fonction personnalisée appelée « retrieve() » qui exécutera ce processus crucial dans le dernier exercice du cours.
Cet exercice fait partie du cours
Bases de données vectorielles pour les intégrations avec Pinecone
Instructions
- Veuillez initialiser le client Pinecone avec votre clé API (le client OpenAI est disponible à l'adresse
client). - Définissez la fonction «
retrieve» qui prend quatre paramètres : «query», «top_k», «namespace» et «emb_model». - Intégrez l'
querys d'entrée à l'aide de l'argumentemb_model. top_kRécupérez les vecteurs similaires àquery_embavec des métadonnées, en spécifiant l'namespacefournie à la fonction en tant qu'argument.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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)