para saber se tá tudo certinho com som com vídeo Bom dia tá tranquilo o áudio o vídeo Bom dia Bom dia pessoal todos aí se acomodando entrando na nossa Live da semana de dados pra gente falar ho de rag Isabela Machado disse aqui tudo tranquilo tudo certo então beleza pessoal meu nome é Hernani Braga Tá eu vou me apresentar daqui a pouquinho formalmente mas sou R data Science aqui na Big tecnologia e hoje eu vou apresentar para vocês o nosso tutorial Beleza deixa eu compartilhar aqui a tela com vocês Tá eu estou com duas telas
pessoal então vou deixar vocês aqui de ladinho então eu vou ver noos comentários aqui do lado Ok bem vamos começar então o nosso tutorial de hoje tá falando sobre hag tá hag significa retrieval aum Generation a gente vai ver em mais detalhes que que significa essa sigla como é que funciona tá e a gente vai conseguir ver como a gente vai conseguir revolucionar a inteligência artificial com dados instantâneos bem Primeiro me apresentando como eu disse a vocês meu nome é Hernani Braga eu sou Red de ia aqui na Big tecnologia sou engenheiro de sistemas formado
pela UFMG e também sou um engenheiro de Machine lante certificado pela Google também então um pouquinho sobre mim tá E como que vai funcionar hoje a nossa dinâmica pessoal eu vou apresentar um pouquinho para você sobre a Bix um pouquinho dos trabalhos que nós fazemos em seguida a gente vai começar o tutorial Tá eu vou primeiro apresentar para vocês uma parte mais teórica tá porque como são conceitos abstratos assim né mas já com coisas bem avançadas é legal a gente dar um passo para trás entender um pouquinho ali dos fundamentos e depois a gente vai
pro código e a gente finaliza aí também com a parte dos slides tá então aqui a ideia que é que vocês vej o passo a passo e a qualquer momento tiverem dúvidas perguntas eu tô vendo vocês aqui do meu ladinho então mandando ali eu vou conseguir ver o que vocês estão dizendo também pelo chat beleza vamos começar então né pessoal a BX tecnologia tá gente nosso nosso proposta é gerar Impacto positivo através de dados e tecnologia tá e e a gente consegue fazer isso né tendo aí eh quatro grandes áreas principais que a gente trabalha
e vocês conseguiram ver cada uma delas durante a semana de dados desse ano né então a gente trabalha aí com engenharia de dados Business inteligence Inteligência Artificial e ciência de dados e também desenvolvimento software tá cada uma dessas áreas tem suas especificidades né mas aqui na BX a gente faz soluções de ponta né pegando aí né eh do início ao fim da cadeia do dado pros nossos clientes e para isso a gente conta aí com todo esse time multidisciplinar trabalhando junto para poder entregar melhores soluções pros nossos clientes tá um pouquinho sobre nós também né
a gente aí é focado na solução de desafio com dados né para as empresas terem melhores resultados fomos fundados em 2014 e somos hoje referência em dados no Brasil atualmente estamos com mais de 80 membros né altamente qualificados e mais 18 certificações distintas e destaque no setor Então são certificações de cloud na Asia na WS na Google Cloud dat Bricks né Click sense Power bi então assim são diversas certificações aí que mostram o nosso valor aí de empresa e também mais do que isso a nossa história né com mais de 1000 projetos entregues também né
que é legal destacar né que a gente começou em Florianópolis né e já estamos no mundo então hoje nós temos histórias tanto no Brasil né quanto também nos Estados Unidos e nós somos aí também uma empresa Great Place To Work tá pessoal e temos aí né no review do clut né com a plataforma de reviews que empresa fazer o review do seu serviço né SOS altamente também bem avaliados tá então é bem legal trazer esse histórico aqui esse contexto para ver né um pouquinho de quem tá trazendo o conteúdo para vocês né e finalizando aqui
essa parte né Um pouquinho institucional eh falando um pouquinho dos nossos prêmios que nós ganhamos né esses são os de 2023 tá a gente ganhou aí no fomos top 10 Autotec no top 100 Open startups tá pessoal e também startup do ano aí pelo programa in vc da arom tal né esse slide aqui né do ano passada mas semana retrasada estamos de novo no top Open startups e ganhamos mais uma vez mais um prêmium né então isso aí Mostra aí a qualidade do serviço sendo reconhecido também pelo mercado e também somos empresa aí top review
também pelo clutch bacana bem gente terminando essa nossa parte aqui Inicial né Vamos começar a falar de fato do que que é rag do que que llm né E para isso eu quero dar um passo para vocês antes né um passo atrás e falar um pouquinho para vocês sobre o que que é l LM e tokenização tá tudo vai fazer sentido daqui a pouquinho então vamos começar e large l de Model ou então chamado de llm é uma classe de modelos de machine learning tá pessoal que são treinados em um grande grande grande volume de
dados textuais tá bom Um exemplo que a gente tem hoje desses slage modos é o chat GPT que a gente acaba utilizando aí no nosso dia a dia né poder fazer div as tarefas diversas atividades né então resume esse texto para mim me traz o resumo dessa reunião me ajuda a escrever um texto né olha esse código né esses modelos chamados de lar Lage modul Eles foram treinados em milhares né talvez até bilhões aí de textos né E eles são o qu pessoal Eles são muito bons em entender padrões de textos então para isso né
então con gente consegue o quê tanto entender quanto gerar textos então quando você faz uma pergunta pro chat APT dizendo por favor escreva para mim um e-mail dizendo assim assim assado ele já leu tantos e-mails dessa forma que ele consegue entender né Eh o que você quer dizer ali né O que que é importante dizer a gente tá falando de padrões em momento algum esses modelos de Inteligência Artificial T consciência tá pessoal então é muito muito importante dizer isso tá esses modelos eles não pensam eles não são apesar de chamar de Inteligência Artificial eles não
TM uma consciência tá então eles não pensam eles não de fato tem sentimentos nada disso eles são baseados em padrões que eles viram anteriormente e agora a gente consegue utilizar esses padrões que foram analisados estudados e estão num grande modelo matemático tá e legal Hernane legal esse llm usa o chat PT todo dia mas e aí Onde você quer chegar eu quero chegar no seguinte né Eh dá um passo atrás pra gente entender como é que essas llms conseguem entender palavras né Porque pensa só os computadores eles trabalham com na lógica binária Por que que
significa isso lógica zero ou um né então eles vão ter ali né impulsos ali né elétricos que vão dizer zero ou um né vão ter bits e bytes e vão ter essas representações binárias a partir desse zer e um você consegue apresentar números Número 1 número 2 número 3 número 10 20.000 né assim por diante né só o que que acontece como eles trabalham nessa lógica de 01 não tem como você simplesmente chegar no ouvido do seu computador e dizer assim por favor escreva um e-mail para mim não tem como né Eh eles têm que
entender a partir dessa lógica de máquina né E para isso o que que a gente faz né a gente faz um processo de transformar palavras né linguagem natural em números para então serem processados pelo computador para ele conseguir fazer cálculos e aí sim ele conseguir eh trabalhar e processar o que a gente quer que ele processe né e bem Como que funciona toda essa etapa de transformar eh textos em números pro computador entender é um processo que é chamado de embedding né e aqui eu trouxe pra gente aqui um exemplo né com essas palavras aqui
né pessoal elas estão aqui em inglês né chamado de Man Homem woman mulher né em inglês King rei e Queen rainha né aí a gente pergunta né como é que eu vou fazer o meu chat PT né como é que eu vou criar um chat APT como é que eu vou fazer o computador que um homem é um homem a mulher é uma mulher que isso é uma palavra e todo o significado por trás disso né para isso a gente vai criar uma coisa a gente chama de um vetor né não sei se vocês lembram
ali eh do ensino médio que a gente aprende vetores relação de Vetor um com o outro um vai para um lado outro vai pro outro né mas vetor pessoal não é nada mais nada menos que essas caixinhas de números né representando dimensões tá então por exemplo né no nosso caso do embed que que a gente vai ter a gente vai ter caixinhas tá de tamanho fixo nesse caso aqui eu vou ter ó uma posição Du 3 4 5 6 e s posições Ou seja eu estou representando esse meu conjunto de palavras com sete posições usando
números tudo certo até aí então a gente vai pegar uma caixinha de tamanho fixo e colocar valores nela para então representar minhas palavras dentro de cada uma dessas dimensões vão ter valores né mas só que esses valores não são arbitrários Ou seja eu tirei da minha cabeça que é 06 aqui nessa posição um não eh a gente tenta nessa nessa questão de eding fazer com que exista uma representação semântica alguma representação que faça sentido para cada uma dessas caixinhas e como que a gente vai conseguir fazer isso né as dimensões do vetor que antes estavam
aqui 1 2 3 etc né a gente vai representar ela como características semânticas das palavras né O que que isso quer dizer aqui tá em inglês mas eu vou ler para vocês tá então que ser vivo seria o que relaciona a dimensão um felino por exemplo um gatinho né seria o que representa essa dimensão dois um humano é o que representa essa dimensão três gênero O que representa essa dimensão quatro Realeza royalty seria o que representa a dimensão C um verbo a dimensão seis e um plural a dimensão sete que que isso quer dizer isso
quer dizer que quando eu tenho por exemplo eu analiso essa dimensão quatro essa daqui o que que eu vou ter Olha só eu vou ter 0.9 para homem né lembrando ess palavr significa homem eu vou ter - 07 para mulher né então aqui eu vou colocar um maizinho que é um valor positivo e aqui um negativo que é um valor negativo para Rei Eu tenho um valor positivo e paraa rainha Olha só menos 09 Eu tenho um valor negativo Vocês conseguem perceber uma coisa que olha só tanto homem quanto Rei estão na mesma direção porque
um vetor significa o qu uma direção então na direção positiva eu tenho o homem e na direção positiva eu tenho o rei e na direção contrária né eu vou ter mulher e rainha apontando pro outro lado Então olha só já existe o qu uma certa semelhança nessas direções que a gente tá pegando se a gente for fazer a mesma coisa aqui a gente já vê pro pra Realeza a gente já vê o contrário olha só Realeza para homem - 0.1 para mulher 0.1 ou seja valores muito próximos de zero e para rei e rainha eu
tenho valores positivos altos que que significa que rei e rainha apontam paraa mesma direção de Realeza né enquanto homem e mulher provavelmente são opostos ou não tem essa mesma direção tá E aí o legal aqui é que a gente consegue agora representar isso de uma maneira gráfica porque eu tenho minhas palavras né as que eu que eu escolhi eu tenho o meu valor fixo e eu tenho números que vão representar essas direções no vetor com isso a gente vai conseguir o quê mostrar aqui né que as palavras homem e mulher estão próximas entre si Olha
as palavras rei e rainha estão próximas entre si mas se eu pegar aqui e se eu for comparar a distância entre por exemplo mulher e rainha vamos dizer que aqui deu uma distância de cinco e a distância de mulher e de rei às vezes vai ser uma distância de por exemplo nove vocês não concordam comigo que esse aqui então tá mais próximo desse mulher tá mais próximo de rainha do que mulher tá mais próximo de de rei não é é com isso que a gente consegue ver o que a similaridade dos vetores né existe uma
operação matemática chamada similaridade cosseno tá que vai justamente entender o quão próximo né são esses ângulos que existem entre esses meus diferentes vetores né eh ah Ótima pergunta aqui do Felipe f porque King é o único que tem 07 no yuma todos são 08 eu fiquei curioso é porque Felipe né a gente for pegar aqui a per ó yuman aqui né olha só essa que a gente tá falando né só o King que tem 07 por quê Porque quando a gente pega o grande volume de dados paraa gente poder eh criar essas representações matemáticas vetoriais
acaba que a gente usa estatística nesse processo então não tem como ser exatamente preciso eh os valores sabe das dimensões porque por exemplo Vamos dar um exemplo de da palavra cela a palavra cela pode significar tanto cela de cadeia onde você fica preso quanto também pode ser a cela de cavalo certo então por conta dessa riqueza nas palavras que existem eh acaba que isso também Altera a forma de representação delas dos vetores Então nem sempre eu vou ter ter exatamente os valores por cima ser vivo igual em todos eu vou ter sempre uma probabilidade associada
né então por isso que o valor É é não é igual mas é muito próximo porque se eu comparo 07 com por exemplo Men 06 né olha a distância mas se eu comparo 07 com 08 a diferença entre eles é bem menor né então é por isso que às vezes é parecido Mas não é igual esses valores bacana Ótima pergunta f Muito obrigado eh e aí pessoal com até com do Felipe a gente consegue ver isso eh e isso vai ser muito importante pra gente no hag por quê no hag a gente vai entender o
que a gente tá querendo Buscar documentos similares e para poder fazer essa busca de coisas similares a gente utiliza esse esse eding né como a forma teórica de fazer isso né com uma forma de analisar se um tipo de conteúdo é mais próximo ou não que o outro né Por exemplo o que que eu quero dizer com isso né Eh vamos dizer que aqui a gente tá falando de um contexto de idade média né poxa Idade Média tem rei tem rainha tem príncipe tem cruzadas tem Guerra tem cavalaria tem todas essas esse Universo de palavras
mas se eu tiver por exemplo um documento né que eu quero encontrar que seja sobre ficção científica ele por exemplo vai estar aqui com palavras como sabre de luz nave espacial né então o que que acontece palavras similares um contexto similar vão est próximas digamos assim né nesse meu espaço vetorial e palavras que são distintas tem como texto distintos vão estar mais distantes umas das outras Legal vamos então continuar aqui pessoal então que que a gente viu até agora a gente viu ali né Um pouquinho sobre o que que é llm né que são esses
grandes modelos a gente entendeu o qu que para treinar esses grandes modelos e o computador entender o que a gente fala o que a gente escreve a gente precisa desso que chamo de eding ou seja palavras e um espaço vetorial matemático eu consigo fazer contas né conhas para ver se tá perto se tá longe se é parecido se não é né e agora a gente entra de fato no nosso aqui objetivo do tutorial que é do HG né então hug significa retrieval aed Generation que que significa retrieval vem de busca né então toda vez a
gente faz por exemplo um uma busca no Google né é um retrieval Então você procura lá restaurantes perto de mim ele vai te fazer uma busca e vai te retornar resultados então a gente tá falando num sistema de busca aqui n o Generation né É por a gente vai juntar o retorno dessas buscas com a capacidade da llm de entender textos de entender contextos né então é como a gente fizesse uma busca mais potente digamos assim né então vai ser uma técnica que vai combinar tanto essa recuperação de informação do retrieval quanto também né com
a geração de texto as llms tá a gente vai ter usar algumas Fontes externas para poder buscar as informações então ou um banco de dados ou então documentos tá E com isso essa técnica de haag consegue o qu aumentar a capacidade da llm né das redes neurais né do chat GPT de trazer para gente respostas mais relevantes precisas acuradas e contextualizadas bacana Então como é que funciona isso então no Auto Nível pra gente poder entender Eh vamos dizer que você tá lá né no seu chat ept né E aí você tem uma aplicação de rag
né então por exemplo assim você trabalha numa empresa vamos dizer aqui né você trabalha numa empresa de advocacia por exemplo né E aí você vai e pergunta assim né você já tem lá um tanto de documento tal já tá lá tudo na na sua infraestrutura você pergunta assim você tá com o caso e você pergunta assim Ah quem é o r Quem que é o autor e o que que aconteceu nesse acesso Isso é uma pergunta você acabou de fazer uma pergunta né aí com essa pergunta o que que vai acontecer por detrás dos panos
a gente vai perguntar assim ó eh qual que é o processo aqui né esse seu pedaço de texto vai passar por um eding ou seja esse seu texto vai virar o que a gente viu lá das caixinhas dos números 1 2 0 5 né vai virar aquele vetorzinho de números que a gente viu né ou seja peguei o texto linguagem natural transformei em algo matemático né em um vetor aqui passou por isso transformou nesse vetor e agora eu vou fazer né A minha busca de similaridade então eu tenho aqui um banco de dados vetorial que
eu vou ter diversos desses desses vetorzinho um para cá um para cá cá um para cá um para cá etc e aí vamos dizer que quando a sua pergunta passou aqui no nesse beding aqui ela virou esse vetor aqui né tá indo aqui para essa direção eu tenho essas quatro setinhas aqui qual será a setinha que é mais próxima da que a minha pergunta é vocês não concordam com que vai ser essa setinha esse vetor então então que que eu vou pegar eu vou pegar todas os os meus documentos que tem a ver com essa
direção desse vetorzinho dessa setinha então vou ter aqui esse meu vetorzinho né E aqui o que que eu vou ter eu vou ter o documento Ah aqui falando sobre o o caso falando mais um pouquinho sobre quem é o ré Quem é o autor vai ter as informações e aí eu vou passar um prompt para llm eu vou dizer assim olha me responda apenas baseado Nesse contexto de informação ou seja não é para buscar na internet não é para usar o que você usou para treinamento é para usar o quê o que eu tô te
trazendo da busca aí llm vai dizer assim OK ela vai estruturar esse texto para poder aqui depois te dar uma resposta aqui né estruturada no final né então vejam só a gente tem duas partes aqui né A primeira né da pergunta e eu achar resultados relevantes para minha pergunta ou seja o retrieval ou seja um sistema de busca e a segunda é eu pego esses resultados essas respostas e aí a partir disso eu vou e faço output eu faço a a resposta final dizendo bonitinho o que quer dizer a o que você procurou né então
Então pessoal é assim que funciona a a questão do H né Então como ele funciona né a gente vai ter que né os elementos dele primeiro um banco de dados vetorial depois a gente vai ter uma indexação de documentos a gente já V no detalhe o que que é isso porque não adianta só o ter o banco eu tenho que colocar os dados dentro do banco né eu vou ter a pergunta do usuário depois eu vou ter essa parte de embed né de tokenização e busca no banco eu vou ter o Retorno dos documentos e
por final a minha resposta final falei bastante mostrei teoria agora vamos pro código né Vamos mostrar como é que isso aí se integra então né pra gente poder fazer uma aplicação interessante deixa eu parar aqui eu vou mostrar a tela agora para vocês tá pessoal aqui gente é é o código já tá vai ser disponibilizado para vocês também tá e a O que que a gente tem aqui pessoal eu tô aqui no vs code tá eu tenho aqui alguns arquivos que vão fazer parte do do nosso tutorial eu tenho essa pasta P vnv que é
o qu né é o virtual environment que a gente vai rodar tudo que a gente tá fazendo o que que significa eu vou criar né meu meu computador aqui tem um Python instalado já né É como se eu criasse um Python isolado que não vai atrapalhar o que eu já tenho rodando tá E aí com isso né Isso tudo que eu vou rodar é o que tá dentro desse arquivo chamado requirements.txt Tá bom então aqui dentro vão ter todas as bibliotecas se você rodar um PIP install requirements vai instalar tudo que tá aqui eh José
Sodré fez uma pergunta aqui hernan em questão de custos como não gerar muitos custos com tokenização boa pergunta José eh tem opções eu vou mostrar aqui para vocês primeiro como funciona no código essa tokenização eu tô usando aqui o próprio modelo do chat GPT que a gente vai ver né da Open ai os modelos do GPT mas existem opções open source para poder fazer a tokenização então dependendo do banco de dados vetorial que você for utilizar você consegue customizar a tokenização tá então você consegue por exemplo na sua própria infraestrutura você sobe lá uma uma
uma máquina que vai ter seu modelo e você utiliza o seu próprio modelo open source né que você não vai est tendo que pagar e curso de Api para ninguém para fazer esse processamento obviamente existe o custo da infraestrutura para isso Mas dependendo da aplicação do volume né tem que fazer um estudo para poder entender se você ter uma máquina própria compensa mais do que usar uma ap de um terceiro bacana mas basicamente tem como só tem que estudar cada casa vamos lá então pessoal voltando aqui a gente aqui no nosso tutorial a gente vai
ter dois arquivos tá o cor PP o interface PP legal e aqui também a gente tem duas outras e pastas documents e logs tá aqui na pasta de documents né são os documentos que a gente vai indexar então vou mostrar aqui para vocês um pouquinho deles aqui né são documentos sobre a cultura da BX sobre aqui uma história que eu criei né sobre Wikipédia o que que na Wikipédia One Piece Então a gente vai aqui passar por isso também para poder rodar aqui a gente vai tá aqui Python interface ppy tá então vou dar aqui
meu enter né eu já tô aqui no V Meu virtual environment e aqui vai começar aqui essa nossa telinha aqui bonitinha dizendo aqui ó reg System eh usando aqui né L chain chrom DB é o banco de dados vetorial que eu estou usando tá pessoal e começando o hag né e aqui tem as opções Então quando vocês forem rodar vai aparecer isso né a opção é pra indexação de documentos a do é para chegar quantos documentos existem indexados o três é para poder deletar documentos na nosso banco de dados vetorial e o quarto para poder
começar o chat né então pra gente ver em que status nós estamos eu vou começar digitando dois tá olha só que a gente consegue ver tudo que tá rolando com os logs Então olha selecionou document count né carrega o banco de dados vetorial né vê as informações achou zero documentos então total de documentos zero né Então por quê Porque a gente não indexo nada a gente vai indexar E aí vai aparecer aqui agora então gente eu vou clicar no um né que que vai acontecer quando eu clicar aqui no um no index documents ele vai
dentro dessa pasta documents ele vai pegar todos os arquivos P TX que tem e vai criar o que a gente chama de Chun são pedaços de informação então vamos aqui então começar aqui apertar um que que a gente vai ver aqui ó usuário selecionou index documents vai carregar os documentos da pasta documentos carregou com sucesso sete documentos vai processar esses documentos aí virou chunks Olha só de sete documentos viraram 31 chunks E aí com isso né ele foi lá e adicionando a minha banco de dados vetorial né fez uma requisição aqui na Open ai em
beding né que é o e API de embeds né que o José sodr perguntou e api embeds que eu estou usando ou seja pegou textos transformou nos vetores e salvou no meu banco de dados então se eu vir aqui check Total Number of documents agora vai aparecer 31 né aqui na verdade são chunks não documentos mas eh na nomenclatura do chrom DB ele chama chunks de documentos tá bom então Ou seja já funcionou então vamos aqui gente deixa eu mostrar aqui minha tela inteira pra gente poder ver aqui então um pouquinho né então esses são
dos documentos que eu coloquei lá olha só eu tenho que esse que é cultura da Bix tecnologia retirado diretamente do site da Bix né um TXT né que fala sobre a nossa cultura outro Tex que eu tenho é sobre ern o Samurai sem tempo é uma história que eu criei usando chat PT para esse nosso tutorial né então de um samurai que passou por diversas eras né ele viaja no tempo e assim ou seja coisas completamente criadas um contexto Mega específico né outro que eu peguei é sobre llm na Wikipédia então a gente consegue ver
São relativamente grandes esses textos né um outro sobre One Piece que eu gosto bastante né então coloquei aqui também né coloquei o sobre rag então coloquei aqui esses sete documentos e aí aqui na nossa eh questão aqui de indexação O que que a gente vai ter né pessoal a gente vai ter os documentos tá no nosso caso aqui é TXT Tá mas numa aplicação poderia ser um PDF HTML né poderia ser qualquer tipo de documento a gente vai fazer a conversão para texto e aí dessa conversão para texto a gente vai ter o que a
gente chama de chunks texto O que que significa isso lembram que aqui nos vetores Eu tenho um tamanho fixo né aqui 2 1 0 etc Eu tenho um tamanho fixo né Então olha só eu tenho esse documento sobre os valores da Bix ele é pequenininho concordam comigo agora Olha só esse da história que eu criei ele é grande né vocês entendem que não tem como eu literalmente colocar o texto de uma vez dentro do desses me vetores sem eu antes fazer um pré-processamento disso não tem como então o que que a gente faz né a
gente vem aqui né vamos dizer que a gente tem o texto lá né então por exemplo aqui tem esse texto por exemplo da história ali que eu estou dizendo né E ela se eu colocar por exemplo um PDF ela vai dar tipo duas páginas a página dois e aqui a página um o que que acontece a gente vai delimitar de antemão qual que vai ser o tamanho do nosso Chunk do nosso pedaço então por exemplo Ah o meu pedaço vai ser esse tamanho tá então esse aqui é o meu pedaço a e eu tenho outra
configuração que eu posso colocar que é o overlap ou seja se esse meu tamanho aqui a tem tamanho de 1000 1000 tokens eu posso criar um um outro só que é o b aqui né esse aqui é o finalzinho do B E lá na hora que a gente ver lá no código tem um parâmetro que chama overlap que é o quê sobreposição ou seja pra gente poder ter uma uma continuidade da da linha de raciocínio Da Lógica né a gente costuma colocar esse parâmetro que vai fazer o quê né vai fazer uma sobreposição dasz duas
informações de forma que quando você tá lendo um livro se você D uma pescadinha der uma esquecida você não volta um pouquinho aqui a gente tá fazendo uma coisa bem parecida com isso então eu tô colocando partes de um Chunk no outro para que eu consiga ter uma continuidade da informação tá então esse aqui é o que a gente vai chamar de overlap que a gente vai ver lá então overlap aqui tá bom E aí né Gente eu já tenho esses embeds então cada um desses chunks né virou o nosso vetorzinho né que cada um
deles significa uma direção e aí a gente foi e colocou aqui dentro na nossa Vector Database que nesse nosso exemplo a gente tá usando o chroma DB legal deixa eu dar uma olhada aqui nas perguntas um pouquinho a gente voltar pro código Fábio Dantas Qual o melhor banco vetorial uso o Pine code há outro open source Fábio o chrom DB também é um eh open source tá tem também o lama index a questão do melhor banco vetorial não tem como dizer vai depender muito da sua aplicação vai depender dos seus recursos porque muitas dessas ferramentas
já por exemplo não te dão hospedagem Então você tem que ver nos tradeoffs vale a pena ter pegar um plano open source um plano enterprise vale a pena montar minha própria infra Qual que é o nível de suporte que esse banco de dados tem né como que a comunidade EMTA Então tudo isso tem que ser avaliado né infelizmente eh nunca tem a resposta certa né n que tem um uma bala de prata né mas espero ter respondido essa pergunta né Eh Luan sense né eu posso criar minha própria tokenização então Luan que que acontece nesse
caso criar você pode né Você pode por exemplo criar seu treinar seu próprio modelo de Transformers né Como por exemplo o Bert que é da Google que ele existe e fazer só que isso provavelmente vai ser muito Custoso muito caro né para poder pegar as informações coletar treinar e tudo mais né que acaba sendo um um mais um pro de pesquisa que empresas em geral investem milhões para treinar esses modelos Então quais que são as recomendações né você pode mudar o eding né Por exemplo vamos dizer que esse aqui da Open a esse aqui né
que eu coloquei aqui em verde às vezes no Bert você vai ter um que é diferente que vai ter por exemplo menos espacinhos entendeu que esse aqui é da Google Então o que é recomendável fazer dentre das opções que já existem que já foram treinadas já são utiliz já são validadas Você às vezes fazer experimentações pro seu caso de uso tá E aí você entende em relação a custos em relação à Performance em relação a Como se comporta qual faz mais sentido pro seu contexto né então sumarizando treinar do zero não é recomendável mas ver
outras eh modelos de elling que existem É sempre bom pra gente poder ver a melhor performance no nosso projeto Bacana Então pessoal e Resumindo aqui né que que a gente viu aqui até agora a gente viu LM a gente viu sobre edins a gente viu sobre hag a gente viu sobre o nosso tutorial ali que eu já vou voltar para ele a gente viu essa parte de indexação de documentos eu expliquei algumas coisas mais técnicas específicas Porque vão ter no código Tá e agora vamos voltar pro código então né aqui no código se você aperta
C você sai né ou se você apertar control c Então vou limpar aqui e vamos ver o que que tá acontecendo por trás do código né que acho que iso é o o interessante do tutorial principalmente né a gente vai ter os dois arquivos como eu falei um é o interface ponp e o outro é o Core PP que vai estar rodando as principais funções aqui dentro se vocês abrirem aqui esse Main vocês vão ver as do menu tá então por exemplo al quando coloca indexação de documentos vai chamar essa função process docum status e
todas as outras partes aqui de console pprint tudo são questões mais estéticas relacionadas a nossa interface do menuzinho então elas eu não vou entrar tanto em detalhes beleza outra opção Nossa aqui é a de checar total de documentos que a gente tem aqui o document beleza esse aqui a gente tem do delete documents que é a nossa opção três tá então vai deletar Vector Store na quatro vai começar o nosso chat e na cinco aqui vai sair né Então vamos aproveitar aqui e rodar aqui ver um pouquinho sobre o chat né então rodei ali o
Python interface ppai né Vou colocar aqui a opção qu tá qu ó bemvindo ao docum q System aperte cont C Exit ou kit PR poder sair n Então vamos lá minha primeir pergunta Quem é Felipe aí olha só eu coloquei os logs PR gente poder ver o que tá acontecendo por trás Olha foi lá fez uma requisição Ed ou seja el transformou ISO aqui no vetor né e depois fez a chamada para depois que eu tinha a resposta ele completar ela então ele responde aqui ó Felipe eard é o engenheiro fundador da B tecnologia e
aqui embaixo eu tenho o quê as fontes de onde que el tirou essa informação né não foi do por aí na internet é de dentro dos meus documentos Então olha só ele trouxe aqui sobre a BX que é o principal e ele acabou pegando aqui de outros documentos que não tem tem tanto a ver né provavelmente não foi relevante né Ele trouxe por conta de um parâmetro que a gente configura que eu pedi no mínimo três documentos legal outra pergunta Quando a BX foi fundada a BX foi fundada na cidade de Florianópolis em 2014 as
fontes sobre a Bix cultura da Bix né Quais são os valores da BX então perguntei Aqui incluir desenvolvimento pessoal profissional colaboradores Independência e autonomia né Ele fala aqui sobre a Bix e os documentos da cultura da Bix né então Vocês conseguem ver que eu não tô deixando simplesmente ao Deus Dará as as respostas né eu já tô dizendo o seguinte olha dentro desse escopo Me responda com isso a gente consegue reduzir muito erro né Na hora de ter essa respostas né aí vamos fazer uma pergunta aqui né gente que eu não podia deixar de fazer
que é o que é One Piece né One Piece é o tesouro mais procurado do mundo também conhecido como grande tesouro entrelaçado o símbolo único tá vendo e aqui pegou da Wikipédia né Então olha só você vai mudando o contexto ele vai ajustando de onde que ele tem que pegar então vocês vem que toda aquela parte teórica do da palavra o vetor a setinha faz sentido aqui então se por um momento nas perguntas sobre BX eu tinha um vetor para cá quando eu pergunto sobre One Piece ele vem para cá são distâncias Diferentes né então
Bacana Então vamos ver agora a gente viu que funciona a gente viu que tá ok vamos aqui então né vou sair aqui também vamos ver um pouquinho do código né então eu vou entrar aqui no core.py tá gente que é a principal aqui que a gente vai ter para poder eh falar do do que tá acontecendo por trás do haag né então que a gente vai ter toda a parte de importar as bibliotecas né e tudo mais né aqui a gente vai ter duas classes tá que são mais para efeitos de funcionalidade na hora de
lidar com os documentos uma chama file handler e a outra Custom text Loader tá então a gente f abrir aqui a gente vê nada mais nada menos que o quê né ela tem certeza que a gente tá pegando textos com a codificação certa Porque dependendo do texto pode ter uma codificação que não tá dentro do tf8 E aí pode às vezes dar uma uma erradinha ali e no text Loader aqui a gente vai o quê A gente vai pegar os textos aqui né então você vê que aqui tem o o inicializador tem aqui né ele
abre os documentos ele vai pegando as informações deles né então uma coisa mais mesmo para questões de funcionalidades legal aqui agora a gente vai ter a nossa classe do hag né a gente vai ter essa classe de setup do logger só pra gente dar aqueles logs bonitinhos que a gente viu rodando por trás né que é bem bem legal e aqui é a classe principal do foco do nosso tutorial né do HG System então aqui né a gente começa inicializando aqui a nossa classe e para inicializar que acontece e logger pinfo aqui né vai dizer
que começou vai carregar o o dot env até inclusive gente eu não falei antes mas aqui eu coloquei um env pon exemple Mas é para botar ponto en na aplicação de vocês tá esse aqui é o arquivo de e ambiente então aqui olha tem a Open a ke né que eu coloquei lá eu coloquei a minha chave aí vocês podem lá colocar e colocar aqui de vocês o modelo que vocês querem usar onde tá a Collection name né Chama my documents e onde que vai tá aqui o chroma DB onde que ele vai se instalar
nesse caso nessa pasta DB a gente consegue ver que ele tá aqui né Se vocês deletar essa pasta e é deletado também o banco de dados vetorial E é só criar novamente a gente pega aqui todas essas variáveis de ambiente tá a gente aqui chama aqui o nosso o chat da Open ai tá nesse caso eu coloquei aqui uma temperatura é o queê um padrão do quanto que ele pode ser livre na resposta dele então coloquei aqui 07 né mas vocês podem colocar 0 01 né quanto menos for mais rígida vai ser a resposta em
relação aos documentos que você colocou e aqui o nosso eding né então Eh Open a beding e aqui né o que eu falei para vocês o Chunk size e o Chunk overlap ou seja esse Chunk size de 1000 é o que a gente viu aqui né que essa bordinha aqui azul né enquanto que overlap é essa aqui em vermelho né por isso que eu expliquei para vocês antes esse conceito né que é um parâmetro que a gente acaba aqui podendo mudar para poder ajustar Nossa indexação tá então aqui a gente inici o nosso o nosso
sistema né e aqui a gente vai ter os outros e métodos também né o de carregar documentos de processar o de criar Vector Store né então passar por cada um deles bem rapidinho também nesse load documents a gente vai basicamente aqui pegar todosos arquivos P TXT da pase que a gente definiu que é essa documents tá bom no process documents a gente vai fazer o quê vai fazer aquela parte de criar os chunks então a gente vê aqui ó split documents documents Ou seja é o processo que eu falei para você de que eu vou
ter esse texto grandão e a ele vai fazer o que ah esse aqui é o Chunk 1 Esse é o Chunk do entendeu então esse processo depois aqui a gente vai ter o Create Vector Store então caso o não tenha sido criado ainda a gente cria a Vector Store do chroma beleza e e pra gente poder vai criar essa partinha aqui DB então só mesmo uma questão de inicialização do banco de dados tá aqui pra gente poder eh trazer a Vector Store né carregar ela né que você pode ter mais de um Vector Store utilizando
o crama DB né então por conta disso a gente acaba e fazendo isso aqui o delete Vector Store então basicamente vai remover aqui essa o que existe dentro dessa pasta DB esse get documents vai trazer qual que é o número de documentos do chunks que a gente tem então ele vai basicamente trazer aqui a Vet Store e fazer uma contagem tá então bem direto também e por fim aqui o Create k ch que vai ser o quê lembra quando a gente estava falando aqui no tutorial que existe esse prompt de responda somente baseado nisso daqui
então é aqui que entra eh a gente vai ter esse template que vai dizer eh use as seguintes partes de contexto para responder a a pergunta que foi dada Se você não souber a resposta diga que você não sabe não tem te inventar uma resposta então o Contex que a gente passa que vai ser os documentos da nossa da nossa resultado da nossa pesquisa e aqui o question que é a nossa pergunta tá e aqui então né Eh só mesmo a questão de ajustar esse prompt aqui né e aqui a gente cria uma chain do
Lang chain né que a gente consegue aí já dizer qual que é llm qual que é o retriever que a gente vai usar e aqui gente ó é o parâmetro que eu falei com vocês que eu sempre tô trazendo três mas aí a gente pode mudar colocar cinco seis um dois né isso aí vai depender de vocês outra forma também de colocar um limar para dizer o seguinte somente vou trazer respostas acima de um certo limar de certeza também é possível e aqui no interface PP tem duas funçõe inhas também né que são mais chave
né uma que é do start chat né que vai basicamente chamar e colocar um loop no nosso chat tá então basicamente que ela vai fazer e a outra aqui de indexar os documentos que ele vai chamar a a função aqui do load documents né load process e Create Vector Store tá então passei aqui bem por cima gente o foco mesmo são as do Core tá E também explicação do que que é R como usar né com calma aqui tá bem documentado o código Dá para parar ler ver tudo nos detalhes beleza vamos finalizar aqui então
a nossa a a nossa apresentação aqui né então voltando aqui né a gente viu ali né todo o processo da pergunta faz o eding eh transforma em vetor faz a pesquisa então tudo isso a gente viu ali na prática no código e no sisteminha que a gente montou né E aí quais que são aí né gente as vantagens da gente fazer hag versus llm tradicional né na llm tradicional a gente faz só responder com que foi treinado né isso aí pode levar Alucinação a não ter contextos recentes a não ter o seu contexto específico enquanto
que no hag antes de gerar resposta a gente vai ter aquela busca então eu já estou trazendo paraa minha própria resposta à pergunta só que eu tô interessado né aqueles documentos que eu estou interessado aqueles pedaços de informações que eu estou interessado e com isso como eu tenho um controle dos documentos eu posso trazer informação mais mais atualizada fazer atualizações fazer revisões né posso fazer tudo isso algumas aplicações de rag em empresas né Por Exemplo né com empresas de que a gente tem chamado chamada interna chamada de ti eh telemarketing chat né a gente pode
buscar referências no atendimento ao cliente então se você foi lá e mandou uma mensagem eh por exemplo Seu banco ele já pode ir lá ver qual a artigo que existe que responde aquela sua pergunta de tentar te trazer né outra também busca de documentos jurídicos a montar um processo lembra daquele exemplo que eu dei lá no início se você é um advogado tem um de advocacia né você já pode já os documentos os seus processos dizer assim no último ano Quais foram as sentenças relacionadas à pensão alimentícia E aí dentro lá vai te trazer os
documentos que tiveram as relações com pensão alimentícia para e vai te dar resposta né Então esse é um caso também que é utilizado e um também que é bem utilizado é bem bacana mesmo a gente já fez bastante projeto a gente faz bastante projeto também é em relação à indústria galera eh chamado de manutenção de indústria log de equipamentos estão tudo ali dentro da indústria né com os próprios dados e aí no caso de indústria normalmente a gente não utiliza por exemplo esses Open ai esses modelos da internet a gente normalmente faz toda uma infraestrutura
local né para poder eh eh cumprir todos os requisitos de segurança da informação que existem nasas empresas Tá mas exemp por exemplo assim deu um log de uma máquina analise o log dessa máquina Me dê o resultado dos possíveis erros que podem existir e aí consegui fazer com a agentes com várias coisas né eh não só o rag mas outras ferramentas de llm trazer e d toda uma resposta robusta para você tá querendo né então é bem legal mesmo essas aplicações em indústria né galera era isso que eu tinha para hoje muito muito obrigado pelo
tempo de vocês pelas perguntas foi super bacana trazer esse conhecimento né deixe meus contatos tá eh hernan PPA @big ptec e também meu LinkedIn tá hernan eh Braga perereira pode apontar o que é recod aqui né E e aí já vão lá pro meu perfil e queria saber de vocês se tem alguma pergunta final algo que a gente pode responder nesses últimos 5 minutinhos Ó gente muito muito obrigado pelos feedbacks eu fico muito feliz que vocês tenham gostado né a i aqui comentou né que eu não seria eu se não tivesse referência a One Pice
eh de fato acompanha há muitos anos gosto bastante né a o José Sr aqui também agradeceu né que a gente respondeu a pergunta dele muito obrigado William Mel trouxe aqui né ótima apresentação Muito obrigado William também a Lorine também trouxe também né o Felipe também trouxe aqui né Parabéns excelente aula muito muito obrigado pessoal pela pelas pelas congratulações e continue acompanhando aí a BX os nossos Ó tem mais uma pergunta aqui deixa eu ver aqui ó hoje em dia ouo falar muito sobre ética em EA você encherga que esse tema será muito mais peso daqui
para frente sim com certeza Felipe eh inclusive exe uma discussão ética né sobre o próprio treinamento dos modelos o viés que eles têm né muitos modelos de imagem também de texto né foram através de quebrando copyright então toda essa questão ética não é só o futuro mas é o presente também nas discussões dear né então pode ter certeza que esse assunto vai est vai est continuando crescendo e mais pessoas ficando cientes né do do que é responsável de fazer o que não é responsável Como reduzir os vieses de modelos né então pode ter certeza que
esse assunto aí é bem quente também gente muito muito obrigado a todos vocês pelo tempo pela dedicação né O código vai ser disponibilizado também lá no github da BX tá bom e agora eu me despe de vocês Muito obrigado e uma ótima semana um ótimo final de semana para todos [Música] a l