Traffine I/O

Bahasa Indonesia

2023-05-02

Pinecone

Apa itu Pinecone

Pinecone adalah database vektor yang dijalankan pada cloud dan dikelola secara terpusat yang memungkinkan pembangunan aplikasi pencarian vektor berkinerja tinggi dengan mudah. Dengan API yang sederhana dan tanpa kompleksitas infrastruktur, Pinecone dirancang agar lancar dan bebas masalah. Inti dari Pinecone adalah memberikan kemampuan kepada bisnis untuk mencari, mencocokkan, dan mengurutkan hasil berdasarkan komputasi vektor kompleks, yang merupakan fitur penting dalam aplikasi pembelajaran mesin modern.

Fitur-fitur Pinecone

Pinecone menawarkan sejumlah fitur unggulan yang membuatnya menjadi alat yang berharga bagi pengembang yang berurusan dengan aplikasi pembelajaran mesin berukuran besar:

  • Cepat
    Pinecone memungkinkan respons kueri dengan latensi sangat rendah, bahkan ketika menangani puluhan miliar item. Hal ini membuatnya ideal untuk aplikasi berskala besar, memberikan kecepatan dan efisiensi tinggi terlepas dari skala yang digunakan.

  • Terbarukan
    Dengan Pinecone, Anda dapat mendapatkan pembaruan langsung dari indeks setiap kali data ditambahkan, diedit, atau dihapus. Hal ini memastikan bahwa data Anda selalu terbaru, memberikan gambaran yang akurat dari data Anda pada setiap waktu.

  • Difilter
    Pinecone memungkinkan kombinasi pencarian vektor dan filter metadata. Kemampuan ini menghasilkan hasil yang lebih akurat dan lebih cepat, karena menyederhanakan proses pencarian dan memberikan hasil yang lebih relevan.

  • Dikelola Sepenuhnya
    Kemudahan implementasi, penggunaan, dan perluasan adalah fitur kunci dari Pinecone. Ini dirancang untuk menyederhanakan operasi sambil menjaga operasi yang lancar dan aman, membebaskan waktu dan resource bagi pengembang untuk fokus lebih pada pengembangan aplikasi daripada pengelolaan database.

Konsep-konsep dalam Pinecone

Saya akan memperkenalkan beberapa konsep utama dalam Pinecone.

Manajemen Organisasi

  • Organisasi
    Organisasi adalah kumpulan proyek yang menggunakan penagihan yang sama. Setiap proyek merupakan bagian dari satu organisasi. Organisasi memiliki kekuatan untuk mengelola anggota dan kuota proyek di bawah naungan organisasi tersebut.

  • Proyek
    Proyek bertanggung jawab untuk mengelola Pod dan Indeks. Proyek menentukan lingkungan penggunaan (seperti layanan cloud dan wilayah). Kunci API dikeluarkan pada tingkat proyek, menambahkan lapisan keamanan dan kekelolaan tambahan.

https://docs.pinecone.io/docs/organizations
https://docs.pinecone.io/docs/projects

Manajemen Indeks

  • Indeks (Index)
    Indeks adalah unit yang mengelola vektor. Indeks menentukan berbagai atribut seperti dimensi vektor, metrik yang digunakan untuk perhitungan kesamaan (kesamaan kosinus, jarak Euclidean, produk dot), dan jenis metadata vektor.

  • Vektor (Vector)
    Vektor adalah data yang disimpan dalam indeks. Ini adalah titik data berdimensi tinggi, masing-masing mewakili item atau fitur dalam aplikasi.

  • Metadata
    Metadata adalah informasi tambahan yang terlampir pada vektor. Pinecone mendukung berbagai tipe data seperti string, angka, nilai boolean, dan daftar string. Metadata dapat digunakan untuk menyaring vektor selama kueri, memberikan hasil pencarian yang lebih efisien.

  • Pod
    Pod adalah unit perangkat keras yang mengelola indeks. Setiap indeks dikelola oleh satu atau lebih Pod. Setiap Pod memiliki tipe dan ukuran tertentu.

  • Tipe (Type)
    Tipe Pod dapat berupa s1 (untuk efisiensi penyimpanan), atau p1, p2 (untuk efisiensi kinerja).

  • Ukuran (Size)
    Ukuran Pod merujuk pada jumlah data yang dapat disimpan. Kapasitas ditentukan oleh kombinasi tipe dan ukuran.

  • Namespace
    Namespace memungkinkan pembagian vektor dalam indeks menjadi koleksi yang berbeda. Setiap vektor termasuk dalam satu namespace. Dengan menyebutkan namespace selama kueri, Anda dapat mencari vektor dalam namespace tertentu.

  • Koleksi (Collection)
    Koleksi adalah salinan indeks pada waktu tertentu. Ini dapat digunakan untuk pencadangan data atau untuk mentransfer data antar Pod yang berbeda. Fitur ini dapat sangat berguna dalam skenario pemulihan bencana atau untuk menjaga integritas data di unit perangkat keras yang berbeda.

