Pangkalan Data Vektor: Pinecone, Weaviate & pgvector · Pelajaran

Mengurus Ruang Nama

Fahami cara membahagikan data dalam satu indeks Pinecone menggunakan ruang nama untuk organisasi yang lebih baik.

Pelajaran 2 daripada 412 langkah

Mengurus Ruang Nama ialah pelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pangkalan Data Vektor: Pinecone, Weaviate & pgvector merangkumi sejumlah 4 pelajaran.

Apakah Ruang Nama Pinecone?

Selamat datang ke pengurusan ruang nama dalam Pinecone! Ruang nama adalah seperti pembahagian logik dalam satu indeks Pinecone.

Bayangkan ruang nama sebagai folder dalam direktori utama. Ruang nama membolehkan anda membahagikan data tanpa perlu mencipta indeks yang berasingan sepenuhnya.

Mengapa Menggunakan Ruang Nama?

Ruang nama amat berguna untuk menyusun data vektor anda, terutamanya dalam aplikasi yang kompleks:

  • Pelbagai Penyewa: Asingkan data untuk pengguna atau pelanggan yang berbeza dalam satu indeks.
  • Ujian A/B: Simpan versi benaman yang berbeza untuk eksperimen.
  • Pengasingan Data: Pastikan set data yang berbeza kekal berasingan sambil menggunakan infrastruktur indeks yang sama.
  • Pengkategorian: Kumpulkan vektor mengikut topik, sumber atau jenis.

Ruang Nama Lalai

Setiap indeks Pinecone mempunyai ruang nama lalai. Jika anda tidak menentukan ruang nama secara jelas semasa menggunakan upsert atau membuat pertanyaan, operasi anda akan berinteraksi dengan ruang nama lalai ini.

Ruang nama ini biasanya diwakili oleh rentetan kosong "" atau dengan tidak menyertakan parameter ruang nama.

Persediaan untuk Ruang Nama

Sebelum bekerja dengan ruang nama, pastikan klien Pinecone anda telah dimulakan. Kami menganggap anda telah menyediakan kunci API dan persekitaran, biasanya melalui pemboleh ubah persekitaran.

Berikut ialah persediaan asas untuk demonstrasi:

from pinecone import Pinecone
import os

def main():
    # Replace with your actual API key and environment from environment variables
    api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
    environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")

    if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
        print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
        return

    pc = Pinecone(api_key=api_key, environment=environment)
    print("Pinecone client initialized.")

if __name__ == "__main__":
    main()

Menggunakan Upsert Data ke dalam Ruang Nama

Untuk menambahkan vektor ke ruang nama tertentu, anda hanya perlu menyertakan parameter namespace dalam panggilan index.upsert() anda.

Contoh ini menggunakan upsert untuk memasukkan beberapa vektor ke dalam ruang nama bernama "product-recommendations".

from pinecone import Pinecone, Index
import os

def main():
    api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
    environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")

    if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
        print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
        return

    pc = Pinecone(api_key=api_key, environment=environment)
    index_name = "my-product-index" # Ensure this index exists

    if index_name not in pc.list_indexes():
        print(f"Index '{index_name}' does not exist. Please create it first.")
        return

    index = pc.Index(index_name)

    vectors_to_upsert = [
        {"id": "item-1", "values": [0.1, 0.2, 0.3]}, # 3 dimensions for example
        {"id": "item-2", "values": [0.4, 0.5, 0.6]}
    ]

    # Upsert into a specific namespace
    index.upsert(vectors=vectors_to_upsert, namespace="product-recommendations")
    print("Vectors upserted into 'product-recommendations' namespace.")

if __name__ == "__main__":
    main()

Membuat Pertanyaan pada Ruang Nama Tertentu

Apabila anda mahu mendapatkan semula vektor daripada ruang nama tertentu, anda juga perlu menentukan parameter namespace dalam panggilan index.query() anda.

Ini memastikan carian anda terhad kepada segmen indeks tersebut.

from pinecone import Pinecone, Index
import os

def main():
    api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
    environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")

    if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
        print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
        return

    pc = Pinecone(api_key=api_key, environment=environment)
    index_name = "my-product-index"

    if index_name not in pc.list_indexes():
        print(f"Index '{index_name}' does not exist. Please create it first.")
        return

    index = pc.Index(index_name)

    query_vector = [0.15, 0.25, 0.35] # Example query vector

    # Query within the 'product-recommendations' namespace
    results = index.query(
        vector=query_vector,
        top_k=2,
        namespace="product-recommendations",
        include_values=False
    )
    print("Query results from 'product-recommendations' namespace:")
    for match in results.matches:
        print(f"ID: {match.id}, Score: {match.score}")

if __name__ == "__main__":
    main()

Memahami Skop Pertanyaan

Anda mesti ingat bahawa pertanyaan dalam Pinecone secara lalai adalah khusus mengikut ruang nama. Jika anda membuat pertanyaan tanpa menentukan ruang nama, carian hanya akan dilakukan dalam ruang nama lalai.

