Установка Qdrant
Примечание: Этот учебник основан на установке базы данных Qdrant с использованием Docker. Пожалуйста, установите Docker перед продолжением.
Загрузите образ qdrant
docker pull qdrant/qdrant
Запустите сервис векторной базы данных qdrant
docker run -p 6333:6333 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant
По умолчанию мы отображаем локальный каталог файлов в контейнер, и все данные хранятся в каталоге ./qdrant_storage.
Теперь вы можете получить доступ к Qdrant через localhost:6333.
Векторная база данных Qdrant поддерживает RESTful API для операций с базой данных, а также SDK для языков программирования, таких как 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 Web UI
Получите доступ к веб-интерфейсу через адрес http://localhost:6333/dashboard
Создание коллекций
Концепция коллекций в векторной базе данных Qdrant может быть сравнена со структурой таблицы MYSQL, используемой для единообразного хранения данных одного типа векторов. Каждый хранимый в коллекции данных, называемый точками в Qdrant, имеет сходное значение с точками в математическом геометрическом пространстве, представляющее векторное представление в геометрическом пространстве (просто рассматривайте его как кусок данных).
PUT /collections/{collection_name}
{
"vectors": {
"size": 300,
"distance": "Cosine"
}
}
Пояснение параметров:
Параметр | Описание |
---|---|
collection_name | Название коллекции (обязательно) |
vectors | Определение параметров вектора (обязательно) |
vectors.size | Представляет размер вектора (или размерность вектора) |
vectors.distance | Представляет алгоритм сходства вектора, в основном включая три алгоритма: "Cosine", "Euclid", "Dot" |
Добавление векторов (точек)
После создания коллекции мы можем добавить векторные данные в коллекцию. В Qdrant векторные данные представлены с использованием точек, где каждые данные точки включают три части: идентификатор, нагрузка (связанные данные) и векторные данные.
Пример
PUT /collections/{collection_name}/points
{
"points": [
{
"id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // id
"payload": {"color": "red"}, // Связанные атрибутные данные, обычно связанные с бизнес-атрибутами, такими как: идентификатор заказа, идентификатор продукта, название и т. д.
"vector": [0.9, 0.1, 0.1] // Векторные данные, представляющие характеристики текущих бизнес-данных
}
]
}
Поиск векторов
После добавления векторных данных мы можем выполнять поиск семантической схожести с использованием векторов.
Пример
// collection_name - название коллекции
POST /collections/{collection_name}/points/search
{
"vector": [0.2, 0.1, 0.9, 0.7], // Векторный параметр
"limit": 3 // Возвращает топ 3 данных с наивысшей схожестью
}
Описание параметров:
- вектор: Параметр вектора, используемый для поиска контента, схожего с этим вектором. Например: Вы можете преобразовать ключевые слова, которые пользователи должны искать, в векторы, а затем искать содержимое, связанное с вводом пользователя.
Фильтрация атрибутов
При поиске данных помимо выполнения поиска схожести с использованием векторов иногда требуется выполнять фильтрацию атрибутов, аналогичную WHERE-условию в SQL, для фильтрации некоторых атрибутов. Qdrant поддерживает фильтрацию запросов для фильтрации атрибутов, связанных с данными точек.
Пример
// collection_name - название коллекции
POST /collections/{collection_name}/points/search
{
"filter": { // Это в основном используется для фильтрации атрибутов, связанных с данными, и общий формат синтаксиса подобен синтаксису Elasticsearch. Этот параметр является необязательным.
"must": [ // Фильтрация данных точек с цветом=красный
{
"key": "color",
"match": {
"value": "red"
}
}
]
},
"vector": [0.2, 0.1, 0.9, 0.7], // Параметр вектора
"limit": 3
}
Для более подробных учебных пособий обратитесь к следующим главам.