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
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.