Bir getirici (retrieval) fonksiyonu oluşturma
Retrieval Augmented Generation (RAG) iş akışında temel adımlardan biri, veritabanından veri getirmektir. Bu egzersizde, kursun final egzersizinde kritik rol oynayacak olan retrieve() adında özel bir fonksiyon tasarlayacaksın.
Bu egzersiz
Pinecone ile Vektör Veritabanları ve Embeddings
kursunun bir parçasıdırEgzersiz talimatları
- Pinecone istemcisini API anahtarınla başlat (OpenAI istemcisi
clientolarak hazır). - Dört parametre alan
retrievefonksiyonunu tanımla:query,top_k,namespaceveemb_model. emb_modelargümanını kullanarak girişqueryifadesini embed et.- Fonksiyona argüman olarak verilen
namespacei belirterek,query_embile en benzertop_kvektörü üstverileriyle birlikte getir.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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)