Membangun fungsi retrieval
Proses kunci dalam alur kerja Retrieval Augmented Generation (RAG) adalah mengambil data dari basis data. Pada latihan ini, Anda akan merancang fungsi kustom bernama retrieve() yang akan menjalankan proses krusial ini di latihan terakhir kursus.
Latihan ini adalah bagian dari kursus
Database Vektor untuk Embeddings dengan Pinecone
Petunjuk latihan
- Inisialisasi klien Pinecone dengan API key Anda (klien OpenAI tersedia sebagai
client). - Definisikan fungsi
retrieveyang menerima empat parameter:query,top_k,namespace, danemb_model. - Buat embedding untuk
querymasukan menggunakan argumenemb_model. - Ambil
top_kvektor yang paling mirip denganquery_embbeserta metadata, dengan menetapkannamespaceyang diberikan ke fungsi sebagai argumen.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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)