03. Pineconce
Pinecone
Pinecone adalah basis data vektor berkinerja tinggi, solusi penyimpanan dan pengambilan vektor yang efisien untuk aplikasi AI dan pembelajaran mesin.
Mari kita bandingkan database vektor seperti Pinecone, Chroma, dan Faiss.
Keuntungan dari Pinecone
Skalabilitas: Memberikan skalabilitas yang sangat baik untuk set data yang besar.
Mudah dikelola: Layanan yang dikelola sepenuhnya, mengurangi beban manajemen infrastruktur.
Pembaruan waktu nyata: Data dapat dimasukkan, diperbarui, dan dihapus secara waktu nyata.
Ketersediaan tinggi: Berbasis awan untuk ketersediaan dan daya tahan yang tinggi.
Ramah API: Mudah diintegrasikan melalui API RESTful/Python.
Kekurangan Pinecone
Biaya: Bisa relatif mahal dibandingkan dengan Chroma atau Faiss.
Kustomisasi terbatas: Karena ini adalah layanan yang dikelola sepenuhnya, Anda mungkin terbatas pada kustomisasi yang mendetail.
Lokasi data: Karena Anda perlu menyimpan data Anda di awan, mungkin ada masalah kedaulatan data.
Dibandingkan dengan Chroma atau Faiss:
Chroma/FAISS merupakan sumber terbuka dan dapat berjalan secara lokal, menghasilkan biaya di muka yang lebih rendah dan kontrol data yang lebih besar. Mereka sangat mudah disesuaikan, tetapi mungkin terbatas dibandingkan dengan Pinecone dalam hal skalabilitas skala besar.
Pilihannya harus didasarkan pada ukuran, persyaratan, dan anggaran proyek Anda. Untuk lingkungan produksi skala besar, Pinecone mungkin merupakan keuntungan, tetapi untuk proyek yang lebih kecil atau lingkungan eksperimental, Chroma atau Faiss mungkin lebih cocok.
Catatan
Petunjuk pembaruan
Kamus istilah yang tidak digunakan untuk pemrosesan bahasa indonesia
Pemrosesan awal data
Di bawah ini adalah preprocessing dari sebuah dokumen biasa. Baca semua file .pdf di bawah ROOT_DIR dan simpan di document_list.
Melakukan prapemrosesan dokumen untuk penyimpanan DB di Pinecone. Selama proses ini, Anda dapat menentukan metadata_keys.
Jika Anda ingin menandai metadata tambahan, tambahkan metadata dalam tugas prapemrosesan sebelum melanjutkan.
split_docs: Daftar [Dokumen] yang berisi hasil pemisahan dokumen.metadata_keys: Daftar yang berisi kunci metadata untuk ditambahkan ke dokumen.min_length: Menentukan panjang minimum dokumen. Dokumen yang lebih pendek dari panjang ini akan dikecualikan.use_basename: Menentukan apakah akan menggunakan nama file berdasarkan jalur sumber. Nilai defaultnya adalah False.
Mempersiapkan dokumen
Ekstrak informasi
metadatayang diperlukan.Menyaring hanya hari yang memiliki panjang minimal.
Menentukan apakah akan menggunakan
basenamedokumen. Nilai standarnya adalahFalse(Salah).Di mana
basenameberarti bagian terakhir dari jalur file.
Menerbitkan kunci API
Profil - Akun - Proyek - Pemula - Kunci API - Penerbitan
Tambahkan yang berikut ini ke file .env Anda
Membuat indeks VectorStore baru
Buat indeks baru di Pinecone.

Membuat indeks pinecone.
Catatan - metric menentukan bagaimana kemiripan diukur. Jika Anda mempertimbangkan HybridSearch, tentukan metrik sebagai dotproduct.
Di bawah ini adalah contoh penggunaan pod berbayar. Pod berbayar menawarkan fungsionalitas yang lebih luas daripada Pod Tanpa Server gratis.
Membuat Sparse
Buat Penyandi Jarang (Sparse Encoder).
Lakukan pemrosesan stopword dengan
Kiwi Tokeniser.Gunakan Penyandi Jarang untuk mempelajari konten. Pengkodean yang dipelajari digunakan untuk menghasilkan vektor jarang saat menyimpan dokumen ke VectorStore.
Melatih korpus pada Sparse Encoder.
save_path: Jalur untuk menyimpan Sparse Encoder. Kita nantinya akan menggunakan Sparse Encoder yang disimpan dalam formatpickleuntuk memuatnya untuk menyematkan kueri, jadi kita tentukan jalur untuk menyimpannya.
Di bawah ini adalah kode yang dapat digunakan jika Anda perlu mengingat kembali Sparse Encoder yang telah Anda pelajari dan simpan nanti.
Pinecone: Tambahkan ke Indeks DB (Upsert)

