Pular para o conteúdo principal
A maior parte do trabalho de IA em bancos de dados segue o mesmo formato: ler linhas, enviá-las a um modelo, esperar, gravar as respostas de volta. O vsql_ai elimina o meio chamando o modelo a partir do SQL. Duas funções dão conta disso, uma para um prompt e outra para um embedding. A função de prompt funciona com Anthropic Claude, Google Gemini, OpenAI ou um modelo executado localmente por meio do Ollama. A função de embedding funciona com todos esses, exceto a Anthropic.

Instalar

O vsql_ai.veb já está no diretório lib/veb/ do servidor se você instalou o VillageSQL com o script de instalação, a imagem Docker ou um tarball de release. Instale-o no servidor com uma única instrução:
Confirme que ele está lá:
Para compilá-lo você mesmo, siga as instruções de compilação no repositório.

O que ela adiciona

provider é anthropic, google, openai ou local. Um modelo local é executado por meio do Ollama e recebe uma chave de API vazia. O ai_embedding oferece suporte a modelos do Google, da OpenAI e locais.

Exemplo

Faça uma pergunta a um modelo local:
Um modelo responde com as suas próprias palavras, então a sua resposta será diferente dessa. Transforme texto em um vetor e verifique a sua largura:
Um provedor hospedado recebe a mesma chamada com uma chave:
No VillageSQL 0.0.6 e anteriores, o resultado carrega o conjunto de caracteres binary, e duas coisas decorrem disso. Uma função JSON ou uma coluna JSON o rejeita, então o exemplo de embedding acima falha ali com ERROR 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. Dentro de JSON_OBJECT() ou JSON_ARRAY() ele é aceito, mas codificado em base64, então SELECT JSON_OBJECT('v', ai_prompt(...)) retorna {"v": "base64:type15:UGFyaXMu"}. Envolva a chamada em CONVERT(... USING utf8mb4) nessas versões. Isso não é necessário no 0.0.7 e posteriores, onde os exemplos acima rodam como estão escritos.
Cada chamada bloqueia a sua instrução enquanto o modelo responde, e cada chamada custa o que o provedor cobra. Uma chamada por linha em uma tabela grande é lenta e cara. Uma chave guardada em uma variável fica fora da instrução que chama o modelo, mas a instrução SET que a guarda é gravada no log de consultas com a chave.

Veja também