fala pessoal Beleza então nesse vídeo eu vou trazer as diferenças entre fine tunning rag e prompt Engineering eu recebi várias perguntas a respeito disso Qual é quando que eu uso um quando que eu uso o outro achei interessante trazer um pouquinho porque com o avanço dos modelos é muito importante a gente entender quais ferramentas podem ser usadas quando elas devem ser usadas e dar um pouquinho de fundamento não é um vídeo longo um vídeo rápido então convido vocês a Acompanhar até o final para ver se faz sentido para vocês usar uma ferramenta outra Beleza então
logo após a vinheta Então vamos lá pessoal eh primeiro eu vou pedir para vocês aí se vocês gostam de conteúdo como esse por favor deixe o comentário que eu tenho tentado trazer conteúdo tanto do lado mais técnico do lado conceitual e do lado de aplicações tá esse aqui é um conceitual para dar conceitos né de de ferramentas de coisas que a gente pode usar mas eu não sei se tá sendo interessante Às vezes eu não vejo as reações do pessoal então só para saber se continuo fazendo conteúdo desse tipo deixem por favor um comentário aí
se vocês gostaram do conteúdo sugestões aí de conteúdo pros próximos vídeos para que eu possa ir ajustando aí o conteúdo do canal Beleza então vamos lá então quando que eu tenho que usar a fine tunning rag ou prompt Engineering né antes de começar a falar desses três conselhos pessoal eu queria falar rapidinho e dá para fazer um vídeo inteiro sobre llms né sobre large language models mas eu queria trazer aqui alguns elementos super importantes que a gente precisa levar em consideração quando a gente vai pensar nesses três conceitos tá então o que que é um
large language Model muita gente pensa que é um cérebro né que tá pensando que tá mas na verdade basicamente ele é um modelo estatístico para prever a próxima palavra baseada no contexto das palavras anteriores então vocês devem ter escutado muito falar né tamanho do contexto a janela de contexto né justamente porque ele olhando para esse contexto ele vai meio que adivinhando né fazendo um modelo estatístico para prever a próxima palavra Isso quer dizer pessoal que ele não armazena conhecimento indiretamente ele vai armazenar o conhecimento mas ele não tem uma biblioteca de conhecimento onde ele vai
acessar então por isso que muitas vezes as pessoas falam que ele alucina né porque ele começa a pensar em uma palavra e na outra e na outra na outra e vai estatisticamente encontrando né Essas palavras que podem não não ser realidade porque às vezes a se sequência de palavras estatísticas não tem a ver com a verdade então ele não armazena conhecimento tá ele ele é um modelo estatístico então falando um exemplo aqui Imagine que eu tenho aqui a seguinte frase então eu coloco para ele aqui depois da chuva a rua ficou e ele vai pensar
na próxima palavra supondo que ele tem o contexto né inteiro aqui do depois da chua chuva Rua ficou porque se ele só tivesse por exemplo a a rua ficou seria um contexto agora depois da chuva a rua ficou é um contexto que ele pode virar aqui falar olha molhada então 80% de chance por exemplo né dessa palavra ser molhada tem aqui depois da rua a chuva ficou bonita pode ser também sei lá 60% tô colocando qualquer número aqui tá pessoal só para exemplificar como ele pensa ele poderia trazer aqui depois a rua ficou seca e
aí sei lá que 2% das vezes ele encontrou essa frase na internet porque vocês sabem que o llm ele é construído Com base no que tá na internet então alguém pode ter escrito isso depois da rua a chuva ficou seca e aí ele vai usar isso como base né para encontrar a próxima palavra Depois dessa sequência depois da rua a chuva ficou Beleza então só queria trazer essa visão porque a gente vai usar um pouco esse conceito quando a gente foi explicar aqui primeiro que conceito que eu queria falar é o prompt Engineering e o
que que é o prompt Engineering pessoal bom prompt Engineering é a engenharia de prompt né Eu como eu construo o meu prompt para Que ele traga uma resposta adequada a o que eu tô buscando tá então Eu dividi aqui em alguns elementos a gente pode dividir em de outra forma mas uma forma que eu gosto de olhar é dessa forma aqui tá pensando que o prompt engir ele tem um contexto básico tá um estilo e Tom regras né que eu quero que ele Siga um contexto dinâmico e um formato Então vamos falar de cada um
deles aqui qual que é o contexto básico de um exemplo que eu vou dar aqui tá você é um expert em arquitetura e respond erá as perguntas de maneira objetiva Então esse é o contexto que eu vou dando para ele aqui para ele e considerar depois eu vou pensar aqui no estilo e Tom eu vou falar olha utilize uma linguagem acessível e tenha sempre um tom de humor em suas respostas então eu tô dando para ele aqui um estilo né como que ele deve responder as perguntas aí eu vou falar em regras Não nunca responda
algo fora do contexto de arquitetura então se eu for lá e perguntar para ele Ah qual é a capital da França ele vai responder é não posso responder essa pergunta porque ela tá fora do contexto de arquitetura isso é importante pessoal num exemplo se eu tô criando aqui um robô que vai me responder por exemplo numa loja né de atendimento ao cliente eu quero que ele siga algumas regras então eu vou lá e dou contexto para ele e fala Olha nunca responda algo fora desse contexto x y z Beleza depois eu tenho o contexto dinâmico
então isso aqui seria que cada vez que eu vou fazer uma pergunta para esse Assistente ele vai por exemplo Ah qual é a área mínima recomendada para um quarto de casal e ele vai lá e vai responder baseado no contexto que ele tem beleza mas isso aqui seria o dinâmico a outra pergunta poderia ser lá sei lá quantos quartos eu tenho no numa casa então eu vou lá e dou um do contexto dinâmico para ele e o formato é se eu quero que ele responda por exemplo nesse caso responda sempre em formato texto com markdown
que é aquele formato que a gente usa para por exemplo readme dentro do github então poderia falar responda sempre em Jason né responda sempre em texto plano Então como que ele tem que responder isso aqui então isso aqui seria o contexto de prompt Engine Tá e agora o que que é pessoal próximo aqui rag né que a gente falou no vídeo anterior até dei o exemplo de reg vou deixar aqui no card um um link pro vídeo de uma aplicação prática que eu fiz aqui do reg mas o reg basicamente é retrieval augmented Generation que
que vem a ser o retrieval augment Generation ou seja gerar informação baseado em um conteúdo eu consegui acessar um conteúdo e eu consegui usar esse conteúdo para alimentar meu prompt né Para que eu consiga gerar uma informação mais acurada né com informações numa base técnica que eu quero que ele acesse tá que pode ser um conteúdo pessoal pode ser conteúdo técnico pode ser um monte de coisa então para eu gerar um hag pessoal eu tenho basicamente duas partes tá um é preparar os dados para eu gerar o hag e outra é como que eu recupero
esses dados então vou falar de cada um deles aqui no passo a passo primeiro quando a gente pensa na preparação dos dados pessoal a gente tem o conteúdo tá depois eu tenho segmentação ou segmentar depois eu tenho a geração dos embeddings e por último eu tenho armazenamento disso vamos falar um pouquinho no detalhe aqui de que que representa cada uma dessas partes aqui bom o conteúdo que que é eu vou pegar arquivos ou por exemplo sites ou por exemplo textos uma série de coisas que eu posso usar aqui para ser como conteúdo para ele falar
assim Olha isso aqui é a minha base de dados que eu quero acessar para usar né para alimentar a minha llm Beleza então esse é o conteúdo só que esse conteúdo pode ser gigante né pessoal então eu preciso segmentar ele eu preciso quebrar ele em pedaços que eu existem diferentes técnicas de segmentação né que eu posso segmentar por exemplo por por número de caracteres eu posso segmentar por parágrafos eu posso segmentar por semântica Então existe uma diferentes maneiras de segmentação isso é super importante porque Dependendo da forma como o segmento se eu segmentar mal eu
posso deixar uma informação dentro de um lugar eh uma parte de informação numa num pedaço né E outra parte de informação no outro pedaço isso atrapalhar a geração de uma informação de qualidade então a segmentação é um passo bem importante na geração do meu rag tá depois eu tenho a parte de geração do embedding a geração de embedding pessoal eu tenho um vídeo também falando sobre embed vou deixar aqui um um card aqui no no vídeo a respeito disso que é eu consegui vetorizar ou seja existem diferentes dimensões né Por exemplo modelos da da openi
tem aí mais de 1000 eh dimensões eu vou lá e vou colocar nesse espaço vetorial Essas frases que eu segmente aqui para que quando eu jogar uma pergunta ele procure por similaridade essa frase dentro do contexto e vai me trazer os resultados que aí vem a ser o próximo eh passo aqui então eu venho aqui e armazeno todos esses dados aqui dentro de uma base de dados vetorial tá que no exemplo do do meu vídeo passado eu usei o chroma de B beleza armazenei os dados agora eu vou na parte de recuperação que ela contempla
né a parte de query que é a consulta que eu vou fazer eu Gero embedding dessa query tá bom e depois eu vou pesquisar os dados naquela minha base Então como é que funciona então por exemplo aqui eu venho aqui ó qual é a área mínima recomendada para um quarto de casal que que eu preciso fazer aqui gerar o embedding coner essa converter essa fase em em vetores naquele mesmo formato que a gente fez anteriormente a hora que eu armazenei na base então eu vou lá e dou um uma posição no espaço é multidimensional para
essa frase tá E aí por similaridade eu vou buscar nessa base fal Quais são as frases né que aí eu posso escolher um número de frases sei lá três 4 duas uma e traga essa informação baseada na similaridade a partir do momento que eu fiz isso pessoal eu consigo pegar esses dados e adicionar o meu prompt para complementar a pergunta para que ele possa com base nesse contexto responder a pergunta eh que eu tô querendo fazer beleza só que né pessoal isso aqui é é uma coisa que já deu para perceber que não é simples
e para que ele seja de qualidade a gente poderia utilizar algumas técnicas mais avançadas tá então vou dar um exemplo de uma das técnicas que pode ser usada aqui tá uma uma forma isso aqui pode ser feito de diversas formas diferentes né mas eu vou trazer aqui um exemplo de uma forma de um rag mais avançado que traga uma informação de maior qualidade Então vamos supor aqui que eu tô fazendo a pergunta né gostaria de saber a largura mínima recomendada para um corredor essa pergunta ela tem muita coisa aqui que é Eh vamos dizer assim
Extra que eu não precisaria tentar buscar gostaria de saber aí ele pode usar esse gostaria de saber dentro de um contexto diferente em alguma outra frase então o que que seria uma frase que eu posso fazer eu posso pegar essa é frase e jogar dentro de um llm com um prompt para llm por exemplo Resuma a questão tal que é essa essa questão que a gente fez aqui essa aqui tá entre colchete aqui só uma variável tá só para para dar um exemplo aí o resultado poderia ser largura mínima de corredor Então essa largura mínima
de corredor já é muito mais resumida e ela tem um contexto exatamente do que eu tô querendo buscar ao invés de eu fazer para vetorizar por exemplo gostaria de saber a largura mínima recomendada para um corredor eu vou vetorizar somente largura mínima de corredor Aí eu pego e Gero um embedding desse largura mínima de corredor converto ela num vetor e pesquiso dados nessa base que eu tenho aí eu vou lá retorno por exemplo três quatro melhores resultados qual um outro passo que eu poderia adicionar aqui pessoal filtrar então usando novamente uma outra llm eu colocar
um prompt assim ó considerando a questão tal que é essa questão ali largura mínima de corredor e esses resultados listar os resultados que a gente acabou de obter no Passo anterior Liste quais partes do resultado são as mais coerentes para responder a questão então eu vou lá e filtro somente a parte mais interessante para essa questão porque como a gente fez ess segmentação pessoal imagina que na segmentação veio coisa junto que não é interessante né que pode ser coisas com textos aí extras né que não são direcionadas a essa pergunta porque pode ser imagina que
eu separei num bloco de frases que fala de largura mínima e que fala por exemplo de altura e não me interessa para essa pergunta então ele vai lá e gerar um resultado mais filtrado e aí eu vou lá e jogo para llm Por exemplo agora ó responda a pergunta tal largura mínima de corredor que é aquela pergunta que a gente fez com o seguinte contexto que já iril and os resultados com base no resultado que a gente obteve da llm E aí pessoal poderia fazer mais um passo né Por exemplo de depois que eu tenho
a resposta da llm fazer uma verificação de qualidade colocar mais um promp para llm por exemplo avalie a seguinte resposta aí a resposta que eu obtive aqui e verifique se ela está apropriada caso contrário Gere novamente então eu poderia usar isso aqui como se fosse uma ferramenta de verificação para que eu olhasse para isso e falasse não faz sentido ou não faz sentido essa resposta se não faz sentido volte Gere novamente para que o output ou a resposta né seja uma resposta de qualidade focada no que eu preciso então isso aqui é uma forma de
fazer o rag ao invés de simplesmente jogar lá gostaria de saber a lura mínima de corred por um corredor e e trazer as respostas eu poderia fazer essa filtragem né esse processo um pouco mais refinado mais avançado para melhorar a qualidade das respostas beleza bom e agora qual é o último que a gente não falou ainda o fine tuning né fine tuning é um já uma um conceito um pouco mais avançado né mas que tem alguns mitos aí que eu vou falar também mas ele serve pessoal para ajustar alguns exemplos né ele serve para bastante
coisa mas ele serve por exemplo para ajustar estilo ajustar a forma como o lnm se comporta né Se vocês pegarem por exemplo o llm como como base né o llm ele é simplesmente vamos dizer assim retorna as palavras próximas palavras então se você não tivesse um fine tun por exemplo para transformar ele num Assistente como é o chat GPT se você for na por exemplo no gpt2 ou no gpt3 e pegar a base não o chat né do GPT vocês vão ver que eles ele não gera Respostas como se eu tivesse fazendo uma pergunta e
resposta ele simplesmente vai completando as palavras que é o comp né ele vai completando completando completando então ele não traz uma palavra então eles fizeram o quê um fine tuning transformando esse modelo num assistente então isso já é um fine tuning agora eu poderia fazer um fine tuning adicional para ajustar alguns estilos por exemplo para ele responder de uma forma específica para filtrar por exemplo questões de segurança então poderia ajustar estilos dentro de um modelo já existente então ele também consegue fazer com que os modelos menores executem tarefas especializadas né e qual que é a
vantagem disso pessoal a vantagem é que eu poderia por exemplo usar um modelo mais avançado para para preparar conteúdo para um modelo menos avançado e esses modelos menos avançados além deles serem mais rápidos na execução eles são mais baratos então eu poderia por ex por exemplo usar um chat GPT 4 para preparar conteúdo para depois eu jogar dentro no chat gpt3 3,5 por exemplo para que ele gerasse as respostas melhores e com custo menor tá então até posso fazer um depois um vídeo falando sobre isso né dependendo da da demanda aí do pessoal para que
traga por exemplo esses exemplos de como eu posso fazer isso E aí eu também posso ajustar né o conteúdo o resultado né em temas difíceis de traduzir em prompt porque eu poderia falar não por que que eu não faço no prompt mas mas imagina o tamanho tamanho de um prompt se eu quiser ajustar por exemplo um estilo de escrever né um estilo de escrever baseado em exemplos então eu posso fazer isso com o fine tuning E se eu quiser fazer com o prompt é muito complicado é muito longo Eu posso também ter um custo maior
de ficar jogando todas esses tokens né todas essas palavras no na llm para que ele possa responder da forma como eu quero Beleza então agora falando um pouquinho sobre os mitos do fine tuning né Eh muita gente escuta do fine tuning E aí primeiro falá é muito caro de fazer fine tuning obviamente que se você for fazer um fine tuning como foi feito por exemplo no GPT 3 para um chat GPT é muito caro porque eu tô falando em uma um fine tuning muito robusto né mas ajustar um modelo pequeno pode custar pessoal dólares sei
lá ó 2 10 Então não é tão caro dependendo da aplicação faz sentido porque você ganha no longo prazo Tá então não é muito caro fazer o fine tuning são necessários muitos dados ah Preciso De Milhões de exemplos não existem casos pessoal que ser com 20 casos 30 casos 100 casos por exemplo 100 exemplos eu consigo melhorar um modelo né adequar um modelo a uma aplicação que eu queira usando esses contextos menores assim então não é necessar muitos dados para bons resultados para eu fazer um fine tuning outra outro mito pessoal é Ah vou ensinar
conteúdo llm Olha como eu falei no começo por isso que eu quis trazer no comecinho né o llm não não armazena conteúdo e o fine tuning pessoal não vai ensinar nenhum conteúdo llm ele vai ajustar alguns parâmetros Então e o llm ele ele tem pesos né dentro da rede neural dele ele vai ajustar um pouco esses pesos mas ele não vai trazer conteúdo adicional a fine Tuning para isso pessoal a gente precisa usar o rag que é aquele conceito que eu acabei de explicar anteriormente Então eu preciso trazer conteúdo não é com fine tuning que
eu vou conseguir ele vai eu vou conseguir ele com o rec beleza é muito complicado não é muito fácil não é extremamente fácil pessoal Existem algumas ferramentas aí que dá para fazer de uma forma mais simples que depois até posso um dia trazer para vocês mas ele não é muito complicado ele ele já deixou de ser uma coisa impossível né não é só para cientistas da Open ai dá para fazer utilizando algumas ferramentas aí que já estão mais acessíveis a pessoas com conhecimento obviamente mas que não é uma coisa extremamente complicada tá E outro que
ele é um substituto ao reg na verdade não é como eu acabei de explicar o reg tem um propósito de trazer conteúdo e o fine tuning Ele tem muito mais um um objetivo de ajustar né o modelo para que ele se comporte de uma maneira um pouco diferente do que ele vem no modelo Inicial falar um pouquinho agora pessoal o que que seria um exemplo de fine tuning né para para trazer isso para uma por uma coisa mais prática Então imagina que eu tenho aqui uma pergunta né E aí como o llm normalmente responde E
aí eu quero que ele responda de uma outra forma então eu vou lá e vou usar o f to por exemplo vamos supor que eu tenho uma pergunta aqui falando no exempo de arquitetura né Qual o tamanho de ideal de um quarto e aí o a resposta normal da llm seria quartos de solteiro devem medir ao menos 7 M qu tô colocando um exemplo qualquer tá pessoal não tô falando que isso é verdade mas vamos supor que eu tenho lá a minha base né meu que eu vou com o reg vou lá e consulto por
exemplo um livro de arquitetura que tem um monte de conteúdo e esse livro tem como base falando que o quarto solteiro tem 7 M qu por exemplo no mínimo tá E aí eu vou vou usar essa informação para responder gera uma resposta essa seria a resposta padrão agora vamos supor que eu quero que eles respondam dessa forma aqui ó maravilhosos e confortáveis quartos não podem ser menores do que 7 M qu então eu vou lá e dou um estilo diferente que eu às vezes não consigo dar no prompt e eu quero que ele responda por
exemplo vamos supor que ele pega uma base de como você responde e-mail né então vou lá e jogo essa base dentro do do do fine Tuning para que ele tenha o seu estilo e não uma um estilo padrão do llm um outro exemplo né quantos quartos deve ter uma casa para um casal com filho aí vem o llm olha olha naquela base nossa né Por exemplo de arquitetura e traz uma casa para um casal com filho deve ter ao menos dois quartos com um exemplo né E aí eu quero que ele responda assim Ah Para
que sua família tenha conforto e viva com alegria uma casa para um casal com um filho deve ter ao menos dois quartos então é um exemplo de vamos supor né que eu tô querendo que a minha llm responda dessa forma aqui né como na direita eu vou lá e e vários exemplos desses né Por exemplo sei lá 20 30 40 exemplos e aí eu faço fine Tuning para que a resposta venha dessa maneira aqui e não da forma como llm normalmente vem fazer o fine tuning pessoal tem vantagens e desvantagens né as vantagens são que
eu crio um modelo que vai se comportar de um jeito específico né para um determinado objetivo Mas ele também acaba às vezes ficando limitado a não responder bem a outros tipos de conteúdos ou de de aplicações tá Então eu preciso ter cuidado que às vezes eu vou precisar at então diferentes modelos para cada aplicação diferente que eu tenha caso seja necessário que esse estilo seja um estilo único né um estilo mais especializado beleza e agora pessoal trazendo aí para finalizar né quando a gente usar e diferenças eu vi um um exemplo bem interessante né e
num num outro vídeo falando de como combinar as técnicas de fine tuning e eu vou trazer aqui para você né como fazer uma combinar as técnicas de fine tuning prompt Engineering e reg então quando eu penso no prompt Engineering pessoal eu tô falando de um de um conceito fácil de trabalhar que basicamente é na hora que eu for fazer a consulta né llm eu coloco um texto né daquela forma um exemplo que eu dei no começo do vídeo é fácil de fazer iterações Ou seja eu vou lá e e mudo né eu vou mudar Ah
eu quero fazer isso aqui diferente só mudo o prompt e eu já tenho na hora uma resposta né e ele é intuitivo ou seja ele é muito que a gente pensa né da forma como eu tô querendo fazer a pergunta se a resposta não veio eu vou lá ajusto a pergunta eu consigo intuitivamente ajustar ele o reg né pessoal então o reg eu tenho a vantagem de ter um conteúdo atual um conteúdo especializado né um conteúdo que seja exatamente o que eu quero que ele responda então eu trago o conteúdo ele serve de alimentação pro
prompt Ou seja eu alimento prompt com o que eu obtive do reg tá E ele basicamente é uma base de dados externos posso usar base de dados externas e essa base de dados externa vai servir como vou falar que o pessoal chama de in né eu vou injetar isso aí dentro do meu prompt para que a resposta da llm seja baseado nisso e quando eu combino rag com o prompt Engineering eu tenho uma limitação né que ele é limitado a janela de contexto ou seja minha resposta né vai ser baseada nessa janela de contexto que
eu tenho então se eu tenho às vezes uma coisa muito grande eu posso estar limitado a isso ten algumas dificuldades de executar e o fine tuning pessoal ele ajusta né o estilo uma das coisas que ele pode trazer é ajustar o estilo comportamento do modelo para necessidades específicas né para para ações específicas que eu tenho e hora que eu combino ele com prompt Engineering pessoal eu vou direcionar o comportamento dele ou seja eu consigo direcionar o comportamento ajustando ele para que ele consiga obter o resultado que eu queira e a hora que eu combino fine
tun com rag eu combino esse conteúdo com o comportamento Ou seja eu trago um conteúdo do meu reg né do do da minha base de dados que eu tô querendo usar para dentro do F tuning com aquele estilo especial que eu trouxe então eu consigo fazer e essa combinação do conteúdo com comportamento e usando as três ferramentas pessoal é como eu consigo dependendo da aplicação atingir melhores resultados então muita gente pergunta ah é reg é fine tun na verdade pessoal eu posso usar os três dependendo da aplicação não faz sentido usar o fan tun dependendo
da aplicação não faz sentido usar o rag Mas dependendo da aplicação pode fazer sentido usar os três E aí os três se complementam e consegue tr fazer uma uma um resultado melhor e mais apropriado pro tipo de aplicação que eu quero desenvolver Beleza então Pessoal espero que esse vídeo tenha ajudado aí a vocês a entenderem as diferenças entre os três entender quando que eu devo aplicar eles né quando que eu devo aplicar cada um deles ou eventualmente os três para que a gente consiga desenvolver aplicações melhores né e mais efetivas então se vocês aí ficar
até o final do vídeo pessoal Muito obrigado e não deixem de deixar o comentário sobre o que que vocês acharam do conteúdo se ele foi útil se ele trouxe informações aí que vão ajudar vocês a melhorarem e também não deixem de dar o like por favor assinar o canal que eu vou tentar soltar vídeos aí interessantes aí com relação a a conceitos aí de Inteligência Artificial nos próximos vídeos beleza Muito obrigado pessoal um abraço até o próximo vídeo n