Bertahan dengan Status: Bangun Alat Pencarian RAG
Pada pelajaran sebelumnya, Anda melihat bagaimana basis pengetahuan berbasis vektor untuk buku petunjuk peralatan dapat dibangun dan dicari menggunakan embedding.
Sekarang, Anda akan membangun alat kustom yang membungkus logika pencarian ini, sehingga agen dapat menggunakannya untuk menjawab pertanyaan terkait peralatan.
Alat yang Anda tulis akan menjadi subclass dari kelas dasar Tool dan mengekspos satu masukan: pertanyaan tentang pengoperasian peralatan
Anda sudah memiliki akses ke:
- Variabel bernama
vector_store, yang berisi indeks FAISS yang telah dibuat sebelumnya - Potongan dokumen berisi konten buku petunjuk peralatan, yang sudah di-embed dan siap dicari
Tugas Anda adalah mengimplementasikan struktur dan logika alat yang akan membuat basis pengetahuan ini dapat diakses oleh agen.
Latihan ini adalah bagian dari kursus
Agen AI dengan Hugging Face smolagents
Petunjuk latihan
- Terima parameter
vector_storedalam metode__init__(). - Tambahkan
querysebagai parameter untuk metodeforward(). - Gunakan
self.kuntuk menetapkan berapa banyak dokumen relevan yang harus dikembalikan dari similarity search.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
class ApplianceSearchTool(Tool):
name = "appliance_manual_search"
description = "Search appliance manuals for maintenance and usage information"
inputs = {"query": {"type": "string", "description": "Question about appliance operation"}}
output_type = "string"
# Pass the vector store into the constructor
def __init__(self, ____, k=3):
super().__init__()
self.vector_store = vector_store
self.k = k
# Accept the query string as input to the forward method
def forward(self, ____):
# Use self.k here to specify how many chunks to return
docs = self.vector_store.similarity_search(query, k=____)
return "\n\n".join(doc.page_content for doc in docs) or "No relevant manual sections found."