{"id":46245,"date":"2024-09-04T14:05:11","date_gmt":"2024-09-04T14:05:11","guid":{"rendered":"https:\/\/fabricegrinda.com\/?p=46245"},"modified":"2024-09-05T14:50:33","modified_gmt":"2024-09-05T14:50:33","slug":"fabrice-ai-o-percurso-tecnico","status":"publish","type":"post","link":"https:\/\/grinda.org\/pt-pt\/fabrice-ai-o-percurso-tecnico\/","title":{"rendered":"Fabrice AI: O percurso t\u00e9cnico"},"content":{"rendered":"\n<p>Como referi no <a href=\"https:\/\/fabricegrinda.com\/pt-pt\/apresentamos-te-o-fabrice-ai\/\" data-type=\"link\" data-id=\"https:\/\/fabricegrinda.com\/introducing-fabrice-ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">post anterior<\/a>, o desenvolvimento da <a href=\"https:\/\/fabriceai.fabricegrinda.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">IA do Fabrice<\/a> revelou-se muito mais complexo do que o esperado, obrigando-me a explorar muitas abordagens diferentes.<\/p>\n\n<p><strong>A abordagem inicial: \u00cdndice Llama &#8211; Pesquisa Vetorial<\/strong><\/p>\n\n<p>A minha primeira incurs\u00e3o para melhorar as capacidades de recupera\u00e7\u00e3o do Fabrice AI envolveu a utiliza\u00e7\u00e3o do \u00cdndice Llama para pesquisa vetorial.\nO conceito era simples: pegar no conte\u00fado do meu blogue, convert\u00ea-lo em documentos Langchain e depois transform\u00e1-los em documentos Llama.\nEstes documentos Llama seriam depois armazenados num \u00edndice vetorial, permitindo-me consultar este \u00edndice para obter informa\u00e7\u00f5es relevantes.  <\/p>\n\n<p>No entanto, quando comecei a testar o sistema, tornou-se evidente que esta abordagem n\u00e3o estava a produzir os resultados que eu esperava.\nEspecificamente, quando questionei o sistema com perguntas de contexto pesado, como &#8220;Quais s\u00e3o os maiores erros que os fundadores de mercados cometem?&#8221;, a IA n\u00e3o conseguiu dar respostas significativas.\nEm vez de recuperar o conte\u00fado diferenciado que eu sabia que estava embutido nos dados, ela retornava respostas irrelevantes ou incompletas.  <\/p>\n\n<p>Este fracasso inicial levou-me a reconsiderar a minha abordagem.\nApercebi-me de que n\u00e3o bastava armazenar o conte\u00fado num \u00edndice vetorial; o mecanismo de recupera\u00e7\u00e3o tinha de compreender o contexto e as nuances das perguntas que estavam a ser feitas.\nEsta constata\u00e7\u00e3o foi a primeira de muitas li\u00e7\u00f5es que iriam moldar a evolu\u00e7\u00e3o da Fabrice AI.  <\/p>\n\n<p><strong>Armazenamento de conhecimento: Armazenamento e recupera\u00e7\u00e3o de documentos MongoDB<\/strong><\/p>\n\n<p>Com as limita\u00e7\u00f5es da abordagem do \u00edndice Llama em mente, explorei em seguida o armazenamento dos documentos Llama no MongoDB.\nO esquema flex\u00edvel e a estrutura orientada para documentos do MongoDB pareciam ser uma solu\u00e7\u00e3o promissora para gerir os diversos tipos de conte\u00fado que tinha acumulado ao longo dos anos. <\/p>\n\n<p>O plano era criar uma experi\u00eancia de pesquisa mais din\u00e2mica e reactiva.\nNo entanto, esta abordagem rapidamente se deparou com problemas.\nA funcionalidade de pesquisa, que eu tinha previsto ser mais robusta, n\u00e3o teve o desempenho esperado.\nAs consultas que deveriam ter devolvido documentos relevantes, em vez disso, n\u00e3o produziram resultados ou apresentaram conte\u00fados irrelevantes.   <\/p>\n\n<p>Este contratempo foi frustrante, mas tamb\u00e9m sublinhou uma li\u00e7\u00e3o fundamental: o m\u00e9todo de armazenamento \u00e9 t\u00e3o importante como a estrat\u00e9gia de recupera\u00e7\u00e3o.\nComecei a considerar outras op\u00e7\u00f5es, como a utiliza\u00e7\u00e3o do MongoDB Atlas para pesquisas vectoriais, que poderia potencialmente fornecer a precis\u00e3o e a escalabilidade de que precisava.\nNo entanto, antes de me comprometer com esta alternativa, queria explorar outras abordagens para determinar se haveria uma solu\u00e7\u00e3o mais eficaz.  <\/p>\n\n<p><strong>Recuperador de metadados e armazenamento de vectores: Procura a especificidade<\/strong><\/p>\n\n<p>Uma das pr\u00f3ximas vias que explorei foi a utiliza\u00e7\u00e3o de um recuperador de metadados combinado com um armazenamento de vectores.\nA ideia subjacente a esta abordagem era categorizar o vasto conjunto de informa\u00e7\u00f5es no Fabrice AI e depois obter respostas com base nessas categorias.\nAo estruturar os dados com metadados, esperava melhorar a capacidade da IA de fornecer respostas espec\u00edficas e direcionadas.  <\/p>\n\n<p>No entanto, este m\u00e9todo tamb\u00e9m tinha as suas limita\u00e7\u00f5es.\nEmbora parecesse promissor \u00e0 primeira vista, a IA teve dificuldade em dar respostas exactas a todos os tipos de perguntas.\nPor exemplo, quando perguntei: &#8220;O autor \u00e9 otimista?&#8221;\nO sistema n\u00e3o conseguiu interpretar a pergunta no contexto do conte\u00fado relevante.\nEm vez de fornecer uma an\u00e1lise perspicaz com base nos metadados, devolveu respostas vagas ou nenhuma.    <\/p>\n\n<p>Esta abordagem ensinou-me uma li\u00e7\u00e3o valiosa sobre a import\u00e2ncia do contexto na IA.\nN\u00e3o basta simplesmente categorizar a informa\u00e7\u00e3o; a IA tamb\u00e9m tem de compreender como estas categorias interagem e se sobrep\u00f5em para formar uma compreens\u00e3o coesa do conte\u00fado.\nSem esta profundidade de compreens\u00e3o, mesmo os m\u00e9todos de recupera\u00e7\u00e3o mais sofisticados podem ser insuficientes.  <\/p>\n\n<p><strong>Estrutura\u00e7\u00e3o do conhecimento: O SummaryTreeIndex<\/strong><\/p>\n\n<p>Enquanto continuava a aperfei\u00e7oar a IA Fabrice, experimentei criar um SummaryTreeIndex.\nEsta abordagem tinha como objetivo resumir todos os documentos num formato de \u00e1rvore, permitindo que a IA navegasse atrav\u00e9s destes resumos e recuperasse informa\u00e7\u00f5es relevantes com base na estrutura do conte\u00fado. <\/p>\n\n<p>A ideia era que, ao resumir os documentos, a IA poderia identificar rapidamente os pontos-chave e responder \u00e0s perguntas com informa\u00e7\u00f5es concisas e precisas.\nNo entanto, este m\u00e9todo tamb\u00e9m enfrentou desafios significativos.\nA IA teve dificuldade em dar respostas significativas a quest\u00f5es complexas, como &#8220;Como tomar decis\u00f5es importantes na vida?&#8221;\nEm vez de se basear no conte\u00fado rico e cheio de nuances armazenado nos resumos, as respostas da IA eram frequentemente superficiais ou incompletas.   <\/p>\n\n<p>Esta experi\u00eancia sublinhou a dificuldade de equilibrar a amplitude e a profundidade na IA.\nEmbora os resumos possam fornecer uma vis\u00e3o geral de alto n\u00edvel, muitas vezes n\u00e3o t\u00eam o contexto detalhado necess\u00e1rio para responder a perguntas mais complexas.\nApercebi-me de que qualquer solu\u00e7\u00e3o eficaz teria de integrar tanto o conte\u00fado detalhado como os resumos de alto n\u00edvel, permitindo que a IA recorresse a ambos quando necess\u00e1rio.  <\/p>\n\n<p>\u00c9 por isso que, na vers\u00e3o atual do Fabrice AI, a IA come\u00e7a por dar um resumo da resposta, antes de entrar em mais pormenores.<\/p>\n\n<p><strong>Expandir os horizontes: \u00cdndice do gr\u00e1fico de conhecimentos<\/strong><\/p>\n\n<p>Reconhecendo as limita\u00e7\u00f5es dos m\u00e9todos anteriores, optei por uma abordagem mais sofisticada: o Knowledge Graph Index.\nEsta abordagem envolveu a constru\u00e7\u00e3o de um gr\u00e1fico de conhecimentos a partir de texto n\u00e3o estruturado, permitindo que a IA se envolvesse em consultas baseadas em entidades.\nO objetivo era criar uma compreens\u00e3o mais din\u00e2mica e interligada do conte\u00fado, permitindo que a IA Fabrice respondesse mais eficazmente a perguntas complexas e contextualizadas.  <\/p>\n\n<p>Apesar da sua promessa, o \u00cdndice do Gr\u00e1fico de Conhecimento tamb\u00e9m enfrentou obst\u00e1culos significativos.\nA IA teve dificuldade em produzir resultados precisos, especialmente para consultas que exigiam uma compreens\u00e3o profunda do contexto.\nPor exemplo, quando lhe foi perguntado: &#8220;Quais s\u00e3o as avalia\u00e7\u00f5es justas da Seed &amp; Series A?&#8221;, a IA n\u00e3o conseguiu dar uma resposta relevante, destacando a dificuldade de integrar texto n\u00e3o estruturado num gr\u00e1fico de conhecimento coerente.  <\/p>\n\n<p>Esta abordagem, embora n\u00e3o tenha sido bem sucedida, forneceu informa\u00e7\u00f5es importantes sobre os desafios da utiliza\u00e7\u00e3o de gr\u00e1ficos de conhecimentos na IA.\nA complexidade dos dados e a necessidade de um contexto preciso significavam que mesmo um gr\u00e1fico de conhecimentos bem constru\u00eddo poderia ter dificuldades em obter os resultados desejados.\nUma outra desvantagem do \u00edndice do gr\u00e1fico do conhecimento era a sua baixa velocidade.\nO tempo de resposta para obter documentos relacionados era muito elevado em rela\u00e7\u00e3o a um \u00edndice de armazenamento de vectores.   <\/p>\n\n<p><strong>Reavaliando os dados: G\u00e9meos<\/strong><\/p>\n\n<p>Depois de v\u00e1rios contratempos, decidi adotar uma abordagem diferente, utilizando a IA da Google, <a href=\"https:\/\/gemini.google.com\/app\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/gemini.google.com\/app\" rel=\"noreferrer noopener\">Gemini<\/a>.\nA ideia era criar conjuntos de dados a partir de ficheiros JSON-CSV e depois treinar um modelo LLM personalizado utilizando esses dados.\nEsperava que, utilizando dados estruturados e um modelo de treino robusto, pudesse ultrapassar alguns dos desafios que tinham afetado as tentativas anteriores.  <\/p>\n\n<p>No entanto, esta abordagem tamb\u00e9m encontrou dificuldades.\nO processo de forma\u00e7\u00e3o foi interrompido devido a uma formata\u00e7\u00e3o incorrecta dos dados, o que impediu a forma\u00e7\u00e3o eficaz do modelo.\nEste contratempo sublinhou a import\u00e2ncia da integridade dos dados na forma\u00e7\u00e3o em IA.\nSem dados corretamente formatados e estruturados, mesmo os modelos mais avan\u00e7ados podem n\u00e3o ter o desempenho esperado.   <\/p>\n\n<p>Esta experi\u00eancia levou-me a considerar o potencial da utiliza\u00e7\u00e3o do BigQuery para armazenar dados JSON, proporcionando uma plataforma mais escal\u00e1vel e fi\u00e1vel para gerir os grandes conjuntos de dados necess\u00e1rios para treinar eficazmente a IA Fabrice.<\/p>\n\n<p><strong>Combinando pontos fortes: Documentos Langchain com Pinecone<\/strong><\/p>\n\n<p>Apesar dos desafios enfrentados at\u00e9 agora, estava determinado a encontrar uma solu\u00e7\u00e3o que permitisse \u00e0 Fabrice AI armazenar e recuperar conhecimentos de forma eficaz.\nEsta determina\u00e7\u00e3o levou-me a fazer experi\u00eancias com documentos Langchain e Pinecone.\nA abordagem envolveu a cria\u00e7\u00e3o de um armazenamento vetorial Pinecone utilizando documentos Langchain e embeddings OpenAI, recuperando depois os principais documentos semelhantes com base na consulta.  <\/p>\n\n<p>Este m\u00e9todo revelou-se prometedor, especialmente quando a consulta inclu\u00eda o t\u00edtulo do documento.\nPor exemplo, quando lhe foi perguntado &#8220;Qual \u00e9 a chave para a felicidade?&#8221;, a IA foi capaz de recuperar e resumir o conte\u00fado relevante com exatid\u00e3o.\nNo entanto, ainda existiam limita\u00e7\u00f5es, especialmente quando a consulta n\u00e3o inclu\u00eda palavras-chave ou t\u00edtulos espec\u00edficos.  <\/p>\n\n<p>Esta abordagem demonstrou o potencial da combina\u00e7\u00e3o de diferentes tecnologias para melhorar o desempenho da IA.\nAo integrar os documentos Langchain com o armazenamento de vectores do Pinecone, consegui melhorar a relev\u00e2ncia e a precis\u00e3o das respostas da IA, embora com algumas limita\u00e7\u00f5es. <\/p>\n\n<p><strong>Alcan\u00e7a a consist\u00eancia: Construtor GPT OpenAI<\/strong><\/p>\n\n<p>Depois de explorar v\u00e1rios m\u00e9todos e tecnologias, recorri ao <a href=\"https:\/\/chatgpt.com\/gpts\/editor\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/chatgpt.com\/gpts\/editor\/\" rel=\"noreferrer noopener\">GPT Builder<\/a> da Open AI para consolidar e aperfei\u00e7oar os conhecimentos armazenados no Fabrice AI.\nAo carregar todo o conte\u00fado para uma base de conhecimentos GPT, pretendi criar uma plataforma mais consistente e fi\u00e1vel para recuperar e interagir com os meus conhecimentos. <\/p>\n\n<p>Esta abordagem provou ser uma das mais bem sucedidas, com a IA a conseguir fornecer melhores resultados numa s\u00e9rie de consultas.\nA chave para este sucesso foi a integra\u00e7\u00e3o de todo o conhecimento num sistema \u00fanico e coeso, permitindo que a IA utilizasse toda a amplitude do conte\u00fado ao responder \u00e0s perguntas. <\/p>\n\n<p>Como mencionei no meu post anterior, n\u00e3o consegui que funcionasse no meu site e s\u00f3 estava dispon\u00edvel para os subscritores pagos do Chat GPT, o que achei demasiado limitativo.\nAl\u00e9m disso, embora fosse melhor, eu ainda n\u00e3o gostava da qualidade das respostas e n\u00e3o me sentia confort\u00e1vel em divulg\u00e1-las ao p\u00fablico. <\/p>\n\n<p><strong>Refinamento final: Assistentes de GPT usando o modelo 4o<\/strong><\/p>\n\n<p>A \u00faltima pe\u00e7a do puzzle no desenvolvimento da IA Fabrice surgiu com a introdu\u00e7\u00e3o dos <a href=\"https:\/\/platform.openai.com\/docs\/assistants\/overview\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/platform.openai.com\/docs\/assistants\/overview\" rel=\"noreferrer noopener\">assistentes GPT<\/a> utilizando o modelo 4o.\nEsta abordagem representou o culminar de tudo o que tinha aprendido ao longo do projeto.\nUtilizando uma base de dados de vectores e refinando as instru\u00e7\u00f5es, pretendi atingir o n\u00edvel mais elevado poss\u00edvel de precis\u00e3o e compreens\u00e3o contextual nas respostas da IA.  <\/p>\n\n<p>Este m\u00e9todo envolveu o carregamento de todo o conhecimento que eu tinha acumulado numa base de dados vetorial, que foi depois utilizada como base para as intera\u00e7\u00f5es da IA.\nA base de dados vetorial permitiu \u00e0 IA efetuar pesquisas mais sofisticadas, recuperando informa\u00e7\u00f5es com base no significado sem\u00e2ntico das consultas, em vez de se basear apenas na correspond\u00eancia de palavras-chave.\nIsto representou um avan\u00e7o significativo em rela\u00e7\u00e3o \u00e0s abordagens anteriores, permitindo que a IA compreendesse melhor e respondesse a quest\u00f5es complexas e matizadas.  <\/p>\n\n<p>Uma das principais inova\u00e7\u00f5es desta abordagem foi o refinamento cuidadoso dos prompts.\nAo elaborar e testar meticulosamente diferentes prompts, consegui orientar a IA no sentido de fornecer respostas mais precisas e relevantes.\nIsto envolveu n\u00e3o s\u00f3 ajustar a reda\u00e7\u00e3o dos avisos, mas tamb\u00e9m experimentar diferentes formas de estruturar as perguntas para obter as melhores respostas poss\u00edveis.  <br\/><br\/>Os resultados foram impressionantes.\nA IA era agora capaz de lidar com uma vasta gama de consultas com elevada precis\u00e3o, mesmo quando as perguntas eram abertas ou exigiam uma compreens\u00e3o profunda do contexto.\nPor exemplo, quando lhe perguntaram: &#8220;Como tomar as decis\u00f5es mais importantes da tua vida?&#8221;\nA IA forneceu uma resposta abrangente e perspicaz, recorrendo a uma variedade de fontes e perspectivas para dar uma resposta completa.   <\/p>\n\n<p>Este sucesso foi o culminar de centenas de horas de trabalho e de in\u00fameras experi\u00eancias.\nDemonstrou que, com a combina\u00e7\u00e3o certa de tecnologia e refinamento, era poss\u00edvel criar uma IA que pudesse n\u00e3o s\u00f3 armazenar e recuperar informa\u00e7\u00f5es de forma eficaz, mas tamb\u00e9m interagir com elas de forma significativa.\nO desenvolvimento dos GPT Assistants utilizando o Model 4o marcou o ponto em que a IA Fabrice se tornou verdadeiramente pr\u00f3pria, atingindo o n\u00edvel de sofistica\u00e7\u00e3o e precis\u00e3o que eu tinha imaginado desde o in\u00edcio.\nA API dos GPT Assistants foi ent\u00e3o integrada no meu blogue para permitir que os utilizadores finais interagissem com a Fabrice AI da forma como a v\u00eas agora no blogue.   <\/p>\n\n<p><strong>Refletir sobre a viagem<\/strong><\/p>\n\n<p>O processo de desenvolvimento da IA do Fabrice real\u00e7ou as complexidades do trabalho com a IA, particularmente no que diz respeito \u00e0 compreens\u00e3o e contextualiza\u00e7\u00e3o da informa\u00e7\u00e3o.\nEnsinou-me que n\u00e3o h\u00e1 atalhos no desenvolvimento da IA &#8211; cada passo, cada itera\u00e7\u00e3o e cada experi\u00eancia \u00e9 uma parte necess\u00e1ria da viagem para criar algo verdadeiramente eficaz. <\/p>\n\n<p>Olhando para o futuro, estou entusiasmado por continuar a aperfei\u00e7oar e a expandir a IA da Fabrice.\nComo mencionei no \u00faltimo post, vou rever as perguntas feitas para completar a base de conhecimentos onde existem lacunas.\nTamb\u00e9m espero eventualmente lan\u00e7ar uma vers\u00e3o interactiva que se pare\u00e7a comigo e com a qual possas falar.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como referi no post anterior, o desenvolvimento da IA do Fabrice revelou-se muito mais complexo do que o esperado, obrigando-me a explorar muitas abordagens diferentes. A abordagem inicial: \u00cdndice Llama &hellip; <a href=\"https:\/\/www.fabricegrinda.com\/pt-pt\/fabrice-ai-o-percurso-tecnico\/\" class=\"more-link\">Continuar a ler<span class=\"screen-reader-text\"> &#8220;Fabrice AI: O percurso t\u00e9cnico&#8221;<\/span><\/a><\/p>\n","protected":false},"author":9,"featured_media":46227,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[867,932],"tags":[],"class_list":["post-46245","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-reflexoes-pessoais-pt-pt","category-gadgets-tecnologicos"],"acf":[],"contentUpdated":"Fabrice AI: O percurso t\u00e9cnico. Categories - Reflex\u00f5es pessoais, Gadgets tecnol\u00f3gicos. Date-Posted - 2024-09-04T14:05:11 . \n Como referi no post anterior, o desenvolvimento da IA do Fabrice revelou-se muito mais complexo do que o esperado, obrigando-me a explorar muitas abordagens diferentes.\n A abordagem inicial: \u00cdndice Llama &#8211; Pesquisa Vetorial\n A minha primeira incurs\u00e3o para melhorar as capacidades de recupera\u00e7\u00e3o do Fabrice AI envolveu a utiliza\u00e7\u00e3o do \u00cdndice Llama para pesquisa vetorial.\n O conceito era simples: pegar no conte\u00fado do meu blogue, convert\u00ea-lo em documentos Langchain e depois transform\u00e1-los em documentos Llama.\n Estes documentos Llama seriam depois armazenados num \u00edndice vetorial, permitindo-me consultar este \u00edndice para obter informa\u00e7\u00f5es relevantes.  \n No entanto, quando comecei a testar o sistema, tornou-se evidente que esta abordagem n\u00e3o estava a produzir os resultados que eu esperava.\n Especificamente, quando questionei o sistema com perguntas de contexto pesado, como &#8220;Quais s\u00e3o os maiores erros que os fundadores de mercados cometem?&#8221;, a IA n\u00e3o conseguiu dar respostas significativas.\n Em vez de recuperar o conte\u00fado diferenciado que eu sabia que estava embutido nos dados, ela retornava respostas irrelevantes ou incompletas.  \n Este fracasso inicial levou-me a reconsiderar a minha abordagem.\n Apercebi-me de que n\u00e3o bastava armazenar o conte\u00fado num \u00edndice vetorial; o mecanismo de recupera\u00e7\u00e3o tinha de compreender o contexto e as nuances das perguntas que estavam a ser feitas.\n Esta constata\u00e7\u00e3o foi a primeira de muitas li\u00e7\u00f5es que iriam moldar a evolu\u00e7\u00e3o da Fabrice AI.  \n Armazenamento de conhecimento: Armazenamento e recupera\u00e7\u00e3o de documentos MongoDB\n Com as limita\u00e7\u00f5es da abordagem do \u00edndice Llama em mente, explorei em seguida o armazenamento dos documentos Llama no MongoDB.\n O esquema flex\u00edvel e a estrutura orientada para documentos do MongoDB pareciam ser uma solu\u00e7\u00e3o promissora para gerir os diversos tipos de conte\u00fado que tinha acumulado ao longo dos anos. \n O plano era criar uma experi\u00eancia de pesquisa mais din\u00e2mica e reactiva.\n No entanto, esta abordagem rapidamente se deparou com problemas.\n A funcionalidade de pesquisa, que eu tinha previsto ser mais robusta, n\u00e3o teve o desempenho esperado.\n As consultas que deveriam ter devolvido documentos relevantes, em vez disso, n\u00e3o produziram resultados ou apresentaram conte\u00fados irrelevantes.   \n Este contratempo foi frustrante, mas tamb\u00e9m sublinhou uma li\u00e7\u00e3o fundamental: o m\u00e9todo de armazenamento \u00e9 t\u00e3o importante como a estrat\u00e9gia de recupera\u00e7\u00e3o.\n Comecei a considerar outras op\u00e7\u00f5es, como a utiliza\u00e7\u00e3o do MongoDB Atlas para pesquisas vectoriais, que poderia potencialmente fornecer a precis\u00e3o e a escalabilidade de que precisava.\n No entanto, antes de me comprometer com esta alternativa, queria explorar outras abordagens para determinar se haveria uma solu\u00e7\u00e3o mais eficaz.  \n Recuperador de metadados e armazenamento de vectores: Procura a especificidade\n Uma das pr\u00f3ximas vias que explorei foi a utiliza\u00e7\u00e3o de um recuperador de metadados combinado com um armazenamento de vectores.\n A ideia subjacente a esta abordagem era categorizar o vasto conjunto de informa\u00e7\u00f5es no Fabrice AI e depois obter respostas com base nessas categorias.\n Ao estruturar os dados com metadados, esperava melhorar a capacidade da IA de fornecer respostas espec\u00edficas e direcionadas.  \n No entanto, este m\u00e9todo tamb\u00e9m tinha as suas limita\u00e7\u00f5es.\n Embora parecesse promissor \u00e0 primeira vista, a IA teve dificuldade em dar respostas exactas a todos os tipos de perguntas.\n Por exemplo, quando perguntei: &#8220;O autor \u00e9 otimista?&#8221;\n O sistema n\u00e3o conseguiu interpretar a pergunta no contexto do conte\u00fado relevante.\n Em vez de fornecer uma an\u00e1lise perspicaz com base nos metadados, devolveu respostas vagas ou nenhuma.    \n Esta abordagem ensinou-me uma li\u00e7\u00e3o valiosa sobre a import\u00e2ncia do contexto na IA.\n N\u00e3o basta simplesmente categorizar a informa\u00e7\u00e3o; a IA tamb\u00e9m tem de compreender como estas categorias interagem e se sobrep\u00f5em para formar uma compreens\u00e3o coesa do conte\u00fado.\n Sem esta profundidade de compreens\u00e3o, mesmo os m\u00e9todos de recupera\u00e7\u00e3o mais sofisticados podem ser insuficientes.  \n Estrutura\u00e7\u00e3o do conhecimento: O SummaryTreeIndex\n Enquanto continuava a aperfei\u00e7oar a IA Fabrice, experimentei criar um SummaryTreeIndex.\n Esta abordagem tinha como objetivo resumir todos os documentos num formato de \u00e1rvore, permitindo que a IA navegasse atrav\u00e9s destes resumos e recuperasse informa\u00e7\u00f5es relevantes com base na estrutura do conte\u00fado. \n A ideia era que, ao resumir os documentos, a IA poderia identificar rapidamente os pontos-chave e responder \u00e0s perguntas com informa\u00e7\u00f5es concisas e precisas.\n No entanto, este m\u00e9todo tamb\u00e9m enfrentou desafios significativos.\n A IA teve dificuldade em dar respostas significativas a quest\u00f5es complexas, como &#8220;Como tomar decis\u00f5es importantes na vida?&#8221;\n Em vez de se basear no conte\u00fado rico e cheio de nuances armazenado nos resumos, as respostas da IA eram frequentemente superficiais ou incompletas.   \n Esta experi\u00eancia sublinhou a dificuldade de equilibrar a amplitude e a profundidade na IA.\n Embora os resumos possam fornecer uma vis\u00e3o geral de alto n\u00edvel, muitas vezes n\u00e3o t\u00eam o contexto detalhado necess\u00e1rio para responder a perguntas mais complexas.\n Apercebi-me de que qualquer solu\u00e7\u00e3o eficaz teria de integrar tanto o conte\u00fado detalhado como os resumos de alto n\u00edvel, permitindo que a IA recorresse a ambos quando necess\u00e1rio.  \n \u00c9 por isso que, na vers\u00e3o atual do Fabrice AI, a IA come\u00e7a por dar um resumo da resposta, antes de entrar em mais pormenores.\n Expandir os horizontes: \u00cdndice do gr\u00e1fico de conhecimentos\n Reconhecendo as limita\u00e7\u00f5es dos m\u00e9todos anteriores, optei por uma abordagem mais sofisticada: o Knowledge Graph Index.\n Esta abordagem envolveu a constru\u00e7\u00e3o de um gr\u00e1fico de conhecimentos a partir de texto n\u00e3o estruturado, permitindo que a IA se envolvesse em consultas baseadas em entidades.\n O objetivo era criar uma compreens\u00e3o mais din\u00e2mica e interligada do conte\u00fado, permitindo que a IA Fabrice respondesse mais eficazmente a perguntas complexas e contextualizadas.  \n Apesar da sua promessa, o \u00cdndice do Gr\u00e1fico de Conhecimento tamb\u00e9m enfrentou obst\u00e1culos significativos.\n A IA teve dificuldade em produzir resultados precisos, especialmente para consultas que exigiam uma compreens\u00e3o profunda do contexto.\n Por exemplo, quando lhe foi perguntado: &#8220;Quais s\u00e3o as avalia\u00e7\u00f5es justas da Seed &amp; Series A?&#8221;, a IA n\u00e3o conseguiu dar uma resposta relevante, destacando a dificuldade de integrar texto n\u00e3o estruturado num gr\u00e1fico de conhecimento coerente.  \n Esta abordagem, embora n\u00e3o tenha sido bem sucedida, forneceu informa\u00e7\u00f5es importantes sobre os desafios da utiliza\u00e7\u00e3o de gr\u00e1ficos de conhecimentos na IA.\n A complexidade dos dados e a necessidade de um contexto preciso significavam que mesmo um gr\u00e1fico de conhecimentos bem constru\u00eddo poderia ter dificuldades em obter os resultados desejados.\n Uma outra desvantagem do \u00edndice do gr\u00e1fico do conhecimento era a sua baixa velocidade.\n O tempo de resposta para obter documentos relacionados era muito elevado em rela\u00e7\u00e3o a um \u00edndice de armazenamento de vectores.   \n Reavaliando os dados: G\u00e9meos\n Depois de v\u00e1rios contratempos, decidi adotar uma abordagem diferente, utilizando a IA da Google, Gemini.\n A ideia era criar conjuntos de dados a partir de ficheiros JSON-CSV e depois treinar um modelo LLM personalizado utilizando esses dados.\n Esperava que, utilizando dados estruturados e um modelo de treino robusto, pudesse ultrapassar alguns dos desafios que tinham afetado as tentativas anteriores.  \n No entanto, esta abordagem tamb\u00e9m encontrou dificuldades.\n O processo de forma\u00e7\u00e3o foi interrompido devido a uma formata\u00e7\u00e3o incorrecta dos dados, o que impediu a forma\u00e7\u00e3o eficaz do modelo.\n Este contratempo sublinhou a import\u00e2ncia da integridade dos dados na forma\u00e7\u00e3o em IA.\n Sem dados corretamente formatados e estruturados, mesmo os modelos mais avan\u00e7ados podem n\u00e3o ter o desempenho esperado.   \n Esta experi\u00eancia levou-me a considerar o potencial da utiliza\u00e7\u00e3o do BigQuery para armazenar dados JSON, proporcionando uma plataforma mais escal\u00e1vel e fi\u00e1vel para gerir os grandes conjuntos de dados necess\u00e1rios para treinar eficazmente a IA Fabrice.\n Combinando pontos fortes: Documentos Langchain com Pinecone\n Apesar dos desafios enfrentados at\u00e9 agora, estava determinado a encontrar uma solu\u00e7\u00e3o que permitisse \u00e0 Fabrice AI armazenar e recuperar conhecimentos de forma eficaz.\n Esta determina\u00e7\u00e3o levou-me a fazer experi\u00eancias com documentos Langchain e Pinecone.\n A abordagem envolveu a cria\u00e7\u00e3o de um armazenamento vetorial Pinecone utilizando documentos Langchain e embeddings OpenAI, recuperando depois os principais documentos semelhantes com base na consulta.  \n Este m\u00e9todo revelou-se prometedor, especialmente quando a consulta inclu\u00eda o t\u00edtulo do documento.\n Por exemplo, quando lhe foi perguntado &#8220;Qual \u00e9 a chave para a felicidade?&#8221;, a IA foi capaz de recuperar e resumir o conte\u00fado relevante com exatid\u00e3o.\n No entanto, ainda existiam limita\u00e7\u00f5es, especialmente quando a consulta n\u00e3o inclu\u00eda palavras-chave ou t\u00edtulos espec\u00edficos.  \n Esta abordagem demonstrou o potencial da combina\u00e7\u00e3o de diferentes tecnologias para melhorar o desempenho da IA.\n Ao integrar os documentos Langchain com o armazenamento de vectores do Pinecone, consegui melhorar a relev\u00e2ncia e a precis\u00e3o das respostas da IA, embora com algumas limita\u00e7\u00f5es. \n Alcan\u00e7a a consist\u00eancia: Construtor GPT OpenAI\n Depois de explorar v\u00e1rios m\u00e9todos e tecnologias, recorri ao GPT Builder da Open AI para consolidar e aperfei\u00e7oar os conhecimentos armazenados no Fabrice AI.\n Ao carregar todo o conte\u00fado para uma base de conhecimentos GPT, pretendi criar uma plataforma mais consistente e fi\u00e1vel para recuperar e interagir com os meus conhecimentos. \n Esta abordagem provou ser uma das mais bem sucedidas, com a IA a conseguir fornecer melhores resultados numa s\u00e9rie de consultas.\n A chave para este sucesso foi a integra\u00e7\u00e3o de todo o conhecimento num sistema \u00fanico e coeso, permitindo que a IA utilizasse toda a amplitude do conte\u00fado ao responder \u00e0s perguntas. \n Como mencionei no meu post anterior, n\u00e3o consegui que funcionasse no meu site e s\u00f3 estava dispon\u00edvel para os subscritores pagos do Chat GPT, o que achei demasiado limitativo.\n Al\u00e9m disso, embora fosse melhor, eu ainda n\u00e3o gostava da qualidade das respostas e n\u00e3o me sentia confort\u00e1vel em divulg\u00e1-las ao p\u00fablico. \n Refinamento final: Assistentes de GPT usando o modelo 4o\n A \u00faltima pe\u00e7a do puzzle no desenvolvimento da IA Fabrice surgiu com a introdu\u00e7\u00e3o dos assistentes GPT utilizando o modelo 4o.\n Esta abordagem representou o culminar de tudo o que tinha aprendido ao longo do projeto.\n Utilizando uma base de dados de vectores e refinando as instru\u00e7\u00f5es, pretendi atingir o n\u00edvel mais elevado poss\u00edvel de precis\u00e3o e compreens\u00e3o contextual nas respostas da IA.  \n Este m\u00e9todo envolveu o carregamento de todo o conhecimento que eu tinha acumulado numa base de dados vetorial, que foi depois utilizada como base para as intera\u00e7\u00f5es da IA.\n A base de dados vetorial permitiu \u00e0 IA efetuar pesquisas mais sofisticadas, recuperando informa\u00e7\u00f5es com base no significado sem\u00e2ntico das consultas, em vez de se basear apenas na correspond\u00eancia de palavras-chave.\n Isto representou um avan\u00e7o significativo em rela\u00e7\u00e3o \u00e0s abordagens anteriores, permitindo que a IA compreendesse melhor e respondesse a quest\u00f5es complexas e matizadas.  \n Uma das principais inova\u00e7\u00f5es desta abordagem foi o refinamento cuidadoso dos prompts.\n Ao elaborar e testar meticulosamente diferentes prompts, consegui orientar a IA no sentido de fornecer respostas mais precisas e relevantes.\n Isto envolveu n\u00e3o s\u00f3 ajustar a reda\u00e7\u00e3o dos avisos, mas tamb\u00e9m experimentar diferentes formas de estruturar as perguntas para obter as melhores respostas poss\u00edveis.  Os resultados foram impressionantes.\n A IA era agora capaz de lidar com uma vasta gama de consultas com elevada precis\u00e3o, mesmo quando as perguntas eram abertas ou exigiam uma compreens\u00e3o profunda do contexto.\n Por exemplo, quando lhe perguntaram: &#8220;Como tomar as decis\u00f5es mais importantes da tua vida?&#8221;\n A IA forneceu uma resposta abrangente e perspicaz, recorrendo a uma variedade de fontes e perspectivas para dar uma resposta completa.   \n Este sucesso foi o culminar de centenas de horas de trabalho e de in\u00fameras experi\u00eancias.\n Demonstrou que, com a combina\u00e7\u00e3o certa de tecnologia e refinamento, era poss\u00edvel criar uma IA que pudesse n\u00e3o s\u00f3 armazenar e recuperar informa\u00e7\u00f5es de forma eficaz, mas tamb\u00e9m interagir com elas de forma significativa.\n O desenvolvimento dos GPT Assistants utilizando o Model 4o marcou o ponto em que a IA Fabrice se tornou verdadeiramente pr\u00f3pria, atingindo o n\u00edvel de sofistica\u00e7\u00e3o e precis\u00e3o que eu tinha imaginado desde o in\u00edcio.\n A API dos GPT Assistants foi ent\u00e3o integrada no meu blogue para permitir que os utilizadores finais interagissem com a Fabrice AI da forma como a v\u00eas agora no blogue.   \n Refletir sobre a viagem\n O processo de desenvolvimento da IA do Fabrice real\u00e7ou as complexidades do trabalho com a IA, particularmente no que diz respeito \u00e0 compreens\u00e3o e contextualiza\u00e7\u00e3o da informa\u00e7\u00e3o.\n Ensinou-me que n\u00e3o h\u00e1 atalhos no desenvolvimento da IA &#8211; cada passo, cada itera\u00e7\u00e3o e cada experi\u00eancia \u00e9 uma parte necess\u00e1ria da viagem para criar algo verdadeiramente eficaz. \n Olhando para o futuro, estou entusiasmado por continuar a aperfei\u00e7oar e a expandir a IA da Fabrice.\n Como mencionei no \u00faltimo post, vou rever as perguntas feitas para completar a base de conhecimentos onde existem lacunas.\n Tamb\u00e9m espero eventualmente lan\u00e7ar uma vers\u00e3o interactiva que se pare\u00e7a comigo e com a qual possas falar.  \n ","Category":["Reflex\u00f5es pessoais","Gadgets tecnol\u00f3gicos"],"_links":{"self":[{"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/posts\/46245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/comments?post=46245"}],"version-history":[{"count":1,"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/posts\/46245\/revisions"}],"predecessor-version":[{"id":46247,"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/posts\/46245\/revisions\/46247"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/media\/46227"}],"wp:attachment":[{"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/media?parent=46245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/categories?post=46245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grinda.org\/pt-pt\/wp-json\/wp\/v2\/tags?post=46245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}