https://docs.pinecone.io/docs/indexes

Endpoint API

Pinecone menyediakan beberapa endpoint API yang menangani operasi vektor. API ini juga dapat diakses melalui perpustakaan klien Python atau Node.js.

https://docs.pinecone.io/reference/describe_index_stats_post

DescribeIndexStats

API DescribeIndexStats mengembalikan statistik tentang konten indeks. Ini mencakup jumlah vektor per namespace dan jumlah dimensi, memungkinkan pengguna untuk mendapatkan wawasan tentang status terkini indeks.

bash
$ curl --request POST \
     --url https://index_name-project_id.svc.environment.pinecone.io/describe_index_stats \
     --header 'accept: application/json' \
     --header 'content-type: application/json'
{
  "namespaces": {
    "": {
      "vectorCount": 50000
    },
    "example-namespace-2": {
      "vectorCount": 30000
    }
  },
  "dimension": 1024,
  "index_fullness": 0.4
}

Fetch

API Fetch digunakan untuk mengambil vektor berdasarkan ID-nya. Operasi ini sangat berguna ketika Anda ingin mengakses vektor tertentu dari indeks tanpa melakukan pencarian kesamaan.

bash
$ curl --request GET \
     --url 'https://index_name-project_id.svc.environment.pinecone.io/vectors/fetch?ids=example-vector-1' \
     --header 'accept: application/json'
{
  "vectors": {
    "additionalProp": {
      "id": "example-vector-1",
      "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8],
      "sparseValues": {
        "indices": [1, 312, 822, 14, 980],
        "values": [0.1, 0.2, 0.3, 0.4, 0.5]
      },
      "metadata": {
        "genre": "documentary",
        "year": 2019
      }
    }
  },
  "namespace": "example-namespace"
}

Query

API Query memungkinkan Anda mencari vektor yang mirip dengan vektor input. Anda dapat melakukan operasi pencarian pada tingkat namespace, atau menggunakan Metadata untuk menyaring selama pencarian. Hal ini memungkinkan Anda untuk mempersempit hasil pencarian dan mengambil vektor yang paling relevan.

bash
$ curl --request POST \
     --url https://index_name-project_id.svc.environment.pinecone.io/query \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "includeValues": "false",
  "includeMetadata": "false"
}
'
{
  "matches": [
    {
      "id": "example-vector-1",
      "score": 0.08,
      "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8],
      "sparseValues": {
        "indices": [1, 312, 822, 14, 980],
        "values": [0.1, 0.2, 0.3, 0.4, 0.5]
      },
      "metadata": {
        "genre": "documentary",
        "year": 2019
      }
    }
  ],
  "namespace": "string"
}

Upsert

API Upsert digunakan untuk menambahkan atau memperbarui vektor. Operasi upsert melakukan pembaruan penuh, menggantikan vektor yang ada dengan vektor baru jika ID-nya cocok.

bash
$ curl --request POST \
     --url https://index_name-project_id.svc.environment.pinecone.io/vectors/upsert \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "vectors": [
    {
      "id": "example-vector",
      "values": [
        1,
        2,
        3
      ]
    }
  ]
}
'
{
  "upsertedCount": 1
}

Update

API Update memungkinkan Anda memperbarui vektor secara parsial. Anda dapat menentukan nilai pembaruan terpisah untuk vektor dan Metadata, memberikan fleksibilitas yang lebih besar dalam pembaruan database vektor Anda.

Delete

API Delete digunakan untuk menghapus vektor dari indeks. Sama seperti operasi Query, Anda dapat menghapus vektor pada tingkat namespace atau menggunakan Metadata untuk menyaring selama penghapusan.

Referensi

https://docs.pinecone.io/docs/organizations
https://docs.pinecone.io/docs/projects
https://docs.pinecone.io/docs/indexes
https://docs.pinecone.io/reference/describe_index_stats_post

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!