~/tools / Embedding'ler ve arama (RAG) / Embedding Similarity Calculator

Embedding Similarity Calculator — Ollama /api/embed çıktısındaki embedding vektörlerini karşılaştırın: kosinüs benzerliği

Ollama'nın /api/embed ya da OpenAI uyumlu bir /v1/embeddings uç noktasının yanıtını yapıştırın ve vektörleri karşılaştırın: seçtiğiniz vektöre göre sıralanmış kosinüs benzerliği, nokta çarpımı ve Öklid uzaklığı ile bir benzerlik matrisi. Araç ayrıca her vektörün boyutlarını ve uzunluğunu gösterir; böylece vektörlerin normalleştirilmiş olup olmadığını ve aynı modelden gelip gelmediğini görebilirsiniz. Hiçbir veri tarayıcınızdan çıkmaz.

Örnek, okunabilsin diye 4 boyutlu, birim uzunlukta uydurma vektörler kullanır. Gerçek embedding'lerin yüzlerce ya da binlerce boyutu vardır.

bir Ollama /api/embed yanıtı olarak okundu: 4 vektör, 4 boyut. Tüm vektörlerin uzunluğu 1, bu yüzden kosinüs benzerliği ile nokta çarpımı eşit.

Kosinüs benzerliğine göre sıralama

#0 How do I keep a model loaded in Ollama? ile karşılaştırıldı. Daha yüksek değer daha benzer demektir.

SıraMetinKosinüsNokta çarpımıUzaklık
1#1 keep_alive controls how long the model stays in memory0.99620.99620.0876
2#2 Protect Ollama with nginx and a password0.40370.40371.0921
3#3 Tomorrow's weather forecast0.01000.01001.4071

Kosinüs benzerliği matrisi

Her hücre, satırdaki vektörü sütundaki vektörle karşılaştırır.

#0#1#2#3
#01.0000.9960.4040.010
#10.9961.0000.475-0.005
#20.4040.4751.000-0.377
#30.010-0.005-0.3771.000

Vektörler

MetinBoyutlarUzunluk (L2 normu)Birim uzunluk
#0 How do I keep a model loaded in Ollama?41.000000Evet
#1 keep_alive controls how long the model stays in memory41.000000Evet
#2 Protect Ollama with nginx and a password41.000001Evet
#3 Tomorrow's weather forecast41.000000Evet

Ollama'nın embedding belgelerine ve API başvuru belgesine dayanır, 2026-11-04 tarihinde kontrol edildi. Ollama: Embeddings / Ollama API: Generate embeddings

Her şey tarayıcınızda hesaplanır. Hiçbir yere hiçbir şey gönderilmez.

Bir embedding modeli bir metin parçasını bir sayı listesine, yani bir vektöre dönüştürür. Ollama'nın belgeleri bu vektörlerin kosinüs benzerliğiyle anlamsal aramada ve RAG için kullanılmasını anlatır. Arama kodunu yazmadan önce sayılara bakmak işe yarar: soru gerçekten kendisini yanıtlayan metin parçasına en yakın mı çıkıyor? Bu araç, Ollama'nın /api/embed uç noktasından döndürdüğü JSON'u ({"embeddings": [[…], …]}), /v1/embeddings uç noktasının OpenAI uyumlu biçimini ({"data": [{"embedding": […]}]}) ya da düz bir vektör dizisini okur. Her vektörü seçtiğiniz vektöre kosinüs benzerliğiyle sıralar ve ayrıca nokta çarpımını ve Öklid uzaklığını gösterir. Ollama'nın belgeleri /api/embed'in L2 ile normalleştirilmiş (birim uzunlukta) vektörler döndürdüğünü söyler; böyle vektörlerde kosinüs benzerliği ile nokta çarpımı aynı sayıdır ve araç, doğrulayabilmeniz için her vektörün uzunluğunu gösterir. Belgeler ayrıca indeksleme ve sorgulama için aynı embedding modelinin kullanılmasını söyler. Farklı sayıda boyuta sahip vektörler hiç karşılaştırılamaz ve araç bunlarla karşılaşınca hata vererek durur. Hesaplamalar, Python'da ayrıca hesaplanmış değerlerle denetlendi.

