Este capítulo apresenta o início rápido do banco de dados de vetores Qdrant e como operar o banco de dados de vetores com base na API RESTful.
Instalando Qdrant
Nota: Este tutorial é baseado na instalação do banco de dados Qdrant usando o Docker. Por favor, instale o Docker antes de prosseguir.
Faça o download da imagem do qdrant
docker pull qdrant/qdrant
Inicie o serviço de banco de dados de vetores qdrant
docker run -p 6333:6333 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant
Por padrão, mapeamos o diretório de arquivos local para o contêiner, e todos os dados são armazenados no diretório ./qdrant_storage.
Agora é possível acessar o Qdrant via localhost:6333.
O banco de dados de vetores Qdrant suporta a API RESTful para operações de banco de dados, bem como SDKs para linguagens de programação como Python, Go, etc. Este tutorial foca principalmente em explicar o uso da API RESTful.
Exemplo de acesso à 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
Acesse a interface web através do endereço http://localhost:6333/dashboard
Criando Coleções
O conceito de coleções no banco de dados de vetores Qdrant pode ser comparado à estrutura de tabela do MYSQL, usada para armazenar de forma uniforme o mesmo tipo de dados de vetor. Cada dado armazenado na coleção, referido como pontos no Qdrant, tem um significado semelhante aos pontos no espaço geométrico matemático, representando a representação do vetor no espaço geométrico (apenas trate-o como um pedaço de dados).
PUT /collections/{collection_name}
{
"vectors": {
"size": 300,
"distance": "Cosine"
}
}
Explicação dos Parâmetros:
Parâmetro | Descrição |
---|---|
collection_name | Nome da coleção (obrigatório) |
vectors | Definição de parâmetros de vetor (obrigatório) |
vectors.size | Representa o tamanho do vetor (ou dimensão do vetor) |
vectors.distance | Representa o algoritmo de similaridade de vetores, incluindo principalmente três algoritmos: "Cosseno", "Euclidiano", "Ponto" |
Adicionando Vetores (Pontos)
Após criar uma coleção, podemos adicionar dados de vetor à coleção. No Qdrant, os dados de vetor são representados usando pontos, onde cada dado de ponto inclui três partes: id, payload (dados associados) e dados de vetor.
Exemplo
PUT /collections/{collection_name}/points
{
"points": [
{
"id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // id
"payload": {"color": "red"}, // Dados de atributos associados, geralmente atributos comerciais relacionados, como: ID do pedido, ID do produto, título, etc.
"vector": [0.9, 0.1, 0.1] // Dados de vetor representando as características dos dados comerciais atuais
}
]
}
Busca de Vetores
Após adicionar dados de vetor, podemos realizar uma busca de similaridade semântica usando vetores.
Exemplo
// collection_name - nome da coleção
POST /collections/{collection_name}/points/search
{
"vector": [0.2, 0.1, 0.9, 0.7], // parâmetro de vetor
"limit": 3 // Retornar os 3 principais dados com a maior similaridade
}
Descrição dos Parâmetros:
- vector: Parâmetro de vetor usado para buscar conteúdo similar a este vetor. Por exemplo: É possível converter as palavras-chave que os usuários precisam buscar em vetores e, em seguida, buscar conteúdo relacionado à entrada do usuário.
Filtro de Atributos
Ao buscar dados, além de realizar buscas de similaridade usando vetores, às vezes também queremos executar filtragem de atributos semelhante à cláusula WHERE do SQL para filtrar alguns atributos. O Qdrant suporta consultas de filtro para filtrar atributos associados à carga útil do ponto.
Exemplo
// collection_name - nome da coleção
POST /collections/{collection_name}/points/search
{
"filter": { // Isso é usado principalmente para filtrar os atributos associados à carga útil, e o formato geral de sintaxe é semelhante à sintaxe do Elasticsearch. Este parâmetro é opcional.
"must": [ // Filtrar dados de ponto com cor=vermelho
{
"key": "color",
"match": {
"value": "red"
}
}
]
},
"vector": [0.2, 0.1, 0.9, 0.7], // Parâmetro de vetor
"limit": 3
}
Para tutoriais mais detalhados, consulte os capítulos seguintes.