Haystack - Framework NLP untuk Produksi
Daftar Isi
Pendahuluan
Haystack adalah framework NLP open-source yang dirancang untuk membangun sistem pencarian dan tanya-jawab siap produksi. Dikembangkan oleh deepset, Haystack menyediakan arsitektur modular berbasis pipeline yang memudahkan penggabungan retriever, reader, generator, dan komponen NLP lainnya menjadi aplikasi yang powerful.
Dengan Haystack 2.x, framework ini telah dirancang ulang dengan sistem pipeline fleksibel yang mendukung alur kerja AI ekstraktif maupun generatif. Baik Anda membangun sistem pencarian dokumen sederhana maupun pipeline Retrieval-Augmented Generation (RAG) yang kompleks, Haystack menyediakan blok pembangun dan penghubung untuk menggabungkannya.
Tutorial ini mencakup konsep inti Haystack, memandu Anda membangun pipeline praktis, menunjukkan cara membuat komponen kustom, dan mendemonstrasikan cara men-deploy sistem Anda sebagai REST API yang siap untuk lalu lintas produksi.
Prasyarat
- Python 3.9 atau lebih tinggi
- Pemahaman dasar konsep NLP (embedding, retrieval, generation)
- API key OpenAI (untuk komponen generator)
pip install haystack-ai "sentence-transformers>=2.2.0" "opensearch-haystack" fastapi uvicorn
export OPENAIAPIKEY="sk-kunci-anda-di-sini"
Memahami Arsitektur Haystack
Haystack 2.x dibangun di atas tiga konsep inti:
Komponen
Komponen adalah blok pembangun Haystack. Setiap komponen melakukan tugas spesifik seperti mengambil dokumen, menghasilkan teks, atau mengonversi format file. Komponen mendeklarasikan input dan output secara eksplisit, memungkinkan framework memvalidasi koneksi saat konstruksi pipeline.
Pipeline
Pipeline menghubungkan komponen menjadi graf berarah asiklik (DAG). Data mengalir dari satu komponen ke komponen berikutnya berdasarkan koneksi input/output yang dideklarasikan. Pipeline bisa bersifat linear atau bercabang.
Document Store
Document store adalah lapisan persistensi. Mereka menyimpan dokumen beserta metadata dan embedding terkait, menyediakan antarmuka pengambilan untuk komponen pipeline.
from haystack import Pipeline, Document
from haystack.components.writers import DocumentWriter
from haystack.components.preprocessors import DocumentCleaner, DocumentSplitter
Pipeline sederhana yang membersihkan dan memecah dokumen
preprocessing = Pipeline()
preprocessing.addcomponent("pembersih", DocumentCleaner())
preprocessing.addcomponent("pemecah", DocumentSplitter(
splitby="sentence",
splitlength=3,
splitoverlap=1,
))
preprocessing.connect("pembersih", "pemecah")
Jalankan pipeline
dokumenlist = [
Document(content="""Haystack adalah framework NLP open-source. Framework ini menyediakan
komponen modular untuk membangun sistem pencarian. Framework mendukung pendekatan
ekstraktif dan generatif. Anda dapat menggabungkan beberapa komponen menjadi pipeline.
Pipeline dapat di-deploy sebagai REST API.""")
]
hasil = preprocessing.run({"pembersih": {"documents": dokumenlist}})
for dok in hasil["pemecah"]["documents"]:
print(f" Potongan: {dok.content[:80]}...")
Document Store
Document store adalah tulang punggung dari setiap aplikasi Haystack. Mereka menyimpan dokumen dan memungkinkan pengambilan yang efisien.
InMemoryDocumentStore
Terbaik untuk pengembangan, pengujian, dan dataset kecil.
from haystack.documentstores.inmemory import InMemoryDocumentStore
Buat document store in-memory
store = InMemoryDocumentStore(embedding
similarityfunction="cosine")
Tulis dokumen
dokumen = [
Document(