# Criar Embeddings

Vamos considerar um exemplo de robô que pega uma instrução sobre um carro de um arquivo de texto, divide-a em fragmentos e calcula um embedding para cada fragmento - um vetor de características para a busca posterior das partes necessárias do documento por similaridade. Os fragmentos de texto, juntamente com os embeddings correspondentes, são gravados em um arquivo CSV. Este projeto é preparatório para o uso do projeto [SearchEmbeddings](https://docs.sherparpa.ru/pt/sherpa-rpa/sherpa-designer/primery-robotov/ai-chat-with-own-document/search-embeddings) e deve ser executado uma única vez.

O projeto do robô consiste em um diagrama. Assim, se descrevermos passo a passo, este robô funciona da seguinte maneira:

1. Lê o conteúdo do arquivo especificado nas propriedades.
2. Divide esse conteúdo em fragmentos.
3. Calcula o embedding para cada elemento.
4. Grava os embeddings obtidos nas Tabelas de Dados.
5. Salva os fragmentos de texto com os embeddings correspondentes em um arquivo CSV.

O diagrama do projeto é assim (para conveniência, os blocos do diagrama estão numerados):

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeqeFXEghBrEJHcfvZaTCQI1NahBcJyOoAIbOyxr2zvX7kNyLHk16bUBauM79_VAn14Y87DSstQ3cgnFgu-SgTFZflvWzpo6naDc9n8MBYXerk0v_IW29BXiuukSLkr1zjoPDbbkB8lMm38UusKN_b-tyNp?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

1. **Bloco “Início”** (este bloco inicia qualquer diagrama).
2. **Bloco “Ler linha do arquivo”** lê o conteúdo do arquivo sequencialmente (linha por linha). Para este bloco, as seguintes propriedades são especificadas:

* Nome do arquivo (nome do arquivo de onde as informações serão lidas);
* Codificação (codificação do arquivo de onde as informações serão lidas);
* Ignorar linhas vazias (ao ativar a flag, a função de ignorar linhas vazias ao ler informações do arquivo é ativada).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfnauS1JofV8ELk4693-5QZDuuKayN9ePsVQT2RxZ5tDDgShbJfCqFyMewelWsZVVKatZpfZUzOtY1RzVendsUsxfwV9duCCwjxCGwoRZlr-rW1XwxF6vDyJ9RuwoI0v1La_DPDFxGONrUrkQbkO9XAiGxB?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

3. **Bloco “Condição”** verifica a condição especificada para ver se é verdadeira, após o que a execução do script continua na direção da saída “Sim” (se a condição for atendida) ou na direção da saída “Não” (se a condição não for atendida).

A condição é escrita no formato: “variável” é igual (==)/ maior (>)/ menor (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, então a saída é “Sim”, caso contrário – a saída é “Não”.

$Result > 5, ou seja, se o valor da variável $Result for menor que 5, então a saída é “Sim”, caso contrário – a saída é “Não”.

Neste caso, a condição estabelecida é: $Lines.Count > 0, ou seja, esta condição verifica se o valor da variável $Lines é maior que zero, então a saída é “Sim”, caso contrário – a saída é “Não”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfa-l3C_PRVCFhonw8r-jsJ3SxFNqb7mclAsVC3akc4KC-f183-YOWOaTRich6-ut0XK_3n4NtowI3hX_5a3kyYeO3Kx-43CC0BckGSv09u9t4R13gW1ygndCxls17VZcwQLGpUsrZ3yjF_R-clVU_P9J41?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

4. **Bloco “Obter embeddings”** permite obter embeddings a partir de uma linha ou lista de linhas usando o serviço Open AI. Para este bloco, as seguintes propriedades são especificadas:

* Texto (texto de entrada para o qual os embeddings serão calculados);
* Modelo (modelo de rede neural para gerar a resposta);
* Como tabela de dados (ao ativar a flag, a função de retornar o resultado na forma de tabela de dados com duas colunas: “Texto” e “Embeddings”);
* Timeout (tempo máximo de espera pela resposta em segundos).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfa-l3C_PRVCFhonw8r-jsJ3SxFNqb7mclAsVC3akc4KC-f183-YOWOaTRich6-ut0XK_3n4NtowI3hX_5a3kyYeO3Kx-43CC0BckGSv09u9t4R13gW1ygndCxls17VZcwQLGpUsrZ3yjF_R-clVU_P9J41?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

5. **Bloco “Unir Tabelas de Dados”** permite unir duas Tabelas de Dados em uma. Para este bloco, as seguintes propriedades são especificadas:

* Primeira Tabela de Dados;
* Segunda Tabela de Dados;
* Tipo de junção (tipo de junção das tabelas, se os esquemas das tabelas especificadas diferem. Neste caso, o tipo é “Adicionar”, ou seja, adicionar).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcFJzDLfU3eTOlFkjG77aXHdZG0mpHS4ro-l9wr3vK6DVDKXI1fszYBalQRBztSnTPqDM5AK4ZZ90JC19gvtdi7EEuZsBEbOzWdls6glvy-Tt4V9XjCZBN91yeRqWF-7Qo2_TbuxlA37zrQoHvtClQocxzf?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

6. **Bloco “Salvar em CSV”** permite salvar a Tabela de Dados em um documento CSV. Para este bloco, as seguintes propriedades são especificadas:

* Tabela de Dados (Tabela de Dados que deve ser salva no documento);
* Caminho do arquivo (caminho do arquivo onde a Tabela de Dados deve ser salva);
* Delimitador (símbolo delimitador);
* Codificação (codificação do arquivo).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdm7Hy8zb6DHe1qizlhP3mMJGD2D6G_pKxSJDZr2WbJe17nOqyUWTjjRGnweZCfvMxUhxBN5EKAKIWx9TgQW9jNAv92qbk00wgC4G216o-nWaZcMfrCIZbiST4HLe3N6trmkfXJEbYer3LUTUXZShKiFNs?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

7. **Bloco “Log”** permite registrar mensagens arbitrárias e/ou valores de variáveis durante a execução do script do robô. Para este bloco, a propriedade “Valor” é especificada. Entre aspas, é indicada uma constante de texto, e o nome da variável começa com o símbolo $. Ou seja, este bloco registra no log do robô uma mensagem sobre a leitura de uma linha do arquivo, indicando essa linha com a variável.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdsANztAn7ZTGLAB_TI68D0gBexaQhwPGRSEIxPYsyZx4UKqGy_bh7O1trBk4wdSxYmme8sEKPNKS6HC00El_tsbc1D_vp0ml5zpD1s_AFukl6Gpu-ySXBMc0JDxiqLyc90nZNTqarzzOIa3VXnZ54sfO1q?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

8. **Bloco “Adicionar elemento à lista”** permite adicionar o elemento especificado ao final da lista. Para este bloco, as seguintes propriedades são especificadas:

* Lista (lista à qual o novo elemento deve ser adicionado);
* Elemento (variável que deve ser adicionada à lista).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc2vHe-GAj8Io3KgP9MxDpR-Q6QyHF1KSvP9O1x0UIGzEEZkh2cv-GQztoce04aIS7Byv7pXB3SO7Ovrt398hxuaNaeJBxFD8ghC_git18fl9Kf6s7ItBALKNZMAByMQLxyHzGuhBcUNLnXNeF72g8BknM?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

9. **Bloco “Condição”** verifica a condição especificada para ver se é verdadeira, após o que a execução do script continua na direção da saída “Sim” (se a condição for atendida) ou na direção da saída “Não” (se a condição não for atendida).

A condição é escrita no formato: “variável” é igual (==)/ maior (>)/ menor (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, então a saída é “Sim”, caso contrário – a saída é “Não”.

$Result > 5, ou seja, se o valor da variável $Result for menor que 5, então a saída é “Sim”, caso contrário – a saída é “Não”.

Neste caso, a condição estabelecida é: $Lines.Count > 20, ou seja, se o valor da variável $Lines for maior que 20, então a saída é “Sim”, caso contrário – a saída é “Não”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfFmWCp-UTvYnzcBwrKxZjoRb0MJPixptgLJk5e00ihRJwVw2cNhAlysg2351x5h-BrfzqQCJjJGJ2J4GRUo-o84BaDj2e0eufJ5jIKgXycFDZSfNVNCWUElSZAXzxCJTZyXe1Jx71GyHydV3D96Ju2EA-e?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

10. **Bloco “Obter embeddings”** permite obter embeddings a partir de uma linha ou lista de linhas usando o serviço Open AI. Para este bloco, as seguintes propriedades são especificadas:

* Texto (texto de entrada para o qual os embeddings serão calculados);
* Modelo (modelo de rede neural para gerar a resposta);
* Como tabela de dados (ao ativar a flag, a função de retornar o resultado na forma de tabela de dados com duas colunas: “Texto” e “Embeddings”);
* Timeout (tempo máximo de espera pela resposta em segundos).

  <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXepwSilXC_cllvFbDFyFaMVyvVlc2_axeN3z8QrEb4kEj05uMudA4vL91vle05FfBRQ9GRSa7ImDSynQBblmy1fwa0S8RgAXmOoofSD9SJysRvCPnJaynZjLv5YqqPXBHWzNTT2u2LzLJ4WagvaDk83mXi4?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

11. **Bloco “Unir Tabelas de Dados”** permite unir duas Tabelas de Dados em uma só. Para este bloco, as seguintes propriedades são especificadas:

* Primeira Tabela de Dados;
* Segunda Tabela de Dados;
* Tipo de união (tipo de união das tabelas, se os esquemas das tabelas especificadas forem diferentes. Neste caso, o tipo é “Add”, ou seja, adicionar).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfKbeXW7xmQUmm2QUo2SptN_Sy3TmtXvAGKezoGsBV_YZ6m2rViGM2zPrE_oJGoCVb0QOTBWsgPpb1gePZvUWRaJ9uc_dUla_dpAm39FLPZLUlo7GqdNzTuMcdIWpapTxi3ZPYDb1SgE76K13SLvuH9dKc?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

12. **Bloco “Salvar em CSV”** permite salvar a Tabela de Dados em um documento CSV. Para este bloco, as seguintes propriedades são especificadas:

* Tabela de Dados (Tabela de Dados que deve ser salva no documento);
* Caminho do arquivo (caminho do arquivo onde a Tabela de Dados deve ser salva);
* Delimitador (símbolo delimitador);
* Codificação (codificação do arquivo).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfWM5DkrV0izVAXoc3QDlpUamkCK2BeeaRRc2h__RG1TOrqOThH7Jq6cCzelcJXfOLnplf564i5pkD5UZw0thgl6dPywh3VB5HQ0iv52oi0uyI3QQW09oUFRVCiwKdnM0dvetDlvYCHkP1yfkI0tyl5To0?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

13. **Bloco “Limpar lista”** permite limpar a lista removendo todos os seus elementos. Para este bloco, a propriedade “Lista” é especificada (lista que deve ser limpa).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcbGlCf-VwsKDHABp-ZYixyU_k8Hc6D48UD1XPnRD2s9NBMbPk_boXQ-DSl0m_DtPAcfGntoWd_y7o1OJGnLXuDzj1q7kjiEzzY7CIy6dqHLKS419PdUlqvnkhnYZIEQ8Lylvmghb1uzYT4y28keGi0PiSf?key=2EX7NdvOOR4JJxCrOTqjfg" alt=""><figcaption></figcaption></figure>

14. **Bloco “Fim”** (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/pt/sherpa-rpa/sherpa-designer/primery-robotov/ai-chat-with-own-document/create-embeddings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
