Sebelum mengimplementasikan embedding

Saat memilih penyedia embedding, ada beberapa faktor yang dapat Anda pertimbangkan tergantung pada kebutuhan dan preferensi Anda:

  • Ukuran dataset & spesifisitas domain: ukuran dataset pelatihan model dan relevansinya dengan domain yang ingin Anda embedding. Data yang lebih besar atau lebih spesifik domain umumnya menghasilkan embedding dalam domain yang lebih baik
  • Kinerja inferensi: kecepatan pencarian embedding dan latensi end-to-end. Ini adalah pertimbangan yang sangat penting untuk deployment produksi skala besar
  • Kustomisasi: opsi untuk pelatihan lanjutan pada data pribadi, atau spesialisasi model untuk domain yang sangat spesifik. Ini dapat meningkatkan kinerja pada kosakata yang unik

Cara mendapatkan embedding dengan Anthropic

Anthropic tidak menawarkan model embedding sendiri. Salah satu penyedia embedding yang memiliki berbagai pilihan dan kemampuan yang mencakup semua pertimbangan di atas adalah Voyage AI.

Voyage AI membuat model embedding state-of-the-art dan menawarkan model yang disesuaikan untuk domain industri tertentu seperti keuangan dan kesehatan, atau model yang disesuaikan khusus untuk pelanggan individu.

Sisa panduan ini adalah untuk Voyage AI, tetapi kami mendorong Anda untuk menilai berbagai vendor embedding untuk menemukan yang paling cocok untuk kasus penggunaan spesifik Anda.


Memulai dengan Voyage AI

Lihat notebook embedding kami untuk melihat contoh implementasi Voyage AI.

Untuk mengakses embedding Voyage:

  1. Daftar di situs web Voyage AI
  2. Dapatkan kunci API
  3. Atur kunci API sebagai variabel lingkungan untuk kemudahan:
Python
export VOYAGE_API_KEY="<kunci rahasia Anda>"

Anda dapat menjalankan embedding dengan menggunakan paket Python voyageai resmi atau permintaan HTTP, seperti yang dijelaskan di bawah ini.

Paket Python Voyage

Paket voyageai dapat diinstal menggunakan perintah berikut:

Python
pip install -U voyageai

Kemudian, Anda dapat membuat objek klien dan mulai menggunakannya untuk meng-embed teks Anda:

Python
import voyageai

vo = voyageai.Client()
# Ini akan secara otomatis menggunakan variabel lingkungan VOYAGE_API_KEY.
# Alternatifnya, Anda dapat menggunakan vo = voyageai.Client(api_key="<kunci rahasia Anda>")

texts = ["Teks sampel 1", "Teks sampel 2"]

result = vo.embed(texts, model="voyage-2", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])

result.embeddings akan menjadi daftar dua vektor embedding, masing-masing berisi 1024 angka floating-point.

Setelah menjalankan kode di atas, dua embedding akan dicetak di layar:

Python
[0.02012746, 0.01957859, ...]  # embedding untuk "Teks sampel 1"
[0.01429677, 0.03077182, ...]  # embedding untuk "Teks sampel 2"

Saat membuat embedding, Anda dapat menentukan beberapa argumen lain untuk fungsi embed(). Berikut adalah spesifikasinya:

voyageai.Client.embed(texts : List[str], model : str, input_type : Optional[str] = None, truncation : Optional[bool] = None)

  • texts (List[str]) - Daftar teks sebagai daftar string, seperti ["Saya suka kucing", "Saya juga suka anjing"]. Saat ini, panjang maksimum daftar adalah 128, dan total jumlah token dalam daftar maksimal 320K untuk voyage-2 dan 120K untuk voyage-large-2/voyage-code-2.
  • model (str) - Nama model. Opsi yang direkomendasikan: voyage-2, voyage-large-2, voyage-code-2.
  • input_type (str, opsional, default ke None) - Jenis teks input. Default ke None. Opsi lain: query, document
    • Ketika input_type diatur ke None, teks input akan langsung dikodekan oleh model embedding Voyage. Alternatifnya, ketika input adalah dokumen atau query, pengguna dapat menentukan input_type menjadi query atau document, masing-masing. Dalam kasus seperti itu, Voyage akan menambahkan prompt khusus ke teks input dan mengirimkan input yang diperpanjang ke model embedding
    • Untuk kasus penggunaan pengambilan/pencarian, kami merekomendasikan untuk menentukan argumen ini saat mengkodekan query atau dokumen untuk meningkatkan kualitas pengambilan. Embedding yang dihasilkan dengan dan tanpa argumen input_type kompatibel
  • truncation (bool, opsional, default ke None) - Apakah akan memotong teks input agar sesuai dengan panjang konteks.
    • Jika True, teks input yang melebihi panjang akan dipotong agar sesuai dengan panjang konteks, sebelum divektorisasi oleh model embedding
    • Jika False, kesalahan akan muncul jika ada teks yang melebihi panjang konteks
    • Jika tidak ditentukan (default ke None), Voyage akan memotong teks input sebelum mengirimkannya ke model embedding jika sedikit melebihi panjang jendela konteks. Jika secara signifikan melebihi panjang jendela konteks, kesalahan akan muncul