Tiada cara langsung untuk membuat pertanyaan merentasi semua ruang nama dengan satu panggilan API; anda perlu membuat pertanyaan pada setiap ruang nama secara berasingan jika mahu menggabungkan hasilnya.

Menyenaraikan Ruang Nama dalam Indeks

Untuk melihat ruang nama yang wujud dalam indeks anda pada masa ini serta statistiknya, anda boleh menggunakan kaedah index.describe_index_stats().

Kaedah ini mengembalikan ringkasan yang merangkumi peta ruang nama dan bilangan vektornya.

from pinecone import Pinecone, Index
import os

def main():
    api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
    environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")

    if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
        print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
        return

    pc = Pinecone(api_key=api_key, environment=environment)
    index_name = "my-product-index"

    if index_name not in pc.list_indexes():
        print(f"Index '{index_name}' does not exist. Please create it first.")
        return

    index = pc.Index(index_name)

    # Get index statistics
    index_stats = index.describe_index_stats()

    print("Namespaces in index:")
    for ns, stats in index_stats.namespaces.items():
        print(f"- Namespace: '{ns}', Vector Count: {stats.vector_count}")

if __name__ == "__main__":
    main()

Memadam Vektor daripada Ruang Nama

Anda boleh memadam vektor tertentu daripada ruang nama dengan memberikan IDnya bersama parameter namespace kepada index.delete().

Contoh ini memadam item tertentu daripada ruang nama "product-recommendations".

from pinecone import Pinecone, Index
import os

def main():
    api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
    environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")

    if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
        print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
        return

    pc = Pinecone(api_key=api_key, environment=environment)
    index_name = "my-product-index"

    if index_name not in pc.list_indexes():
        print(f"Index '{index_name}' does not exist. Please create it first.")
        return

    index = pc.Index(index_name)

    # Delete a specific vector by ID within a namespace
    index.delete(ids=["item-1"], namespace="product-recommendations")
    print("Vector 'item-1' deleted from 'product-recommendations' namespace.")

if __name__ == "__main__":
    main()

Memadam Seluruh Ruang Nama

Untuk mengalih keluar semua vektor dalam ruang nama tertentu, sekali gus memadam ruang nama itu sendiri, anda boleh menggunakan index.delete() dengan parameter namespace dan menetapkan delete_all=True.

Berhati-hati: Tindakan ini tidak boleh dibuat asal dan akan memadam semua data dalam ruang nama tersebut!

from pinecone import Pinecone, Index
import os

def main():
    api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
    environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")

    if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
        print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
        return

    pc = Pinecone(api_key=api_key, environment=environment)
    index_name = "my-product-index"

    if index_name not in pc.list_indexes():
        print(f"Index '{index_name}' does not exist. Please create it first.")
        return

    index = pc.Index(index_name)

    # Delete all vectors within a specific namespace
    # This effectively removes the 'test-namespace' and all its contents
    index.delete(namespace="test-namespace", delete_all=True)
    print("All vectors in 'test-namespace' deleted. Namespace effectively removed.")

if __name__ == "__main__":
    main()

Semakan Pengetahuan Ruang Nama

Anda mempunyai indeks bernama "my-app-index". Anda menggunakan upsert untuk memasukkan vektor ke dalam ruang nama "user-1" dan "user-2". Jika anda kemudian memanggil index.query(vector=my_vec, top_k=5) tanpa menentukan namespace, apakah yang akan berlaku?

Imbas Kembali: Susun dengan Ruang Nama

Syabas! Anda telah mempelajari kuasa ruang nama Pinecone.

  • Ruang nama membantu membahagikan data dalam satu indeks.
  • Ruang nama amat sesuai untuk pelbagai penyewa dan ujian A/B.
  • Operasi (upsert, query, delete) adalah khusus mengikut ruang nama.
  • Ruang nama lalai digunakan jika tiada ruang nama ditentukan.
  • Anda boleh menyenaraikan ruang nama sedia ada dan memadam seluruh ruang nama.

Penggunaan ruang nama yang berkesan memastikan data vektor anda tersusun dan mudah diurus!

Percuma untuk bermula

Pelajari Pangkalan Data Vektor: Pinecone, Weaviate & pgvector dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Mengurus Ruang Nama” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector, termasuk “Mengurus Ruang Nama”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pangkalan Data Vektor: Pinecone, Weaviate & pgvector merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mengurus Ruang Nama”?

Fahami cara membahagikan data dalam satu indeks Pinecone menggunakan ruang nama untuk organisasi yang lebih baik. Anda berlatih Pangkalan Data Vektor: Pinecone, Weaviate & pgvector menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pangkalan Data Vektor: Pinecone, Weaviate & pgvector?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Mengurus Ruang Nama” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector ini?

Ya. Setiap pelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Penapisan dengan Metadata
  2. Mengurus Ruang Nama
  3. Kemas Kini dan Pemadaman Masa Nyata
  4. Carian Hibrid dengan Vektor Jarang-Padat
← Kembali ke Pangkalan Data Vektor: Pinecone, Weaviate & pgvector