Marlon Ferrari professor universitário engenheiro de dados vou falar sobre um assunto bem interessante hoje muito tempo atrás a gente tem falado sobre algoritmos de machine learning com o advento das llms a gente começou a falar sobre os modelos generativos depois eu bati um papo rápido sobre os vectors de BS e a capacidade de se armazenar informações de uma forma que se propicie o uso em modelos largos de linguagem em seguida a gente fechou com um projeto aonde a gente conectava documentos se perguntava coisas a partir da llm Será que existe uma área hoje que abarque
todos esses processos e a resposta é sim nós temos uma engenharia hoje toda voltada para necessidades que envolvam modelos largos de linguagem e processamento de novas informações a partir de documentos estruturados ou não estruturados essa área é o rag e esse é o assunto da aula de hoje inicialmente a gente vai bater um papinho sobre o teórico sobre o que que acontece por trás ali de como essa área funciona e no projeto que a gente vai desenvolver Nós vamos pegar um hag para questionar a GPT de uma forma bem mais eficiente convito todo mundo a
dar um joinha compartilhar para esse vídeo chegar para mais gente que tá interessada na área que quer aprender e deixar comentário à vontade prepara o headset a aula vai começar vamos começando Então pessoal pela parte teórica tá pra gente poder Ender o contexto o que que é o hag por que ele tem crescido justamente no momento em que a ia generativa Tem tomado aí conta até dos mecanismos de recuperação de dados vamos falar um pouquinho disso vamos imaginar então um cenário onde nós temos um documento ou um conjunto de documentos e a gente tem que
perguntar uma llm sobre esse documento para quem quiser entender um pouquinho desse mundo eu gravei um vídeo conectando o documento a LM Vou deixar na descrição para vocês poderem acompanhar E aí qual que é o gargalo disso pessoal mandar todos os documentos de uma empresa vai se tornar inviável ao longo do tempo tanto na parte financeira de custo mesmo Quanto na parte de limites os modelos de linguagem hoje possuem uma janela de limites que eles aceitam de tokens a quantidade máxima de tokens que eles aceitam então esse modelo hoje para grandes volumes de dados em
informações é inviável o que que nós podemos fazer até para criar mais valor em cima das informações que nós temos nos documentos é aqui que vem o hag retrieval augmented Generation pessoal o que que é isso simplesmente é a incorporação de novos dados aos modelos de linguagem diferente do fine tunning aonde a gente busca melhorar o ll M em si melhorar a forma com que ele compreende novas tarefas o hag é muito usado para entregar contexto dentro de uma gama de informações para llm ou seja o llm ele foi treinado em um momento que não
se tinha aquela informação como ele passa a entender dessa informação quando você entrega para ele por meio de um contexto Vasco da Gama é um time de futebol Vasco da Gama ganhou ontem o jogo Este é o por mais que ele saiba que que é um time com o contexto ele consegue entender muito mais facilmente as informações atuais Beleza então nesse ponto no sentido prático o hag é uma forma de você integrar os seus documentos para os modelos de linguagem modernos como gerar Então pessoal essa informação contextualizada para llm nós vamos seguir aqui numa arquitetura
num design de geração dessas informações a primeira coisa é o seguinte tudo que a llm entender como eu também expliquei no vídeo sobre o birt elas entendem vetores de palavras elas entendem vetores o que a gente chama hoje em dia de embeds e nesse ponto pessoal o processo de eding simplesmente é transformar palavras ou objetos em Passos vetoriais Isso muda o jogo porque a gente consegue finalmente perceber o Quão distante está cachorro de dog ou quão similar é gato de Cat isso permite traduções em outras línguas e permite dentro da própria língua saber palavras que
são similares rei está para a rainha na mesma distância que homem está para a mulher masculino para feminino Então os imgens são conjuntos poderosos de dados para poder fazer uma criação aumentada de dados Então nesse ponto a primeira coisa que a gente precisa é de transformar o que usuário digitar a consulta né o prompt que ele precisa e os documentos em edgings nesse ponto pessoal o nosso modelo já vai estar apto a ser integrado vai ser salvo persistido em uma tecnologia que hoje em dia está muito interessante chamado Vector DB são os bancos de dados
orientados a vetor eles são aptos a salvar quantidades massivas de dados armazenados sobre a forma de edgings e recuperá-las também de forma eficiente que é o que a gente vai fazer daqui a pouquinho então nesse ponto a gente pega os documentos com o prompt do usuário gera os embeds e joga em um vetor DB Qual é o próximo passo aqui que vem a receita mágica né que não é tão mágica assim porque a gente vai simplesmente encontrar dentro do que o usuário quer similaridades com os documentos disponíveis sob a forma de vetores Ou seja a
gente tá aplicando um algoritmo de distância que vai buscar em vez de todo o documento para llm os pedaços os trechos de informação que mais são similares para o que o usuário está querendo E aí nesse ponto nós temos uma junção do prompt do usuário com não todas as informações de todos os documentos mais os resultados similares o que a gente chama de contexto e nesse ponto a gente já pode possibilitar aqui uma entrega para llm contextualizada com que o usuário deseja e a osta dela vai ser muito mais afinada o exemplo mais legal que
a gente tem imagina que a gente abre um chat referente a uma entrega de produto na nossa casa que não chegou a llm sozinha não tem o contexto talvez de um chamado que já existia de uma nota fiscal que não foi emitida e quando a gente utiliza o hag ela tem essa capacidade de também Buscar nos documentos que são atrelados a esse procedimento nosso para poder responder da melhor forma possível então é algo que as empresas vão cair matando com certeza nos próximos anos porque isso aqui representa uma experiência do usuário muito mais incrementada uma
experiência do usuário superior galera o mais interessante é que o elastic que é uma mega comunidade aí trabalha exatamente neste campo de buscas em modelos não estruturados em informações não estrutur Olha que bacana então basicamente nós estaremos fazendo aqui na nossa aula de hoje uma visão elastic a gente vai est criando uma implementação do elastic à nossa maneira onde a gente vai pegar os documentos transformar em bedes representá-lo de forma de Vetor armazenar no Vector DB utilizar um algoritmo de similaridade com a query do usuário para que a gente traga os resultados mais relevantes tá
Então essa é a parte prática que a gente vai fazer hoje espero que vocês gostem tem muito mais para ver viu Pessoal esse é um campo muito grande de exploração mas é é possível que a gente dê um start para que vocês comecem a entender eh Campos e aplicações aí domínios que podem ser úteis a gente não se limita apenas a informações textuais a forma com que funciona o eding e o motor de recuperação orientado a vetores o Vector DB também permite imagens e que é muito utilizado no Google imagens no stock images como é
que funciona Imagina que nós tenhamos uma base de dados de flores com basicamente aqui várias flores e três tipos diferentes né a representação de cada uma dessas flores em vetor em eding São essas daqui certo isso vai para um motor de similaridade que a gente chama de vizinhos próximos vou falar um pouquinho melhor daqui a pouquinho e isso vai para o nosso Vector DB E olha que legal quando o usuário usa uma imagem dele para tentar procurar no banco de dados essa imagem vai ser codificada em eding vai ser indexada também no Vector DB no
caso do KNN a gente aplicaria aqui a distância do Cosseno por exemplo para saber quais que são os vetores mais próximos desse invariavelmente a gente vai perceber que a florzinha do meio que também um dente de leão está mais próxima com uma distância de 0.04 ou seja uma similaridade de 99% e alguma coisa certo quanto mais próxima de zero a distância maior a similaridade e vice-versa Então nesse caso a distância mais próxima das flores que nós temos no estoque do usuário é a do meio então isso serve para áudio serve para para imagem serve para
documentos não estruturados de outros tipos o que vai possibilitar pessoal o que eu falei também vou deixar aqui embaixo num vídeo sobre como o Vector DB tem representado uma mudança na engenharia de dados porque agora a gente consegue salvar os dados da empresa não estruturados estruturados de uma forma que você tenha uma recuperação inteligente de todo o contexto né imaginemos num num Call Center aonde que nós temos o com o cliente transcrito que entra em contato com o financeiro que entra em contato com a parte de serviço e tudo isso é integrado numa base que
consegue procurar a vida do cliente de uma forma holística isso é muito legal Nós temos muitas vantagens do hag primeiro questão de performance ele diminui a quantidade de dados que a gente envia aos llms em vez de ficar mandando terabytes de dados para uma GPT da vida performar o que seria inviável tanto em custo quanto em tempo a gente manda porções menores e mais orientadas à tarefa que tem que ser feita isso permite também pessoal que sem o fine tunning sem a otimização do modelo inteiro de linguagem a gente adicione novas informações Por exemplo algo
que aconteceu ontem e isso PR as empresas é o time ideal o time ideal para as empresas é aconteceu uma cobrança indevida do cliente hoje ou ontem a gente vai adicionar isso aqui para que o chat fique contextualizado com essa nova informação Então isso é um hag que a gente faz dentro da central de atendimento ali do software de atendimento do cliente o mais legal também é que a gente tem uma contextualização do usuário para aquilo que também é gerado em documento conforme eu falei ele passa a entender de uma forma geral aquilo que se
produziu de dados tanto em texto quanto em vídeo quanto em pdfs em Ilhas isso é bem abrangente aqui no quadro eu até mostro como que permite uma busca muito mais Ampla do que a baseada em keywords né em palavras chaves então a keyword ela é limitada exatamente na palavra enquanto a busca semântica que é todo o nosso objetivo agora nessa parte mais prática é implementar um motor um pipeline que quando o usuário quer ir a buscar alguma coisa ele seja muito mais abrangente do que apenas um ou dois pontos de identidade ali com a palavra
E aí pessoal no lado da Transparência os hags são muito bons porque eles utilizam dados explícitos dados que T maior controle organizacional de governança de dados de dados sensíveis diferente dos modelos de linguagem que a gente lembra que eles são treinados com volumes massivos de dados que muitas vezes a origem é de fcil identificação Então os hags também trazem uma transparência pra gente saber qual dado está sendo usado para alimentar esse motor pessoal nosso projeto então vamos aqui começar um projetinho para vocês verem como funciona com toda a teoria também atrelada a ele que tem
a ver com um assessor jurídico que queira pesquisar similaridades de alguns conceitos que ele esteja talvez trabalhando no seu dia a dia com a Constituição Federal Então imagina lá que eu estou escrevendo aqui Uma Peça jurídica sobre os direitos do trabalhador eu quero saber ali um respaldo que tem na Constituição para que eu utilize isso na minha peça Como eu faço esse é o pipeline aonde a gente vai gerar os edgings utilizar um Vector DB para calcular a similaridade do que existe de informações disponíveis no nosso texto base e o que ele quer na query
no prompt e a gente vai retornar para ele os top k resultados ou seja os n vizinhos mais próximos mais relevantes pro que ele precisa focado na query dele o texto base pessoal que a gente vai utilizar Vem de um link muito interessante de um projeto muito legal aonde houve uma estruturação da Constituição em um inicialmente em um modelo formatado de markdown o que pra gente vai ser um ganho porque a a constituição como a gente sabe ela tem uma uma organização muito complexa como a gente vê na imagem ali título artigo inciso Alina parágrafo
exiso Alina então é algo que quando a gente precisa de uma recuperação mais eficiente esse tipo de projeto constitui um grande ganho né as informações elas quanto mais qualidade nas informações melhor se torna a experiência de quem utiliza um motor Largo de linguagem coloco aqui o link para que vocês Visit achei muito legal parabéns aí aos criadores e a grande vantagem é que nós da área de TI também Encontramos uma constituição versionada em Git com todas as emendas com todas as alterações que ela sofreu ao longo dos anos isso Ficou bem legal também na proposta
do abj constituição parte prática Então pessoal mini projeto haag a primeira coisa a gente tem que se preocupar é com o algoritmo de vizinhos próximos utilizado para quem ainda não conhece o algoritmo de vizinhos próximos como ele calcula a distância eu vou deixar esse vídeo aqui também do meu canal que explica direitinho ali como que a gente pode fazer um cálculo de similaridade uma recomendação utilizando KNN porém existem algoritmos que são mais lentos que dada a necessidade de uma recuperação rápida uma inferência rápida a gente pode ser pode causar um um colapso do nosso modelo
justamente pela quantidade de dados para resolver esse ponto Pessoal esse projetinho aqui é muito legal mrpt ele é um vizinho próximo com um modelo muito mais otimizado escrito em c+ mais para que a gente faça essa inferência de uma forma mais rápida é a primeira coisa que a gente vai fazer porque no momento que a gente der um search a gente quer um search bem otimizado para diminuir a latência da recupera de informações Beleza então vamos instalar aqui próximo passo conforme a gente viu precisaremos de um Vector DB o mais simples de todos pessoal é
o Vector DB do Python que é uma Instância de banco de dados orientada a vetor onde você pode fazer vários testes inclusive ele sobe um servidor e eu recomendo fortemente que a gente utilize ele para testes para entender o funcionamento de um Vector DB temos outras Soluções muito mais escaláveis o próprio elastic search é gigantesco e a gente pode partir assim que a gente tiver uma boa base de como funcionam os vectors DBS então aqui já instalamos próximo passo pessoal não podia faltar L chank que é um Framework de llm moderno onde a gente consegue
orquestrar tarefas orientadas a toda essa ideia de a generativa hags e é uma ferramenta open source então também vamos instalar aqui aqui porque vai fazer parte do nosso pipeline próximo passo vamos pegar o nosso documento base que é a constituição lá do site do [Música] abjure uma request muito simples aonde a gente dá um get lá no markdown pegando o texto o conteúdo de texto da requisição nesse ponto nós já temos ela reparem aqui as formatações do markdown Isso aqui vai ser fundamental para que a gente quebre em capítulos E falando em quebra é o
que a gente vai falar agora por que que a gente tem que quebrar o texto pessoal isso é uma fase chamada text splitting toda fase que envolve o hag vai envolver você pegar um documento inteiro e quebrar em blocos menores o que a gente chama de splitting esse split é fundamental primeiro para você paralelizar as camadas de recuperação e salvamento dos seus dados também da parte de eding e segundo que você ganha performance porque você fica com pedaços que podem ser ligados a outros pedaços Independentes do documento né então isso é bem legal e é
uma fase como vocês podem ver aqui eu recomendo muito a leitura desse artigo aqui porque ele é bem ele dá uma visão bem bacana de como funciona utilizar por exemplo leng chain para Responder questões em cima dos seus conteúdos aqui pessoal para fazer um splitting a gente tem um modo que eu chamaria de raiz que é o reex Ora se eu sei que eu preciso de quebrar o meu texto idealmente em capítulos no caso da Constituição isso funciona muito bem que nós temos aqui um Capítulo dos princípios fundamentais aí depois temos outros capítulos Isso facilita
com que a gente Recupere a informação contextualizada pelo capítulo que a gente tá lendo tá Então nesse ponto a gente poderia fazer uma reex Como eu vou mostrar para vocês aqui aonde nós poderíamos entender onde começa um capítulo tá Quem entende de reex aí sabe que aqui eu estou pegando tudo que vem depois destes dois tralhas tralhas aqui né Beleza Isso significa que eu vou aplicar esse padrão pro meu texto inteiro utilizando todas as linhas dele então já é um reex aqui objetivando-se o multiline e para dar um trink melhor eu vou tirar os Passos
vazios que ocorrem nos finais desses elementos da lista e obviamente removendo a primeira sessão porque a primeira sessão é o preâmbulo ali é algo que não está relacionado diretamente à produção de conteúdo Claro que pode manter tá pessoal aqui é só uma otimização que eu estou fazendo para não pegar dali para cima Depende muito do projeto Como funciona essa parte aqui eu optei por tirar esse eu chamaria de modo raiz tá pessoal então Então se a gente vier aqui e olhar o que que é a sections E aí não vou pegar todas não vou pegar
só duas aqui pra gente ver ó reparem que ele pegou aqui do título e conseguiu pegar o elemento subsequente tá então aqui é uma forma bem bacana que eu já sei qual que é a posição do título que eu poderia formatar depois e a posição do conteúdo do texto representando aquele título Beleza então isso aqui funcionaria porém o que eu chamo de modo integrado pessoal é a gente já que o Lang chain ele é um padrão hoje e muito eficiente para que a gente desenvolva hags Por que não utilizá-lo para esse processo né e aqui
eu dou um exemplo a partir da documentação dele que nós temos várias formas de text splitting então ele já tem por exemplo e é o que a gente vai utilizar um text Splitter para markdown E aí comparando com o que a gente fez em reex não muda muito na lógica até porque ele utiliza também reex por baixo dos panos mas olha que interessante como fica bem alto nível para que a gente entenda o que tem que ser feito eu tô puxando aqui o text Splitter do markdown e eu estou dizendo que o padrão dos Capítulos
semelhante ao padrão do capítulo do reex é o tralha tralha e eu vou representá-lo como sendo um capítulo quando eu utilizo esta classe ela simplesmente vai pegar esse padrão e vai quebrar todo o meu texto bruto nesses capítulos então aqui mantive o mesmo nome sections só pra gente ver como fica sobrescreve a variável de cima Então vou pegar também dois elementos aqui e aí tem uma coisa interessante que um p diferente do reex que criou uma lista Ele criou um tipo de dado chamado document cujo objeto possui um atributo de page content e um atributo
também de metadata e essa pessoal é uma fase fundamental de todo rag o metadado ele traz a capacidade ele melhora a transparência do nosso modelo no ponto que a gente SA aonde que a gente está acessando aquele dado então se eu quiser saber qual é o conteúdo aqui utilizado eu eu venho no metadata dele e percebo que ele veio lá dos princípios fundamentais título um ele veio do primeiro capítulo Beleza então isso aqui é fundamental até porque a gente vai precisar disso daqui a pouquinho e aqui vem uma teoria interessante pessoal a gente não injeta
obviamente as informações conforme a gente viu a gente precisa de fazer o eding dela e uma pergunta é Qual é o tamanho do bloco para que a gente transforme em um vetor este tamanho de bloco na teoria dos vectores Deb chama-se Chunk size é o tamanho de bloco que eu tenho disponível para armazenar para encaixotar uma informação Beleza tem várias formas de fazer o encaix tá porém eu vou mostrar só pra gente entender a teoria o Chunk overlap é um outro parâmetro tá pessoal e ele diz respeito à sobreposição desses caracteres Ou seja você pode
gerar uma nova sequência com um pedacinho da anterior e isso é muito bom pra recuperação generativa pros modelos generativos porque é a partir dali que eles podem também produzir textos mais Contex ados vamos primeiro então fazer um teste em Como funciona o Chunk size overlap vim aqui e peguei do Tex Splitter do leng chain um outro algoritmo chamado recursive ou seja ele pega caractere por caractere recursivamente e divide o nosso dataset E aí eu posso dizer qual é o tamanho desse Chunk size 20 caracteres com um overlap de três ou seja três caracteres ele vai
pegar do ele pode pegar do anterior para poder gerar a nossa próxima sentença beleza e aqui eu vou dar um texto para ele até um texto da própria constituição aqui agora eu vou vir aqui e vou fazer a minha divisão meu splitting nessa quantidade de chunks e nesse overlap tá aqui eu tô chamando os parâmetros o próximo passo Então é eu aplicar esse Splitter em cima do meu text aqui que a minha frase e percorrer os chunks para eu saber como ele gerou vamos fazer isso e aqui tá o código inteiro então reparem que ele
vai quebrar em um Chunk size de 20 tá E ele pode utilizar o overlap e sim ele utilizou Olha o do está se repetindo é isso aqui que a gente chama de janela deslizante que eu vou falar daqui a pouquinho é como se Em vez dele quebrar a sentença secas sem contexto ele pegasse um pouquinho da anterior para que até um modelo generativo pudesse se encaixar ali no meio Beleza então essa mesma lógica pessoal vai se aplicar ao nosso conjunto de dados nossas informações só pra gente não impactar o código como um todo agora vem
a parte pessoal que é bem importante quando a gente sobe uma Instância do Vector DB e ela pode ser persisti ou ou pode ser em memória tá sem entrar muito em detalhes porque realmente a arquitetura é interessante e caberia um vídeo a parte mas do Vector DB a parte da memória significa que eu quero puxar no tempo de execução uma consulta que o usuário quer fazer como se tivesse aí imaginemos um chat onde o assessor jurídico tá querendo saber algo relacionado a por exemplo direito trabalhista então eu vou criar aqui na memória que é a
forma mais rápida uma variável do tipo memória e e Olha que bacana pessoal obviamente a gente sabe que os modelos de Vector DB precisa de um tamanho de chunking e é aqui que a gente fala o tamanho dele 128 caracteres com overlap com a janela de oito caracteres para ser utilizado na próxima instrução no próximo Chunk e Olha que bacana O slide Window é a teoria que move a criação dos chunks utilizando um pedacinho do anterior ou exatamente como uma janela deslizando o que vai ser feito nesse ponto é a partir de documento eu vou
fazer o split o split vai virar embed esse embed vai ser salvo em memória importante dizer na nossa Vector Store e aí sim quando acontecer uma query eu vou buscar aqui dentro Quais são os mais similares ao que o usuário tá querendo para que a gente faça o carregamento a indexação igual no exemplo das imagens lá que eu mostrei no nosso Vector DB eu preciso inicialmente percorrer cada uma das sessões e aqui pessoal tem uma coisa interessante Porque como pré-requisito para o salvamento do Vector DB ele pede o texto o conteúdo em palavra e o
metadado associado Olha que bacana para você saber da onde a informação tá saindo e nesse ponto vocês vão lembrar que dentro da minha lista de eu tenho aqui o page content que é o texto e o metadata que é o que ele tá pedindo lá viram por que é importante no reex isso aqui seria um pouquinho mais difícil porque a gente teria que agora percorrer o vetor novamente e transformar cada metadata que é a posição zero lá retornada e a posição um sendo o texto o l Change já fez isso pra gente então aqui basta
que eu aponte que o capítulo se encontra na sessions na posição do índice que eu tô percorrendo ponto metadata que é o atributo que está salvo do tipo do objeto document como tá lá em cima e o meu texto é chamado de page content conforme a gente viu também armazenado Beleza agora eu estou criando o metadata aqui a origem pessoal aqui eu coloquei fixo tá mas poderia ser por exemplo o nome do arquivo que eu estou gerando isso aqui poderia ser programático beleza e aqui ocorre o salvamento texto conteúdo textual e o metadado que é
a origem desse cara essa parte pessoal é a que mais vai tomar tempo da gente por quê Porque a Constituição ela não é pequena né e a gente tá utilizando uma forma não paralelizado Ou seja sequencial de salvamento Então vou colocar para rodar aqui quando terminar eu volto só um detalhe importante né porque a gente tem que importar primeiro o módulo e ativar o nosso banco de dados conforme a gente tá fazendo aqui olha que interessante ele está instalando as bibliotecas para que a gente faça o eding tá de novo quem quiser entender um pouquinho
mais sobre o que que é edging eu vou deixar o link na descrição do modelo que a gente fez birt que faz Exatamente tudo isso e aqui uma vez que ele foi instanciado repara que ele utilizou uma forma modelo de eding chamado normal não vou entrar muito nesse assunto pessoal porque a forma de eding também tem as suas qualidades tem as suas vantagens e desvantagens e nesse ponto ele vai demorar um pouquinho justamente pela quantidade de dados que nós temos disponíveis no documento frente a um processo que a gente não paralelizar de um por um
vamos testar busca semântica nesse ponto tem uma teoria Zinha interessante pessoal porque agora o usuário vai digitar um pedaço de texto que vai virar um edging e que vai ser procurado vai ser buscado nas proximidades da onde este vetor se encontra porque o barato do eding é que é uma posição em um espaço n Dimensional aonde a gente consegue fazer buscas nesse espaço e o KNN é perfeito para isso E aí nesse ponto ele só vai pegar ele só vai se aproximar dos top n que a gente definir E aí é esses top n serão
recuperados como sendo similares a esta busca Bacana Então aqui simplesmente a gente vai chamar um memory que é o nome da nossa Instância do banco search que é o método Olha que interessante que vai utilizar aquele KNN mais otimizado lá de cima aqui eu vou procurar sobre direito dos trabalhadores aqui poderia ser uma pergunta tá pessoal e aqui é a quantidade de vizinhos próximos que eu vou resgatar eu quero os top CCO ou seja ele vai trazer os mais próximos dessa pergunta e Aqui nós temos o Chunk que corresponde àquela busca agora observando um pouquinho
da semântica Já que é uma busca semântica eu procurei sobre direito dos trabalhadores ele encontrou os direitos dos trabalhadores aqui no meio deste Chun relação de emprego protegida contra despedida arbitrária sem justa causa Olha que bacana tá totalmente no contexto né salário mínimo fixado em lei nacionalmente Unificado e aonde que eu encontrei esse Chun ele pertence ao capítulo 2 dos direitos e garantias fundamentais a distância a origem Constituição Federal a distança que eu tenho para a minha busca PR minha query pro meu prompt é 0.4 quanto mais próximo de zero mais similar perfeito então sim
tá muito próximo do que eu estou procurando um outro vizinho aqui é direito dos trabalhadores e ele acrescentou que é com deficiência e também está dentro da semântica toda da busca aqui também se encontra no título dois direitos garantias fundamentais mais para baixo aqui ó a gente tem até por exemplo dos direitos dos trabalhos de pesquisa ou de Lavra que não são iniciadas nos processos legais o que também acaba sendo uma ideia de direitos do trabalho talvez aqui não seja diretamente ligado a algo do trabalhador né algo que tem que ser penerado aqui pela pessoa
né no ajuste ali visual que ela vai fazer coisas que alteraria para melhor ou para pior esta busca é aqui que eu vou dar uma explicação Zinha um pouco mais Ampla Olha que interessante a quantidade de chunks tem que ser muito bem pensada que é esse Windows size aqui por qu dado que a constituição é um texto bem dirigido se é que assim eu não sei o o jurid queis né mas é um texto bem normativo bem direto e nesse ponto uma janela muito grande criaria problemas de misturar assuntos e uma janela muito pequena não
pegaria o contexto daquele parágrafo então é importante testar esse parâmetro para que a gente saiba se se a quantidade de caracteres sendo usados está de acordo com aquilo que a gente pretende entender do documento outra coisa que impacta também é o overlap se você pega pouco você pode não ter uma conexão de um mesmo parágrafo quando eu pesquisar por outro lado se você coloca muito Você vem muito prolixo quando você digita direito porque toda a constituição fala de direito então vai vir muito Chunk né similar esses dois parâmetros é o que compreendem aqui a engenharia
do nosso modelo temos outros modos também por exemplo pegar o parágrafo inteiro que talvez não seja muito legal nesse caso Porque conforme eu falei né Cada a Línea ali da constituição tem uma diretiva e eu não acho legal utilizar porém determinados projetos vão pedir ali uma estratégia diferente tá é um campo bacana de estudo para quem quiser testar eu quis manter esse pipeline bem enxuto para dar várias ideias e o G da coisa só também salientando a parte do llm da Open da hug Face pode entrar em qualquer parte do nosso hug tanto na entrada
do usuário enriquecendo isso daqui para melhorar a busca que nós pudéssemos fazer dentro da nossa base de dados E aí traria um contexto muito maior para depois também ser alimentado realimentado para por exemplo trazer mais contexto ainda enfim só umas outras possibilidades pra gente poder explorar porque a llm pode estar conect todo o tempo no nosso RG pessoal era isso muito obrigado se gostou dá um joinha podem aguardar que com certeza vai vir mais conteúdo aí pra gente e compartilha aí se vocês puderem também que vai me ajudar para caramba valeu