context: Isi dokumen.page: Nomor halaman dokumen.source: Sumber dokumen.values: Penyematan dokumen yang diperoleh melalui Embedder.sparse values: Penyematan dokumen yang diperoleh melalui Penyandi Jarang.
Unggah dokumen dalam batch tanpa pemrosesan terdistribusi. Jika Anda tidak memiliki banyak dokumen, gunakan metode berikut.
Berikut ini melakukan pemrosesan terdistribusi untuk mengunggah dokumen besar dengan cepat. Gunakan untuk unggahan besar.
Pencarian/penghapusan indeks
Metode describe_index_stats menyediakan informasi statistik tentang isi indeks. Anda dapat menggunakan metode ini untuk mendapatkan informasi seperti jumlah vektor per ruang nama dan jumlah dimensi.
Parameter:
filter(Opsional [Dict [str, Union [str, float, int, bool, List, dict]]): Filter untuk mengembalikan statistik hanya untuk vektor yang memenuhi kondisi tertentu. Defaultnya adalah Tidak Ada**kwargs: argumen kata kunci tambahan.
Return
DescribeIndexStatsResponse: Objek yang berisi informasi statistik tentang indeks.
Contoh penggunaan
Penggunaan default: index.describe_index_stats() * Menerapkan filter: index.describe_index_stats(filter = {'key': 'value'})
Catatan - pemfilteran metadata hanya tersedia untuk pengguna berbayar.
Menghapus namespace
Fitur-fitur berikut ini hanya tersedia untuk pengguna berbayar. Pengguna berbayar dapat menggunakan pemfilteran metadata.
Membuat Retriever
Mengatur parameter inisialisasi PineconeKiwiHybridRetriever
Fungsi init_pinecone_index dan kelas PineconeKiwiHybridRetriever mengimplementasikan sistem pencarian hibrida menggunakan Pinecone. Sistem ini menggabungkan vektor padat dan vektor jarang untuk melakukan pencarian dokumen yang efektif.
Menginisialisasi indeks Pinecone
Fungsi init_pinecone_index menginisialisasi indeks Pinecone dan menyiapkan komponen-komponen yang diperlukan.
Parameter
nama_indeks(str): Nama indeks Pineconenamespace(str): Ruang nama yang akan digunakanapi_key(str): Kunci API Pineconesparse_encoder_pkl_path(str): Jalur file acar encoder yang jarangstopwords(List[str]): Daftar stopwordstokenizer(str): Tokeniser yang akan digunakan (default: “kiwi”)penyematan(Embeddings): Model penyematantop_k(int): Jumlah maksimum dokumen yang akan dikembalikan (default: 10)alpha(float): Parameter pembobotan untuk vektor padat dan vektor jarang (default: 0.5)
Fungsi utama
Menginisialisasi indeks Pinecone dan mengeluarkan informasi statistik
Memuat penyandi jarang (BM25) dan mengatur torsiiser
Menentukan namespace
PineconeKiwiHybridRetriever
Kelas PineconeKiwiHybridRetriever mengimplementasikan retriever hibrida yang menggabungkan Pinecone dan Kiwi.
Properti utama
embeddings: model penyematan untuk transformasi vektor padatsparse_encoder: penyandi untuk transformasi vektor jarangindex: objek indeks Pineconetop_k: jumlah maksimum dokumen yang akan dikembalikanalpha: parameter pembobotan untuk vektor padat dan vektor jarangnamespace: ruang nama dalam indeks Pinecone
Fitur
HybridSearch Retriever menggabungkan vektor padat dan vektor jarang
Strategi pencarian dapat dioptimalkan dengan menyesuaikan bobot
Berbagai pemfilteran metadata dinamis dapat diterapkan (menggunakan search_kwargs:
filter,k,rerank,rerank_model,top_n, dll.)
Contoh penggunaan
Inisialisasi komponen yang diperlukan dengan fungsi
init_pinecone_indexBuat instance
PineconeKiwiHybridRetrieverdengan komponen yang telah diinisialisasiLakukan pencarian hibrida dengan menggunakan pencari yang telah dibuat.
Pencarian umum
Menggunakan search_kwargs dinamis - k: tentukan jumlah maksimum dokumen yang akan dikembalikan
Gunakan dynamic search_kwargs - alpha: Parameter pembobotan untuk vektor padat dan jarang. Tentukan nilai antara 0 dan 1. 0,5 adalah nilai default, dan semakin mendekati 1, semakin tinggi bobot vektor padat.
Memfilter metadata

Menggunakan search_kwargs dinamis - filter: terapkan pemfilteran metadata
(Contoh) Hanya mencari dokumen dengan page kurang dari 5.
Menggunakan search_kwargs dinamis - filter: terapkan pemfilteran metadata
(Contoh) pencarian sumber di dalam dokumen SPRi AI Brief_Agustus_Industry Trends.pdf.
Menerapkan Reranking
Ini masih berupa fitur awal.
Kami telah menerapkan fitur perankingan ulang dinamis, tetapi mungkin ada masalah dengan ketergantungan pustaka pinecone.
Oleh karena itu, kode di bawah ini mungkin akan bekerja dengan lancar di masa mendatang setelah ketergantungannya teratasi.
Dokumentasi referensi: https://docs.pinecone.io/guides/inference/rerank
Last updated