Sebelum mengimplementasikan embeddings

Saat memilih penyedia embeddings, 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 embed. Data yang lebih besar atau lebih spesifik domain umumnya menghasilkan embeddings dalam domain yang lebih baik
  • Performa inferensi: kecepatan pencarian embedding dan latensi end-to-end. Ini adalah pertimbangan yang sangat penting untuk deployment produksi skala besar
  • Kustomisasi: opsi untuk melanjutkan pelatihan pada data pribadi, atau spesialisasi model untuk domain yang sangat spesifik. Ini dapat meningkatkan kinerja pada kosakata yang unik

Cara mendapatkan embeddings dengan Anthropic

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

Voyage AI membuat model embedding mutakhir dan menawarkan model yang disesuaikan untuk domain industri tertentu seperti keuangan dan kesehatan, atau model yang disesuaikan khusus untuk pelanggan individual.

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

Model yang Tersedia

Voyage merekomendasikan penggunaan model embedding teks berikut:

ModelPanjang KonteksDimensi EmbeddingDeskripsi
voyage-3-large32.0001024 (default), 256, 512, 2048Kualitas pengambilan terbaik untuk tujuan umum dan multibahasa.
voyage-332.0001024Dioptimalkan untuk kualitas pengambilan tujuan umum dan multibahasa. Lihat blog post untuk detailnya.
voyage-3-lite32.000512Dioptimalkan untuk latensi dan biaya. Lihat blog post untuk detailnya.
voyage-code-332.0001024 (default), 256, 512, 2048Dioptimalkan untuk pengambilan kode. Lihat blog post untuk detailnya.
voyage-finance-232.0001024Dioptimalkan untuk pengambilan keuangan dan RAG. Lihat blog post untuk detailnya.
voyage-law-216.0001024Dioptimalkan untuk pengambilan dan RAG hukum dan konteks panjang. Juga meningkatkan kinerja di semua domain. Lihat blog post untuk detailnya.

Selain itu, model embedding multimodal berikut direkomendasikan:

ModelPanjang KonteksDimensi EmbeddingDeskripsi
voyage-multimodal-3320001024Model embedding multimodal yang kaya yang dapat memvektorisasi teks dan gambar kaya konten yang saling terkait, seperti tangkapan layar PDF, slide, tabel, gambar, dan lainnya. Lihat blog post untuk detailnya.

Butuh bantuan memutuskan model embedding teks mana yang akan digunakan? Lihat FAQ.

Memulai dengan Voyage AI

Untuk mengakses embeddings Voyage:

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

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

Paket Python Voyage

Paket voyageai dapat diinstal menggunakan perintah berikut:

pip install -U voyageai

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

import voyageai

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

texts = ["Sample text 1", "Sample text 2"]

result = vo.embed(texts, model="voyage-3", 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, kedua embedding akan dicetak di layar:

[0.02012746, 0.01957859, ...]  # embedding untuk "Sample text 1"
[0.01429677, 0.03077182, ...]  # embedding untuk "Sample text 2"

Saat membuat embeddings, Anda juga dapat menentukan beberapa argumen lain untuk fungsi embed(). Anda dapat membaca lebih lanjut tentang spesifikasinya di sini

API HTTP Voyage

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

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

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

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

Anda dapat membaca lebih lanjut tentang endpoint embedding di dokumentasi Voyage

AWS Marketplace

Embeddings Voyage juga tersedia di AWS Marketplace. Instruksi untuk mengakses Voyage di AWS tersedia di sini.

Contoh Quickstart

Sekarang kita tahu cara mendapatkan embeddings, mari kita lihat contoh singkat.

Misalkan kita memiliki korpus kecil berisi enam dokumen untuk diambil

documents = [
    "The Mediterranean diet emphasizes fish, olive oil, and vegetables, believed to reduce chronic diseases.",
    "Photosynthesis in plants converts light energy into glucose and produces essential oxygen.",
    "20th-century innovations, from radios to smartphones, centered on electronic advancements.",
    "Rivers provide water, irrigation, and habitat for aquatic species, vital for ecosystems.",
    "Apple's conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.",
    "Shakespeare's works, like 'Hamlet' and 'A Midsummer Night's Dream,' endure in literature."
]

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

import voyageai

vo = voyageai.Client()

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

Embeddings akan memungkinkan kita melakukan pencarian semantik / pengambilan dalam ruang vektor. Diberikan contoh query,

query = "When is Apple's conference call scheduled?"

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

import numpy as np

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

# Hitung kesamaan
# Embeddings Voyage dinormalisasi ke panjang 1, oleh karena itu dot-product
# dan kesamaan kosinus 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 masing-masing embedding dokumen dan query. Spesifikasi lebih lanjut dapat ditemukan di sini.

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

Apple's conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.

Jika Anda mencari kumpulan buku panduan terperinci tentang cara melakukan RAG dengan embeddings, termasuk database vektor, lihat RAG cookbook kami.

FAQ

Harga

Kunjungi halaman harga Voyage untuk detail harga terbaru.