Bu bölüm, Qdrant vektör veritabanının hızlı başlangıcını ve RESTful API'ye dayalı olarak vektör veritabanını nasıl işleteceğinizi tanıtır.

Qdrant Kurulumu

Not: Bu kılavuz, Qdrant veritabanını Docker kullanarak kurmaya dayanmaktadır. Lütfen devam etmeden önce Docker'ı kurun.

Qdrant görüntüsünü indirin

docker pull qdrant/qdrant

Qdrant vektör veritabanı servisini başlatın

docker run -p 6333:6333 \
    -v $(pwd)/qdrant_storage:/qdrant/storage:z \
    qdrant/qdrant

Varsayılan olarak, yerel dosya dizinini konteynıra eşleriz ve tüm veriler ./qdrant_storage dizininde depolanır.

Artık Qdrant'a localhost:6333 üzerinden erişebilirsiniz.

Qdrant vektör veritabanı, programlama dilleri arasında Python, Go vb. gibi RESTful API'ler için destek sağlarken, veritabanı işlemleri için RESTful API'yi ve SDK'ları destekler. Bu kılavuz, genellikle RESTful API'nin kullanımını açıklamaya odaklanmaktadır.

API'ye erişme örneği

curl -X PUT 'http://localhost:6333/collections/test_collection' \
  -H 'Content-Type: application/json' \
  --data-raw '{
    "vectors": {
      "size": 4,
      "distance": "Dot"
    }
  }'

Qdrant Web UI

Web UI'ye http://localhost:6333/dashboard adresinden erişin

Qdrant web ui

Koleksiyon Oluşturma

Qdrant vektör veritabanındaki koleksiyon kavramı, aynı tip vektör verilerini tutmak için kullanılan MYSQL tablo yapısına benzetilebilir. Koleksiyonda depolanan her veri, Qdrant'ta noktalar olarak adlandırılır ve matematiksel geometrik uzaydaki noktalara benzer bir anlam taşır, vektörün geometrik uzaydaki temsilini temsil eder (sadece bir veri parçası olarak kabul edin).

PUT /collections/{collection_name}

{
    "vectors": {
      "size": 300,
      "distance": "Cosine"
    }
}

Parametre Açıklaması:

Parametre Açıklama
collection_name Koleksiyon adı (zorunlu)
vectors Vektör parametresi tanımı (zorunlu)
vectors.size Vektör boyutunu (veya vektörün boyutunu) temsil eder
vectors.distance Vektör benzerlik algoritmasını temsil eder, genellikle "Cosine", "Euclid", "Dot" gibi üç algoritmayı içerir

Vektörlerin (Noktaların) Eklenmesi

Bir koleksiyon oluşturduktan sonra, koleksiyona vektör verilerini ekleyebiliriz. Qdrant'ta vektör verileri noktalar kullanılarak temsil edilir, her nokta verisi üç parçadan oluşur: id, payload (ilişkili veri) ve vektör verisi.

Örnek

PUT /collections/{collection_name}/points

{
    "points": [
        {
            "id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // id
            "payload": {"color": "red"}, // Genellikle ilişkili iş verileri gibi ilişkili özellik verileri, örn: sipariş ID, ürün ID, başlık, vb.
            "vector": [0.9, 0.1, 0.1] // Geçerli iş verisinin özelliklerini temsil eden vektör verisi
        }
    ]
}

Vektör Araması

Vektör verileri ekledikten sonra, vektörleri kullanarak anlamsal benzerlik araması yapabiliriz.

Örnek

// collection_name - koleksiyon adı
POST /collections/{collection_name}/points/search

{
    "vector": [0.2, 0.1, 0.9, 0.7], // vektör parametresi
    "limit": 3 // En yüksek benzerlikle 3 veriyi döndür
}

Parametre Açıklaması:

  • vektör: Bu vektöre benzer içeriği aramak için kullanılan vektör parametresi. Örneğin: Kullanıcıların aramak istediği anahtar kelimeleri vektörlere dönüştürebilir ve ardından kullanıcı girdisiyle ilgili içeriği arayabilirsiniz.

Öznitelik Filtreleme

Veri ararken, vektörler kullanarak benzerlik aramaları yapmanın yanı sıra bazen de SQL'deki WHERE ifadesine benzer şekilde öznitelik filtreleme işlemi yapmak isteyebiliriz. Qdrant, nokta yüküyle ilişkilendirilmiş öznitelikleri filtrelemek için filtre sorgularını destekler.

Örnek

// collection_name - koleksiyon adı
POST /collections/{collection_name}/points/search

{
    "filter": { // Bu özellik genellikle nokta yüküyle ilişkilendirilmiş öznitelikleri filtrelemek için kullanılır ve genel sözdizim formatı Elasticsearch sözdizimine benzer. Bu parametre opsiyoneldir.
        "must": [ // Renk=kırmızı olan nokta verilerini filtrele
            {
                "key": "color",
                "match": {
                    "value": "red"
                }
            }
        ]
    },
    "vector": [0.2, 0.1, 0.9, 0.7], // Vektör parametresi
    "limit": 3
}

Daha detaylı öğreticiler için lütfen aşağıdaki bölümlere başvurun.