Para quem conferiu o último post aqui do blog, eu trouxe as diferenças entre as técnicas que permitem você customizar um modelo de linguagem para determinados usos. Cada uma das técnicas: Prompt Engineering, Embeddings e Fine Tuning devem ser escolhidas de acordo com o propósito da adequação no modelo. Nesse artigo irei aprofundar no uso da técnica de Embeddings demonstrando como esta pode ser uma poderosa aliada na construção de produtos conversacionais (Chatbots), como ferramenta para interagir, entender e consolidar conhecimento a partir do ato de conversar com este conjunto de dados incorporado a um LLM, adicionado à uma base vetorial. Neste artigo irei fazer um bem bolado entre o conceito macro e o aprofundamento técnico, e trago uma dica para os desenvolvedores de plantão quem sabe experimentarem com esta nova técnica.
A primeira ideia que gostaria de expor é que modelos de linguagem como o GPT3 / 3.5 foram treinados com vastidões de dados disponíveis na internet, mas justamente por isso, são rasos e não factuais (para não dizer mentirosos) quando se trata de aprofundar em determinado assunto. Mas vamos lá, eles são desenhados para parecerem verdadeiros, por isso mentem para corresponder ao que são solicitados. O ponto aqui que muitos negligenciam é que eles podem ser acoplados a outras bases de dados (as suas, no caso, ou outras bases públicas) e imediatamente virarem expert em um conhecimento específico, aumentando enormemente sua factibilidade naquele domínio em que foi incorporado. (Assim como demonstrei no caso de uso do Clipping GPT, para quem não viu, aqui está o link do artigo).
Esta técnica permite que o LLM entenda que lhe foi adicionado uma base extra de conhecimento e que esta base é mais relevante que o conhecimento geral implícito em que ele foi pré-treinado (por isso a sigla Generative Pre-trained Model), pois são modelos pré-treinados, generalistas, e que podem ser expandidos conforme a finalidade que se deseja dar. E como esse modelo se alimenta de novas informações? Através de bases vetoriais por padrão! Isto porque como são modelos de linguagem eles não entendem diretamente CSVs, Documentos de texto, Grafos, etc. Mas sim, correlações semânticas entre significantes (palavras) - isto é, a correspondência estatística entre eles, e os modelos vetoriais são exatamente isto, são disposições no espaço que mapeiam se uma palavra X está próxima semanticamente de outra Y e como elas se correlacionam com outra Z.
A técnica de embedding é justamente usada neste processamento da linguagem natural e mapeia palavras ou frases do vocabulário para vetores de números reais. Isto reduz a dimensionalidade de dados categóricos e é um método eficaz para adicionar estrutura a dados brutos. Os vetores resultantes capturam o contexto semântico dos signos: palavras que são semanticamente semelhantes têm vetores de incorporação que estão próximos no espaço vetorial, como elas se relacionam entre si, com verbos, adjetivos, etc., também estão mapeadas nessa disposição. Em resumo: Toda vez que você quiser adicionar novas bases de conhecimento a um LLM você precisa transformar em uma base vetorial, para isto tem bibliotecas prontas para uso como o Pinecone. A Pinecone tem ganhado espaço e se consolidando como principal (senão único) player neste contexto e adotam o seguinte propósito: “The Pinecone vector database makes it easy to build high-performance vector search applications. Developer-friendly, fully managed, and easily scalable without infrastructure hassles.”
O que a Pinecone te entrega no final das contas é uma base vetorial pronta para ser consultada a partir dos dados que você incorporou. Depois que você construir sua base vetorial, adicioná-la a um modelo GPT é coisa simples, três ou quatro linhas de código, com bibliotecas prontas da OpenAi, da Pinecone e da LangChain que já foi assunto aqui neste blog. E é justamente este intermediador que “adiciona” a sua base vetorial ao modelo LLM criando esta aplicação customizada. Neste artigo você encontra o código base para que você possa brincar em seu terminal do Linux.
Vade Mecum Chatbot 🥸
Para tentar tangibilizar este conceito, pense na seguinte aplicação: Um chatbot para que você interaja e entenda o Vade Mecum, a bíblia da lei brasileira. Com este chatbot, ao invés de você ter que abrir o Vade Mecum e procurar determinado tema ou lei, você simplesmente irá conversar com o livro. Loucura né? Veja bem, isto não é o mesmo que pesquisar, pois na busca semântica você pode fazer perguntas do tipo: “Existe alguma lei que me ajude a pensar uma implantação de condomínio? Por favor me liste a jurisprudência necessária para leitura” e a busca semântica irá articular uma resposta apurada para você, isto é bem diferente de um “Control-F”. É como se tivesse um agente na frente do livro, facilitando a vida para você.
Para construir este chatbot você poderia seguir os seguintes passos: Baixar uma versão gratuita do PDF Vade Mecum disponível no site do Senado Federal, transformá-lo gratuitamente em texto numa dessas ferramentas conversoras disponíveis na internet. Instalar as bibliotecas da OpenAI, Pinecone e Langchain, adicionando sua chave da API da OpenAI, transformando o texto do Vade Mecum em base vetorial através dos métodos simples da Pinecone e utilizando o LangChain para conectar tudo isso disponibilizando um endpoint para que você possa conectar seu chatbot. Alô desenvolvedores, vamos ganhar dinheiro? Eu infelizmente não vou ter os traquejos para construir esse experimento, até porque o GPT me ajuda a aprender muita coisa, mas não substitui a experiência de cada um.
Para uso corporativo, imagine conversar com a enormidade de dados produzidos em centenas, senão milhares de databases e dashboards que isolados não geram nenhum insight.
Para ciência de dados a mesma coisa, cientistas se debruçam tentando construir técnicas que ajudem a extrair, manipular e resumir em tempo real quais são as tendências que estão se consolidando na rede, e bases vetoriais podem representar essas premissas analíticas e são facilmente expansíveis e atualizáveis. É possível criar aplicações que se alimentam em tempo real do conhecimento que está sendo difundido pela rede e você poderá conversar com esta aplicação para que ela gere briefings destes ocorridos. O jeito que passamos a interagir com o conhecimento irá mudar bastante nos próximos meses e anos, teremos agentes cognitivos como aliados. Saibamos fazer bom uso, não fiquemos preguiçosos e alienados pela facilidade (que certamente terá um preço) e continuemos a compartilhar este saber em prol de um melhor desenvolvimento da internet, das empresas, e das nossas aplicações. Até mais. 😎 Bônus: Quem já experimentou o plugin do Noteable do ChatGPT Plus? O plugin ainda está em testes mas já te ajuda a criar visualizações com análises bem abrangentes a partir de dados brutos, apenas com Prompt Engineering. Confira um caso de uso aqui.
Comments