Bu aracın temel mantığı MIT lisansıyla açık kaynaktır. github.com/seigo5555/toolkitbox-lib/src/embedding-similarity.ts

Kullanım örnekleri

  • Bir arama kurmadan önce bir soruyu ve birkaç aday metin parçasını tek bir /api/embed isteğinde embedding'e çevirip hangi parçanın ilk sıraya çıktığını görmek
  • İki embedding modelini aynı cümleler üzerinde, her seferinde bir modelle karşılaştırıp hangisinin ilişkili ve ilişkisiz metinleri daha net ayırdığını görmek
  • Vektör veritabanınız için bir uzaklık ölçüsü seçmeden önce saklı vektörlerin birim uzunlukta olup olmadığını ve beklediğiniz boyutlara sahip olup olmadığını denetlemek

Nasıl kullanılır

  1. Metinleri modelinize tek istekte gönderin, örneğin curl http://localhost:11434/api/embed -d '{"model": "embeddinggemma", "input": ["question", "passage 1", "passage 2"]}', ve JSON yanıtının tamamını yapıştırın.
  2. İsterseniz her satıra, girdiyle aynı sırada bir etiket yazın; böylece sonuçlarda numaralar yerine metinler görünür.
  3. Hangi vektörle karşılaştırılacağını seçin (varsayılan #0, yani ilk girdi). Tablo diğerlerini kosinüs benzerliğine göre sıralar; vektör sayısı 10 ya da daha azsa matris her çifti gösterir.

SSS

Hangi benzerliği kullanmalıyım?

Ollama'nın embedding sayfası, anlamsal arama kullanım durumlarının çoğu için kosinüs benzerliğinin kullanılmasını söyler. Kosinüs benzerliği iki vektörün yönünü karşılaştırır ve uzunluklarını yok sayar; 1 aynı yön demektir. Araç nokta çarpımını ve Öklid uzaklığını da gösterir, çünkü vektör veritabanları çoğu zaman bunlar arasında seçim yapmanıza izin verir.

Kosinüs benzerliği ile nokta çarpımı neden aynı?

Çünkü vektörlerin uzunluğu 1'dir. Ollama'nın belgeleri /api/embed'in L2 ile normalleştirilmiş, birim uzunlukta vektörler döndürdüğünü söyler ve birim uzunluktaki vektörlerde kosinüs benzerliği nokta çarpımına eşittir. Araç her vektörün uzunluğunu gösterir ve hepsinin birim uzunlukta olup olmadığını söyler (0.001 içinde).

Araç boyutların eşleşmediğini söylüyor. Bu ne demek?

İki vektör ancak aynı sayıda sayıya sahipse karşılaştırılabilir. Uzunluk modele bağlıdır; belgeler bunu tipik olarak 384 ile 1024 boyut olarak verir ve /api/embed isteği bir dimensions alanını da kabul eder. Farklı uzunluklar genellikle vektörlerin farklı modellerden ya da ayarlardan geldiği anlamına gelir. Belgeler indeksleme ve sorgulama için aynı embedding modelinin kullanılmasını söyler.

base64 embedding içeren bir yanıtı yapıştırabilir miyim?

Hayır. Araç yalnızca sayıları okur. OpenAI uyumlu /v1/embeddings uç noktasını çağırıyorsanız embedding'leri base64 olarak değil, kayan noktalı sayılar olarak isteyin.

0.8 benzerlik iyi mi?

Sabit bir eşik yoktur. Değerler modele ve metinlerinize bağlıdır; bu yüzden tek bir sayıyı tek başına yorumlamak yerine aynı modelden gelen ilişkili ve ilişkisiz parçaların puanlarını karşılaştırın.

Verilerim bir yere gönderiliyor mu?

Hayır. Hesaplamalar tarayıcınızda çalışır. Araç Ollama'yı ya da başka bir sunucuyu hiç çağırmaz; modelinize isteği siz kendiniz gönderirsiniz.

İlgili makaleler

İlgili