API HTTP Voyage

Anda juga dapat mendapatkan embedding dengan meminta API HTTP Voyage. Misalnya, Anda dapat mengirim permintaan HTTP melalui perintah curl di terminal:

Shell
curl https://api.voyageai.com/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $VOYAGE_API_KEY" \
  -d '{
    "input": ["Teks sampel 1", "Teks sampel 2"],
    "model": "voyage-2"
  }'

Respons yang akan Anda dapatkan adalah objek JSON yang berisi embedding dan penggunaan token:

Shell
{
  "object": "list",
  "data": [
    {
      "embedding": [0.02012746, 0.01957859, ...],
      "index": 0
    },
    {
      "embedding": [0.01429677, 0.03077182, ...],
      "index": 1
    }
  ],
  "model": "voyage-2",
  "usage": {
    "total_tokens": 10
  }
}

Endpoint embedding Voyage AI adalah https://api.voyageai.com/v1/embeddings (POST). Header permintaan harus berisi kunci API. Badan permintaan adalah objek JSON yang berisi argumen berikut:

  • input (str, List[str]) - String teks tunggal, atau daftar teks sebagai daftar string. Saat ini, panjang maksimum daftar adalah 128, dan total jumlah token dalam daftar maksimal 320K untuk voyage-2 dan 120K untuk voyage-large-2/voyage-code-2.
  • model (str) - Nama model. Opsi yang direkomendasikan: voyage-2, voyage-large-2, voyage-code-2.
  • input_type (str, opsional, default ke None) - Jenis teks input. Default ke None. Opsi lain: query, document
  • truncation (bool, opsional, default ke None) - Apakah akan memotong teks input agar sesuai dengan panjang konteks
    • Jika True, teks input yang melebihi panjang akan dipotong agar sesuai dengan panjang konteks sebelum divektorisasi oleh model embedding
    • Jika False, kesalahan akan muncul jika ada teks yang melebihi panjang konteks
    • Jika tidak ditentukan (default ke None), Voyage akan memotong teks input sebelum mengirimkannya ke model embedding jika sedikit melebihi panjang jendela konteks. Jika secara signifikan melebihi panjang jendela konteks, kesalahan akan muncul
  • encoding_format (str, opsional, default ke None) - Format di mana embedding dikodekan. Voyage saat ini mendukung dua opsi:
    • Jika tidak ditentukan (default ke None): embedding direpresentasikan sebagai daftar angka floating-point
    • "base64": embedding dikompresi menjadi pengkodean Base64

Contoh embedding Voyage

Sekarang kita tahu cara mendapatkan embedding dengan Voyage, mari kita lihat dalam aksi dengan contoh singkat.

Misalkan kita memiliki korpus kecil dari enam dokumen untuk diambil

Python
documents = [
    "Diet Mediterania menekankan ikan, minyak zaitun, dan sayuran, diyakini mengurangi penyakit kronis.",
    "Fotosintesis pada tumbuhan mengubah energi cahaya menjadi glukosa dan menghasilkan oksigen penting.",
    "Inovasi abad ke-20, dari radio hingga smartphone, berpusat pada kemajuan elektronik.",
    "Sungai menyediakan air, irigasi, dan habitat bagi spesies akuatik, vital bagi ekosistem.",
    "Panggilan konferensi Apple untuk membahas hasil kuartal fiskal keempat dan pembaruan bisnis dijadwalkan pada Kamis, 2 November 2023 pukul 2:00 sore PT / 5:00 sore ET.",
    "Karya Shakespeare, seperti 'Hamlet' dan 'A Midsummer Night's Dream,' bertahan dalam sastra."
]

