Ten rozdział przedstawia szybki start bazy danych wektorowej Qdrant i sposób obsługi bazy danych wektorowej za pomocą interfejsu API typu RESTful.

Instalowanie Qdrant

Uwaga: Ten samouczek opiera się na instalacji bazy danych Qdrant za pomocą Dockera. Przed przejściem dalej zainstaluj Dockera.

Pobierz obraz qdrant

docker pull qdrant/qdrant

Uruchom usługę bazy danych wektorowych qdrant

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

Domyślnie mapujemy katalog plików lokalnych do kontenera, a wszystkie dane są przechowywane w katalogu ./qdrant_storage.

Teraz możesz uzyskać dostęp do Qdrant za pośrednictwem localhost:6333.

Baza danych wektorowa Qdrant obsługuje interfejs API typu RESTful do operacji na bazie danych, a także interfejsy SDK dla języków programowania takich jak Python, Go, itp. Ten samouczek skupia się głównie na wyjaśnieniu użycia interfejsu API typu RESTful.

Przykład korzystania z API

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

Interfejs WWW Qdrant

Uzyskaj dostęp do interfejsu WWW pod adresem http://localhost:6333/dashboard

Qdrant interfejs WWW

Tworzenie Kolekcji

Koncepcja kolekcji w bazie danych wektorowej Qdrant może być porównywana do struktury tabeli MYSQL, służącej do jednolitego przechowywania tego samego rodzaju danych wektorowych. Każde przechowywane w kolekcji dane, zwane w Qdrant punktami, mają podobne znaczenie do punktów w przestrzeni geometrycznej matematycznej, reprezentującej wektorową reprezentację przestrzeni geometrycznej (traktuj to po prostu jako część danych).

PUT /collections/{collection_name}

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

Wyjaśnienie parametrów:

Parametr Opis
collection_name Nazwa kolekcji (wymagane)
vectors Definicja parametrów wektorów (wymagane)
vectors.size Reprezentuje rozmiar wektora (lub wymiar wektora)
vectors.distance Reprezentuje algorytm podobieństwa wektorów, obejmujący głównie trzy algorytmy: "Cosine", "Euclid", "Dot"

Dodawanie Wektorów (Punktów)

Po utworzeniu kolekcji możemy dodać dane wektorowe do kolekcji. W Qdrant dane wektorowe są reprezentowane za pomocą punktów, gdzie każde dane punktu zawierają trzy części: id, ładunek (powiązane dane) i dane wektorowe.

Przykład

PUT /collections/{collection_name}/points

{
    "points": [
        {
            "id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // id
            "payload": {"color": "red"}, // Powiązane dane atrybutów, zwykle związane z atrybutami biznesowymi, takimi jak: identyfikator zamówienia, identyfikator produktu, tytuł, itp.
            "vector": [0.9, 0.1, 0.1] // Dane wektorowe reprezentujące cechy bieżących danych biznesowych
        }
    ]
}

Wyszukiwanie Wektorów

Po dodaniu danych wektorowych możemy przeprowadzić wyszukiwanie semantycznej podobieństwa za pomocą wektorów.

Przykład

// collection_name - nazwa kolekcji
POST /collections/{collection_name}/points/search

{
    "vector": [0.2, 0.1, 0.9, 0.7], // parametr wektorowy
    "limit": 3 // Zwraca 3 pierwsze dane o najwyższym podobieństwie
}

Opis Parametrów:

  • vector: Parametr wektorowy służący do wyszukiwania treści podobnych do tego wektora. Na przykład: Możesz przekształcić słowa kluczowe, które użytkownicy chcą wyszukać, na wektory, a następnie wyszukać treści związane z wprowadzonymi przez użytkownika danymi.

Filtracja atrybutów

Podczas wyszukiwania danych, poza wykonywaniem podobieństwa wyszukiwań za pomocą wektorów, czasami chcemy również wykonać filtrowanie atrybutów podobne do klauzuli WHERE w SQL w celu filtrowania niektórych atrybutów. Qdrant obsługuje zapytania filtrujące do filtrowania atrybutów powiązanych z ładunkiem.

Przykład

// collection_name - nazwa kolekcji
POST /collections/{collection_name}/points/search

{
    "filter": { // Głównie służy do filtrowania powiązanych atrybutów ładunku, a ogólny format składni jest podobny do składni Elasticsearch. Parametr jest opcjonalny.
        "must": [ // Filtruj punkty danych z kolorem czerwonym
            {
                "key": "color",
                "match": {
                    "value": "red"
                }
            }
        ]
    },
    "vector": [0.2, 0.1, 0.9, 0.7], // Parametr wektorowy
    "limit": 3
}

Dla bardziej szczegółowych samouczków, proszę odnieść się do następnych rozdziałów.