Quando se trabalha com aplicações modernas, especialmente as que envolvem Inteligência Artificial, processamento de linguagem natural, ou dados espaciais, a matemática vetorial é fundamental. É por isso que 4D 20 R10 introduz um novo objeto: 4D.Vector, desenhado para ajudar desenvolvedores a armazenar e comparar vetores de dados com apenas algumas linhas de código.
Por exemplo, se está construindo uma caraterística para classificar imagens baseadas em quão bem elas combinam com um texto, apenas gere vetores, compare-os usando similaridade de cosseno, e ordene seus resultados do mais para o menos relevante, tudo diretamente em 4D.
A integração de inteligência artificial não é apenas uma tendência – está se tornando um motor chave para aplicações de negócios modernas. É por isso que 4D está investindo profundamente em capacidades nativas de IA para apoiá-lo. Com 4D 20 R10, o suporte para dados vetoriais começa com a introdução de 4D.Vector – que estabelece as bases para um conjunto de recursos mais poderoso que virá em 4D 21.
Este primeiro lançamento dá aos desenvolvedores experientes as ferramentas para começar a construir funcionalidades mais inteligentes e alimentadas por IA diretamente nas suas aplicações 4D. Mas é apenas o começo. Melhorias importantes como um índice vetorial – essencial para escalar a performance – ainda estão por vir. Enquanto isso, estamos focando em casos de uso do mundo real que mostram o que é possível hoje, incluindo busca semântica e correspondência de linguagem natural.
Então… O que é exatamente um vetor?
Na sua essência, um vetor é apenas uma lista de números, mas esses números representam algo significativo.
Na IA, usamos vectores para descrever coisas complexas como palavras, imagens ou até mesmo o comportamento do cliente de uma forma que as máquinas possam comparar. Cada número na lista capta parte do significado dessa coisa: o seu tom, estilo, tópico ou contexto.
Por exemplo, a palavra “maçã” pode tornar-se um vetor como [0,12, -0,45, 0,78, …]. Estes números reflectem a forma como é utilizada na linguagem, talvez relacionada com fruta, talvez com a empresa de tecnologia, dependendo do contexto.
Estes vectores vivem num espaço de grande dimensão, onde significados semelhantes estão próximos uns dos outros e coisas não relacionadas estão afastadas.
Esta estrutura torna as comparações simples:
“Esta imagem está concetualmente próxima daquela mensagem?”
“Estes dois documentos estão a falar da mesma coisa?”
Utilizamos a matemática vetorial, como a semelhança de cosseno, para medir a proximidade entre dois vectores. Quanto mais próximos estiverem, mais relacionados estão os significados. É assim que as caraterísticas modernas como a pesquisa semântica, recomendações e classificação funcionam.
Apresentando 4D.Vetor: Matemática Vetorial Nativa em 4D
Começando em 4D 20 R10, agora pode trabalhar com vetores diretamente em seu código graças a um novo objeto nativo: 4D.Vector.
Foi desenhado para fazer a matemática vetorial simples e acessível para que possa armazenar, comparar e ordenar dados de alta dimensão sem depender de bibliotecas externas. Precisa de medir a semelhança entre dois itens? Apenas chame métodos embutidos como similaridade de cosseno, produto de ponto, ou distância Euclidiana, tudo dentro de 4D.
Criando um Vetor em 4D
Há duas maneiras simples de criar um vetor 4D.Vectordependendo de onde seus dados vêm:
1. Gerar a partir de texto usando 4D AI Kit
Se quiser transformar um pedaço de texto em um vetor, por exemplo, para comparar ideias ou fazer pesquisa semântica, pode usar o modelo de incorporação de OpenAI através de 4D AI Kit:
var $AIKey:="tDGWULQsrG..."
var $clientAI:=cs.AIKit.OpenAI.new($AIKey)
var $inputText:="Apple"
// Name of the embedding model to use
var $model:="text-embedding-ada-002"
// Call the OpenAI embeddings API to generate the vector for the input text
var $result:=$clientAI.embeddings.create($inputText; $model)
Var $myVector:=$result.embedding.vector
// $myVector=[0.013417294,-0.005096785,-0.001601552,-0.04005942,...]
Isto dá-lhe uma lista de números de ponto flutuante que captam o significado do seu input. Pode agora usá-lo em comparações, ranking, ou tarefas de classificação.
2. Criar diretamente a partir de uma lista de números
Se já tiver dados vectoriais – talvez a partir de um serviço ou modelo externo – pode criar um 4D.Vector manualmente:
var $vector := 4D.Vector.new([0.123; -0.456; 0.789])
Similaridade de cosseno: Ideal para comparações semânticas de textos
A similaridade de cosseno é uma das métricas de similaridade mais usadas no Processamento de Linguagem Natural (NLP) – ideal para comparar o significado de frases ou documentos. Mede a proximidade entre dois vectores que apontam na mesma direção, com base no ângulo entre eles e não no seu tamanho.

var $anotherVector := 4D.Vector.new([0.598; -0.951; 0.789])
var $similarity := $vector.cosineSimilarity($anotherVector)
// $similarity = 0,8949424061203
-
Intervalo: -1 (oposto) a 1 (idêntico)
-
Ideal para: comparação de embeddings de frases, pesquisa semântica e classificação de documentos
Produto de pontos: Direção e magnitude combinadas
A semelhança de pontos (também chamada de produto escalar) combina a direção e o comprimento dos vectores. Isto significa que não analisa apenas o alinhamento de dois vectores, mas também a sua força.
Se dois vectores apontarem numa direção semelhante e tiverem grandes magnitudes, o produto escalar será elevado, representado pelas setas mais grossas no diagrama.

var $score := $vector.dotSimilarity($anotherVector)
// $score = 1,129731
-
Valores mais altos = mais similaridade e alinhamento mais forte.
-
Ideal para: mecanismos de recomendação, modelos de transformação, embeddings ajustados
Distância euclidiana: Medida de dissimilaridade
A distância euclidiana dá-lhe uma medida real entre vectores. Mostra a distância entre dois vectores no espaço – quanto mais próximos estiverem, mais semelhantes são. Quanto mais afastados, mais diferentes são.
É perfeita quando é necessária uma verdadeira medida de dissimilaridade – ideal para agrupamento, deteção de anomalias ou raciocínio geoespacial.

var $distance := $vector.euclideanDistance($anotherVector)
//$distance = 0,6860393574716
-
Menor = mais semelhante
-
Ideal para: dados estruturados, deteção de anomalias ou proximidade espacial
Escolhendo a métrica de similaridade correta

Os vectores são apenas o começo
O objeto 4D.Vector estabelece as bases para um conjunto totalmente novo de recursos em seus aplicativos. Com apenas algumas linhas de código, você pode:
-
Criar ferramentas de pesquisa que compreendem a intenção
-
Fazer recomendações com contexto real
-
Classificar, agrupar e filtrar dados baseados em significado, não apenas metadados
E tudo isso roda nativamente em 4D – rápido, flexível, e pronto para escalar.