Kita akan pertama-tama menggunakan Voyage untuk mengubah masing-masing menjadi vektor embedding

Python
import voyageai

vo = voyageai.Client()

# Embed dokumen
doc_embds = vo.embed(
    documents, model="voyage-2", input_type="document"
).embeddings

Embedding akan memungkinkan kita melakukan pencarian semantik / pengambilan dalam ruang vektor. Kita kemudian dapat mengubah contoh query,

Python
query = "Kapan panggilan konferensi Apple dijadwalkan?"

menjadi embedding, dan kemudian melakukan pencarian tetangga terdekat untuk menemukan dokumen yang paling relevan berdasarkan jarak dalam ruang embedding.

Python
import numpy as np

# Embed query
query_embd = vo.embed(
    [query], model="voyage-2", input_type="query"
).embeddings[0]

# Hitung kesamaan
# Embedding Voyage dinormalisasi ke panjang 1, oleh karena itu dot-product
# dan kesamaan cosinus adalah sama.
similarities = np.dot(doc_embds, query_embd)

retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])

Perhatikan bahwa kita menggunakan input_type="document" dan input_type="query" untuk meng-embed dokumen dan query, masing-masing. Spesifikasi lebih lanjut dapat ditemukan di sini.

Outputnya akan menjadi dokumen ke-5, yang memang paling relevan dengan query:

Panggilan konferensi Apple untuk membahas hasil kuartal fiskal keempat dan pembaruan bisnis dijadwalkan pada Kamis, 2 November 2023 pukul 2:00 sore PT / 5:00 sore ET.

Model Voyage yang tersedia

Voyage merekomendasikan penggunaan model embedding berikut:

ModelPanjang KonteksDimensi EmbeddingDeskripsi
voyage-large-2160001536Model embedding generalis paling kuat dari Voyage AI.
voyage-code-2160001536Dioptimalkan untuk pengambilan kode (17% lebih baik dari alternatif), dan juga SoTA pada korpus tujuan umum. Lihat postingan blog Voyage ini untuk detailnya.
voyage-240001024Model embedding generalis dasar yang dioptimalkan untuk latensi dan kualitas.
voyage-lite-02-instruct40001024Dilatih dengan instruksi untuk tugas klasifikasi, pengelompokan, dan kesamaan tekstual kalimat, yang merupakan satu-satunya kasus penggunaan yang direkomendasikan untuk model ini.

voyage-2 dan voyage-large-2 adalah model embedding generalis, yang mencapai kinerja state-of-the-art di berbagai domain dan mempertahankan efisiensi tinggi. voyage-code-2 dioptimalkan untuk bidang kode, menawarkan panjang konteks 4x lipat untuk penggunaan yang lebih fleksibel, meskipun dengan latensi yang relatif lebih tinggi.

Voyage secara aktif mengembangkan model yang lebih canggih dan terspesialisasi, dan juga menawarkan layanan fine-tuning untuk menyesuaikan model khusus untuk pelanggan individu. Kirim email ke manajer akun Anthropic Anda atau hubungi dukungan Anthropic untuk informasi lebih lanjut tentang model khusus.

  • voyage-finance-2: segera hadir
  • voyage-law-2: segera hadir
  • voyage-multilingual-2: segera hadir
  • voyage-healthcare-2: segera hadir

Voyage di AWS Marketplace

Embedding Voyage juga tersedia di AWS Marketplace. Berikut adalah instruksi untuk mengakses Voyage di AWS:

  1. Berlangganan paket model
    1. Navigasi ke halaman daftar paket model dan pilih model yang akan di-deploy
    2. Klik tombol Continue to subscribe
    3. Tinjau dengan cermat detail pada halaman Subscribe to this software. Jika Anda setuju dengan Perjanjian Lisensi Pengguna Akhir (EULA) standar, harga, dan ketentuan dukungan, klik “Accept Offer”
    4. Setelah memilih Continue to configuration dan memilih wilayah, Anda akan disajikan dengan Product Arn. Ini adalah ARN paket model yang diperlukan untuk membuat model yang dapat di-deploy menggunakan Boto3
      1. Salin ARN yang sesuai dengan wilayah yang Anda pilih dan gunakan di sel berikutnya
  2. Deploy paket model

Dari sini, buat ruang JupyterLab di Sagemaker Studio, unggah notebook Voyage, dan ikuti instruksi di dalamnya.


FAQ


Harga

Kunjungi halaman harga Voyage untuk detail harga terbaru.