यह अध्याय Qdrant वेक्टर डेटाबेस के त्वरित प्रारंभ और RESTful API पर आधारित वेक्टर डेटाबेस के ऑपरेट करने को पेश करता है।

Qdrant की विन्यास करना

ध्यान दें: यह ट्यूटोरियल डॉकर का उपयोग करके Qdrant डेटाबेस को इंस्टॉल करने पर आधारित है। कृपया आगे बढ़ने से पहले Docker इंस्टॉल करें।

qdrant छवि डाउनलोड करें

docker pull qdrant/qdrant

qdrant वेक्टर डेटाबेस सेवा प्रारंभ करें

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

डिफॉल्ट रूप से, हम स्थानीय फ़ाइल निर्देशिका को कंटेनर से मैप करते हैं, और सभी डेटा ./qdrant_storage निर्देशिका में संग्रहीत किया जाता है।

अब आप localhost:6333 के माध्यम से Qdrant तक पहुँच सकते हैं।

Qdrant वेक्टर डेटाबेस RESTful API को समर्थन करता है और डेटाबेस ऑपरेशन के लिए SDKs को पाया जा सकता है, जैसे Python, Go, आदि। यह ट्यूटोरियल मुख्य रूप से RESTful API के उपयोग का वर्णन करने पर ध्यान केंद्रित करता है।

API तक पहुँच का उदाहरण

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

Qdrant वेब UI

वेब UI तक पहुँच करें इस पते के माध्यम से: http://localhost:6333/dashboard

Qdrant web ui

कलेक्शन बनाना

Qdrant वेक्टर डेटाबेस में कलेक्शन की अवधारणा MYSQL की तालिका संरचना के समान होती है, जो समान प्रकार के वेक्टर डेटा को समर्पित रूप से संग्रहित करने के लिए उपयोग किया जाता है। कलेक्शन में स्टोर किए गए प्रत्येक डेटा, जिसे Qdrant में बिंदु कहा जाता है, गणितीय ज्यामितीय अंतरिक्ष में उस वेक्टर के प्रतिनिधित्व को दर्शाता है (बस इसे एक डेटा के रूप में देखें)।

PUT /collections/{collection_name}

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

पैरामीटर का व्याख्या:

पैरामीटर विवरण
collection_name कलेक्शन का नाम (आवश्यक)
वेक्टर वेक्टर पैरामीटर परिभाषण (आवश्यक)
vectors.size वेक्टर का आकार को दर्शाता है (या वेक्टर का आयाम)
vectors.distance वेक्टर समानता एल्गोरिथ्म को दर्शाता है, मुख्य रूप से तीन एल्गोरिथ्म शामिल होते हैं: "कोसाइन," "यूक्लिड," "डॉट"

वेक्टर (बिंदु) जोड़ना

कलेक्शन बनाने के बाद, हम कलेक्शन में वेक्टर डेटा जोड़ सकते हैं। Qdrant में, वेक्टर डेटा को बिंदु का उपयोग करके प्रस्तुत किया जाता है, जहाँ प्रत्येक बिंदु डेटा में तीन भाग होते हैं: आईडी, पेलोड (संबंधित डेटा), और वेक्टर डेटा।

उदाहरण

PUT /collections/{collection_name}/points

{
    "points": [
        {
            "id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // आईडी
            "payload": {"color": "red"}, // संबंधित गुणवत्ता डेटा, सामान्यत: आदेश आईडी, उत्पाद आईडी, शीर्षक, आदि।
            "vector": [0.9, 0.1, 0.1] // मौजूदा व्यावसायिक डेटा की विशेषताओं का प्रतिनिधित्व करने वाला वेक्टर डेटा
        }
    ]
}

वेक्टर खोज

वेक्टर डेटा जोड़ने के बाद, हम वेक्टर का उपयोग करके सांदर्भिक समानता खोज कर सकते हैं।

उदाहरण

// कलेक्शन नाम - कलेक्शन का नाम
POST /collections/{collection_name}/points/search

{
    "vector": [0.2, 0.1, 0.9, 0.7], // वेक्टर पैरामीटर
    "limit": 3 // सबसे अधिक समानता वाले शीर्ष 3 डेटा को वापसी करें
}

पैरामीटर विवरण:

  • वेक्टर: इस वेक्टर के समान सामग्री की खोज के लिए उपयोग किया जाने वाला वेक्टर पैरामीटर। उदाहरण: आप उपयोगकर्ताओं द्वारा आवश्यकता होने वाले शब्दों को वेक्टर में रूपांतरित कर सकते हैं और फिर उपयोगकर्ता इनपुट से संबंधित सामग्री की खोज कर सकते हैं।

विशेषता फ़िल्टरिंग

डेटा खोज के लिए, वेक्टर्स का उपयोग करके समानता खोजने के अलावा, कभी-कभी हमें कुछ विशेषताओं को फ़िल्टर करने के लिए SQL के WHERE clause के समान विशेषता फ़िल्टरिंग को भी निष्पादित करना चाहिए। Qdrant विशेषता फ़िल्टरिंग का समर्थन करता है जिसका उपयोग प्वाइंट पेलोड से जुड़े विशेषताओं को फ़िल्टर करने के लिए किया जाता है।

उदाहरण

// collection_name - संग्रह नाम
POST /collections/{collection_name}/points/search

{
    "filter": { // यह मुख्य रूप से पेलोड के संबंधित विशेषताओं को फ़िल्टर करने के लिए है, और कुल संबंध संतुलन प्रारूप ईलास्टिकसर्च के प्रारूप के समान है। यह पैरामीटर वैकल्पिक है।
        "must": [ // रेड रंग वाले प्वाइंट डेटा को फ़िल्टर करें
            {
                "key": "color",
                "match": {
                    "value": "red"
                }
            }
        ]
    },
    "vector": [0.2, 0.1, 0.9, 0.7], // वेक्टर पैरामीटर
    "limit": 3
}

अधिक विस्तृत ट्यूटोरियल के लिए, कृपया निम्न अध्यायों पर संदर्भ करें।