diff --git a/src/content/docs/en/pages/main-menu/reference/store/edge-sql/vector-search.mdx b/src/content/docs/en/pages/main-menu/reference/store/edge-sql/vector-search.mdx index 353b677e99..d9628bd549 100644 --- a/src/content/docs/en/pages/main-menu/reference/store/edge-sql/vector-search.mdx +++ b/src/content/docs/en/pages/main-menu/reference/store/edge-sql/vector-search.mdx @@ -45,7 +45,7 @@ The Azion Libraries provide tools and utilities to interact with Azion services ## Columns -To store vectors in a vector search database, you can add a column specifically for the vector data. Edge SQL Vector Seach supports embedding models, without dimension restrictions. +To store vectors in a vector search database, you can add a column specifically for the vector data. For example, using the `text-embedding-3-small` model and a `1536` dimension, this column should be declared to hold an array of 32-bit floating-point numbers as a binary large object (BLOB) type, as follows. The (3) in the example specifies the number of 32-bit floating-point (F32) elements in the vector, indicating a 3-dimensional vector: @@ -126,4 +126,22 @@ ON teams.rowid = id WHERE year >= 2023; - ``` \ No newline at end of file +``` + + --- + +## Limits and considerations + +- Vector Search uses **libSQL**. +- LibSQL uses the native SQLite BLOB storage class for vector columns, defined according to the number of bits used to represent each floating-point number in the vector. +- Supported vector types: `FLOAT1BIT | F1BIT_BLOB`, `FLOAT8 | F8_BLOB`, `FLOATB16 | FB16_BLOB`, `FLOAT16 | F16_BLOB`, `FLOAT32 | F32_BLOB`, and `FLOAT64 | F64_BLOB`. The `FLOAT32` is recommended as a starting point. +- The vector_distance_cos function calculates the cosine distance, which is defined at: `Cosine Distance = 1 — Cosine Similarity`. + - The cosine distance ranges *from 0 to 2*, where: + - A distance close to `0` indicates that the vectors are nearly identical or exactly matching. + - A distance close to `1` indicates that the vectors are orthogonal (perpendicular). + - A distance close to `2` indicates that the vectors are pointing in opposite directions. +- Euclidian distance isn't supported for `1-bit FLOAT1BIT vectors`. +- LibSQL can only operate on vectors with no more than *65536 dimensions*. +- LibSQL implements the DiskANN algorithm to speed up approximate nearest neighbor queries for tables with vector columns. Check the [Indexing](#indexing) section for more information. +- To query a vector index, you must use the vector_top_k(idx_name, q_vector, k) function, which finds the top k nearest neighbors and returns their ROWID or PRIMARY KEY. +- Vector index works only for tables with ROWID or with singular PRIMARY KEY. Composite PRIMARY KEY without ROWID isn't supported. diff --git a/src/content/docs/pt-br/pages/menu-principal/referencia/store/edge-sql/vector-search.mdx b/src/content/docs/pt-br/pages/menu-principal/referencia/store/edge-sql/vector-search.mdx index 54fee74d83..b80a7e80bf 100644 --- a/src/content/docs/pt-br/pages/menu-principal/referencia/store/edge-sql/vector-search.mdx +++ b/src/content/docs/pt-br/pages/menu-principal/referencia/store/edge-sql/vector-search.mdx @@ -45,7 +45,7 @@ As Azion Libraries fornecem ferramentas para interagir com os serviços da Azion ## Colunas -Para armazenar vetores em um banco de dados de busca vetorial, você pode adicionar uma coluna especificamente para os dados vetoriais. O Vector Search do Edge SQL suporta modelos de embedding, sem restrições de dimensão. +Para armazenar vetores em um banco de dados de busca vetorial, você pode adicionar uma coluna especificamente para os dados vetoriais. Por exemplo, usando o modelo `text-embedding-3-small` e uma dimensão de `1536`, essa coluna deve ser declarada para conter um array de números de ponto flutuante de 32 bits como um tipo de objeto binário grande (BLOB). O (3) no exemplo especifica o número de elementos de ponto flutuante de 32 bits (F32) no vetor, indicando um vetor de 3 dimensões: @@ -128,3 +128,20 @@ WHERE year >= 2023; ``` +--- + +## Limites e considerações + +- O Vector Search utiliza **libSQL**. +- O LibSQL usa a classe de armazenamento BLOB nativa do SQLite para colunas vetoriais, definida de acordo com o número de bits usados para representar cada número de ponto flutuante no vetor. +- Tipos de vetor suportados: `FLOAT1BIT | F1BIT_BLOB`, `FLOAT8 | F8_BLOB`, `FLOATB16 | FB16_BLOB`, `FLOAT16 | F16_BLOB`, `FLOAT32 | F32_BLOB` e `FLOAT64 | F64_BLOB`. O `FLOAT32` é recomendado como ponto de partida. +- A função vector_distance_cos calcula a distância cosseno, que é definida como: `Distância Cosseno = 1 — Similaridade Cosseno`. + - A distância cosseno varia *de 0 a 2*, onde: + - Uma distância próxima de `0` indica que os vetores são quase idênticos ou exatamente correspondentes. + - Uma distância próxima de `1` indica que os vetores são ortogonais (perpendiculares). + - Uma distância próxima de `2` indica que os vetores estão apontando em direções opostas. +- A distância euclidiana não é suportada para vetores `FLOAT1BIT de 1 bit`. +- O LibSQL só pode operar em vetores com no máximo *65536 dimensões*. +- O LibSQL implementa o algoritmo DiskANN para acelerar consultas de vizinhos mais próximos aproximados para tabelas com colunas vetoriais. Consulte a seção [Indexação](#indexação) para mais informações. +- Para consultar um índice vetorial, você deve usar a função vector_top_k(idx_name, q_vector, k), que encontra os k vizinhos mais próximos e retorna seu ROWID ou PRIMARY KEY (chave primária). +- O índice vetorial funciona apenas para tabelas com ROWID ou com CHAVE PRIMARY KEY singular. Chaves primárias compostas sem ROWID não são suportadas.