Como criar meu modelo de AI especializado baseado em algum Foundation Model?

Preparando Modelos especializados

Estatégias

- Estratégia 1: Preparação de Embeddings como base de conhecimento para Foundation Model.

- Deste modo construímos uma database vetorial que pode ser utilizada para medir Proximidade. Podemos armazenar isso em um ChromaDB ou Pinecone ou alguma outra database vetorial.

- Estratégia 2: Fine Tuning de Modelo usando provedores ou não.

- A openai por exemplo disponibiliza ferramentas para fazermos treinamento dos foundation model deles como por exemplo o gpt3.
- Isso é um método coerente para especializar um modelo já parrudo para nossos use-cases. Dito isso. Esse método exige muitos dados e é interessante utilizar técnicas de Reinforcement Learning with Human Feedback (RLHF) onde fazemos um treinamento progressivo do modelo a partir de testes humanos.

- Estratégia 3: Um Mix da 1 e 2.

Problemas

A utilização de Embeddings tem limitações.

  1. A definição do tamanho dos chunks cuja a posiçao vetorial será definida interfere com a qualidade das pesquisas.
  2. O algoritmo de embeddings ideal é algo que não fica claro quanto à qual é o melhor. Mas de fato interfere com a qualidade dos resultados diretamente.
  3. A forma de entregar os resultados do Embeddings é via prompt, ou seja, é uma adição de contexto para a IA. Todavia, isso não garante que a IA vai obedecer aos embeddings, embora experimentação indique que ela vai sim.
  4. Confiabilidade nos resultados do embedding: Os resultados vindos do embedding dependem diretamente do que foi entregue para a pesquisa, e geralmente trabalhamos com a ideia de que a pesquisa do embedding deve ser feita no contexto atual. Portanto, os resultados dependem diretamente da pergunta feita pelo usuário que pode não colaborar com o resultado desejado dependendo da forma que a pergunta é formulada. Algo do tipo "Qual é o nome disso?" Onde a informação relevante estaria na realidade na mensagem anterior e não nessa.

Problemas com Fine Tuning

  1. Perda de capacidade de formulação: Fine-tuning tende a diminuir drásticamente a capacidade de formulação de respostas do chatgpt.
  2. Perda de capacidade generalista. O GPT perde parte da capacidade de responder perguntas relacionadas à contextos diferentes da base de conhecimento à ele apresentada.
  3. Aumento da alucinção. Quanto menor a base de dados mais propenso o modelo fica à identificar padrões inadequados e portanto alucinar com maior facilidade.

Daí surge minha pergunta de fato

A Openai disponibilizou a ferramenta para construção de GPTs. Essa ferramenta permite que especializemos os modelos deles para nossos objetivos pessoais. Ao criar um modelo, ele recebe um system prompt, uma base de conhecimento e uma breve descrição (menor que 300 caracteres) de quem o bot é e o que ele faz.

A crição de um GPT é quase que imediata, então supõe-se que não há fine tuning envolvido.

Supõe-se que estão utilizando Embeddings para pesquisar na base de conhecimento disponibilizada.

Após fazer testes comparando o modelo especializado do gpt e o gpt-4 puro, o modelo especializado performou consideravelmente melhor do que o gpt4, de fato. O que implica que a base de dados, de fato, teve uma grande importância na performance.

Minha dúvida é: Como a Openai teve resultados tão melhores na construção de embeddings e na disponibilização de respostas?

Qual modelo de embeddings eles usam? Como eles separam os chunks? Como eles apresentam os resultados dos embeddings para o modelo deles? Qual foundation model eles usam gpt3.5, gpt4 ou algum modelo especializado pra isso? Quem é o time responsável pela estrutura de criação dos GPTs? Alguém tem alguma informação sobre qualquer coisa que ajude nessa jornada de entender como fazer melhores modelos de línguagem especializados?

Fica aí a oportunidade de discussão. Tamo junto, turma.