{"id":46249,"date":"2024-09-04T14:05:11","date_gmt":"2024-09-04T14:05:11","guid":{"rendered":"https:\/\/fabricegrinda.com\/?p=46249"},"modified":"2024-09-05T14:50:32","modified_gmt":"2024-09-05T14:50:32","slug":"fabrice-ai-a-jornada-tecnica","status":"publish","type":"post","link":"https:\/\/grinda.org\/pt-br\/fabrice-ai-a-jornada-tecnica\/","title":{"rendered":"Fabrice AI: a jornada t\u00e9cnica"},"content":{"rendered":"\n<p>Como mencionei na <a href=\"https:\/\/fabricegrinda.com\/pt-br\/apresentando-fabrice-ai\/\" data-type=\"link\" data-id=\"https:\/\/fabricegrinda.com\/introducing-fabrice-ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">publica\u00e7\u00e3o anterior<\/a>, o desenvolvimento do <a href=\"https:\/\/fabriceai.fabricegrinda.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Fabrice AI<\/a> se mostrou muito mais complexo do que o esperado, o que me obrigou a explorar v\u00e1rias abordagens diferentes.<\/p>\n\n<p><strong>A abordagem inicial: \u00cdndice Llama &#8211; Pesquisa vetorial<\/strong><\/p>\n\n<p>Minha primeira incurs\u00e3o no aprimoramento das habilidades de recupera\u00e7\u00e3o do Fabrice AI envolveu o uso do \u00cdndice Llama para pesquisa vetorial.\nO conceito era simples: pegar o conte\u00fado do meu blog, convert\u00ea-lo em documentos Langchain e, em seguida, transform\u00e1-los em documentos Llama.\nEsses documentos Llama seriam ent\u00e3o armazenados em um \u00edndice vetorial, o que me permitiria consultar esse \u00edndice para obter informa\u00e7\u00f5es relevantes.  <\/p>\n\n<p>No entanto, quando comecei a testar o sistema, ficou claro que essa abordagem n\u00e3o estava produzindo os resultados que eu esperava.\nEspecificamente, quando eu consultava o sistema com perguntas de contexto pesado, como &#8220;Quais s\u00e3o os maiores erros que os fundadores de mercado cometem?&#8221;, a IA n\u00e3o conseguia fornecer respostas significativas.\nEm vez de recuperar o conte\u00fado diferenciado que eu sabia estar incorporado nos dados, ela retornava respostas irrelevantes ou incompletas.  <\/p>\n\n<p>Esse fracasso inicial me levou a reconsiderar minha abordagem.\nPercebi que simplesmente armazenar conte\u00fado em um \u00edndice vetorial n\u00e3o era suficiente; o mecanismo de recupera\u00e7\u00e3o precisava entender o contexto e as nuances das perguntas que estavam sendo feitas.\nEssa percep\u00e7\u00e3o foi a primeira de muitas li\u00e7\u00f5es que moldariam a evolu\u00e7\u00e3o da Fabrice AI.  <\/p>\n\n<p><strong>Armazenamento de conhecimento: Armazenamento e recupera\u00e7\u00e3o de documentos do MongoDB<\/strong><\/p>\n\n<p>Com as limita\u00e7\u00f5es da abordagem do \u00edndice Llama em mente, passei a explorar o armazenamento dos documentos do Llama no MongoDB.\nO esquema flex\u00edvel e a estrutura orientada a documentos do MongoDB pareciam ser uma solu\u00e7\u00e3o promissora para gerenciar os diversos tipos de conte\u00fado que eu havia acumulado ao longo dos anos. <\/p>\n\n<p>O plano era criar uma experi\u00eancia de pesquisa mais din\u00e2mica e responsiva.\nNo entanto, essa abordagem teve problemas rapidamente.\nA funcionalidade de pesquisa, que eu havia previsto ser mais robusta, n\u00e3o funcionou como esperado.\nEm vez disso, as consultas que deveriam retornar documentos relevantes n\u00e3o produziam resultados ou apresentavam conte\u00fado irrelevante.   <\/p>\n\n<p>Esse contratempo foi frustrante, mas tamb\u00e9m ressaltou uma li\u00e7\u00e3o fundamental: o m\u00e9todo de armazenamento \u00e9 t\u00e3o importante quanto a estrat\u00e9gia de recupera\u00e7\u00e3o.\nComecei a considerar outras op\u00e7\u00f5es, como a utiliza\u00e7\u00e3o do MongoDB Atlas para pesquisas vetoriais, que poderia fornecer a precis\u00e3o e a escalabilidade de que eu precisava.\nNo entanto, antes de me comprometer com essa alternativa, eu queria explorar outras abordagens para determinar se haveria uma solu\u00e7\u00e3o mais eficaz.  <\/p>\n\n<p><strong>Metadata Retriever e Vector Store: Buscando especificidade<\/strong><\/p>\n\n<p>Um dos pr\u00f3ximos caminhos que explorei foi o uso de um recuperador de metadados combinado com um armazenamento de vetores.\nA ideia por tr\u00e1s dessa abordagem era categorizar a vasta gama de informa\u00e7\u00f5es na Fabrice AI e, em seguida, recuperar respostas com base nessas categorias.\nAo estruturar os dados com metadados, eu esperava melhorar a capacidade da IA de fornecer respostas espec\u00edficas e direcionadas.  <\/p>\n\n<p>No entanto, esse m\u00e9todo tamb\u00e9m tinha suas limita\u00e7\u00f5es.\nEmbora parecesse promissor na superf\u00edcie, a IA teve dificuldades para fornecer respostas precisas a todos os tipos de consultas.\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, ele retornou respostas vagas ou nenhuma resposta.    <\/p>\n\n<p>Essa abordagem me ensinou uma li\u00e7\u00e3o valiosa sobre a import\u00e2ncia do contexto na IA.\nN\u00e3o basta simplesmente categorizar as informa\u00e7\u00f5es; a IA tamb\u00e9m deve entender como essas categorias interagem e se sobrep\u00f5em para formar um entendimento coeso do conte\u00fado.\nSem essa profundidade de compreens\u00e3o, at\u00e9 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 refinar a IA do Fabrice, experimentei criar um SummaryTreeIndex.\nEssa abordagem visava resumir todos os documentos em um formato de \u00e1rvore, permitindo que a IA navegasse por esses 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 principais e responder \u00e0s consultas com informa\u00e7\u00f5es concisas e precisas.\nNo entanto, esse m\u00e9todo tamb\u00e9m enfrentou desafios significativos.\nA IA teve dificuldades para fornecer respostas significativas a consultas complexas, como &#8220;Como tomar decis\u00f5es importantes na vida?&#8221;\nEm vez de aproveitar o conte\u00fado rico e cheio de nuances armazenado nos resumos, as respostas da IA geralmente eram superficiais ou incompletas.   <\/p>\n\n<p>Essa experi\u00eancia ressaltou a dificuldade de equilibrar amplitude e profundidade na IA.\nEmbora os resumos possam fornecer uma vis\u00e3o geral de alto n\u00edvel, eles geralmente n\u00e3o t\u00eam o contexto detalhado necess\u00e1rio para responder a perguntas mais complexas.\nPercebi que qualquer solu\u00e7\u00e3o eficaz precisaria integrar tanto o conte\u00fado detalhado quanto os resumos de alto n\u00edvel, permitindo que a IA utilizasse ambos conforme necess\u00e1rio.  <\/p>\n\n<p>\u00c9 por isso que, na vers\u00e3o do Fabrice AI que est\u00e1 no ar atualmente, eu fa\u00e7o com que a IA forne\u00e7a primeiro um resumo da resposta, antes de entrar em mais detalhes.<\/p>\n\n<p><strong>Expandindo os horizontes: \u00cdndice do Gr\u00e1fico de Conhecimento<\/strong><\/p>\n\n<p>Reconhecendo as limita\u00e7\u00f5es dos m\u00e9todos anteriores, optei por uma abordagem mais sofisticada: o Knowledge Graph Index.\nEssa abordagem envolveu a constru\u00e7\u00e3o de um gr\u00e1fico de conhecimento 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 interconectada do conte\u00fado, permitindo que a IA da Fabrice respondesse a perguntas complexas e com muito contexto de forma mais eficaz.  <\/p>\n\n<p>Apesar de sua promessa, o Knowledge Graph Index tamb\u00e9m enfrentou obst\u00e1culos significativos.\nA IA teve dificuldades para produzir resultados precisos, principalmente para consultas que exigiam uma compreens\u00e3o profunda do contexto.\nPor exemplo, quando perguntado: &#8220;What are fair Seed &amp; Series A valuations?&#8221; (Quais s\u00e3o as avalia\u00e7\u00f5es justas da Seed e da S\u00e9rie A?), a IA novamente n\u00e3o conseguiu fornecer uma resposta relevante, destacando a dificuldade de integrar texto n\u00e3o estruturado em um gr\u00e1fico de conhecimento coerente.  <\/p>\n\n<p>Essa abordagem, embora n\u00e3o tenha sido bem-sucedida, forneceu informa\u00e7\u00f5es importantes sobre os desafios do uso de gr\u00e1ficos de conhecimento em IA.\nA complexidade dos dados e a necessidade de um contexto preciso significavam que mesmo um gr\u00e1fico de conhecimento bem constru\u00eddo poderia ter dificuldades para fornecer os resultados desejados.\nOutra desvantagem do Knowledge Graph Index era sua baixa velocidade.\nO tempo de resposta para obter documentos relacionados era muito alto em rela\u00e7\u00e3o a um \u00edndice de armazenamento de vetores.   <\/p>\n\n<p><strong>Reavaliando os dados: G\u00eameos<\/strong><\/p>\n\n<p>Depois de v\u00e1rios contratempos, decidi adotar uma abordagem diferente, aproveitando a IA do Google, o <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 arquivos JSON-CSV e, em seguida, treinar um modelo LLM personalizado usando esses dados.\nEu esperava que, usando dados estruturados e um modelo de treinamento robusto, eu pudesse superar alguns dos desafios que haviam atormentado as tentativas anteriores.  <\/p>\n\n<p>No entanto, essa abordagem tamb\u00e9m encontrou dificuldades.\nO processo de treinamento foi interrompido devido \u00e0 formata\u00e7\u00e3o incorreta dos dados, o que impediu que o modelo fosse treinado de forma eficaz.\nEsse contratempo ressaltou a import\u00e2ncia da integridade dos dados no treinamento de IA.\nSem dados estruturados e formatados corretamente, at\u00e9 mesmo os modelos mais avan\u00e7ados podem n\u00e3o ter o desempenho esperado.   <\/p>\n\n<p>Essa experi\u00eancia me levou a considerar o potencial de usar o BigQuery para armazenar dados JSON, fornecendo uma plataforma mais dimension\u00e1vel e confi\u00e1vel para gerenciar os grandes conjuntos de dados necess\u00e1rios para treinar a Fabrice AI de forma eficaz.<\/p>\n\n<p><strong>Combinando pontos fortes: Documentos Langchain com Pinecone<\/strong><\/p>\n\n<p>Apesar dos desafios enfrentados at\u00e9 agora, eu estava determinado a encontrar uma solu\u00e7\u00e3o que permitisse \u00e0 Fabrice AI armazenar e recuperar conhecimento de forma eficaz.\nEssa determina\u00e7\u00e3o me levou a fazer experi\u00eancias com documentos Langchain e Pinecone.\nA abordagem envolveu a cria\u00e7\u00e3o de um armazenamento de vetores Pinecone usando documentos Langchain e embeddings OpenAI e, em seguida, a recupera\u00e7\u00e3o dos principais documentos semelhantes com base na consulta.  <\/p>\n\n<p>Esse m\u00e9todo se mostrou promissor, principalmente quando a consulta inclu\u00eda o t\u00edtulo do documento.\nPor exemplo, quando perguntado: &#8220;Qual \u00e9 a chave para a felicidade?&#8221;, a IA conseguiu recuperar e resumir o conte\u00fado relevante com precis\u00e3o.\nEntretanto, ainda havia limita\u00e7\u00f5es, principalmente quando a consulta n\u00e3o continha palavras-chave ou t\u00edtulos espec\u00edficos.  <\/p>\n\n<p>Essa abordagem demonstrou o potencial da combina\u00e7\u00e3o de diferentes tecnologias para aprimorar o desempenho da IA.\nAo integrar os documentos da Langchain com o armazenamento de vetores da 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\u00e7ando 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 refinar o conhecimento armazenado na Fabrice AI.\nAo carregar todo o conte\u00fado em uma base de conhecimento GPT, pretendi criar uma plataforma mais consistente e confi\u00e1vel para recuperar e interagir com meu conhecimento. <\/p>\n\n<p>Essa abordagem provou ser uma das mais bem-sucedidas, com a IA capaz de fornecer melhores resultados em uma s\u00e9rie de consultas.\nA chave para esse sucesso foi a integra\u00e7\u00e3o de todo o conhecimento em um sistema \u00fanico e coeso, permitindo que a IA aproveitasse toda a amplitude do conte\u00fado ao responder \u00e0s perguntas. <\/p>\n\n<p>Como mencionei em meu post anterior, n\u00e3o consegui fazer com que ele funcionasse em meu site, e ele s\u00f3 estava dispon\u00edvel para assinantes pagos do Chat GPT, o que eu achava muito limitado.\nAl\u00e9m disso, embora estivesse melhor, eu ainda n\u00e3o gostava da qualidade das respostas e n\u00e3o me sentia \u00e0 vontade para 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 pe\u00e7a final do quebra-cabe\u00e7a no desenvolvimento da Fabrice AI veio 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\">GPT Assistants<\/a> usando o Modelo 4o.\nEssa abordagem representou o ponto culminante de tudo o que aprendi ao longo do projeto.\nAo utilizar um banco de dados de vetores e refinar os prompts, meu objetivo era atingir o n\u00edvel mais alto poss\u00edvel de precis\u00e3o e compreens\u00e3o contextual nas respostas da IA.  <\/p>\n\n<p>Esse m\u00e9todo envolveu o upload de todo o conhecimento que eu havia acumulado em um banco de dados vetorial, que foi usado como base para as intera\u00e7\u00f5es da IA.\nO banco de dados vetorial permitiu que a IA realizasse pesquisas mais sofisticadas, recuperando informa\u00e7\u00f5es com base no significado sem\u00e2ntico das consultas, em vez de depender apenas da correspond\u00eancia de palavras-chave.\nIsso representou um avan\u00e7o significativo em rela\u00e7\u00e3o \u00e0s abordagens anteriores, permitindo que a IA compreendesse melhor e respondesse a perguntas complexas e com nuances.  <\/p>\n\n<p>Uma das principais inova\u00e7\u00f5es dessa 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.\nIsso envolveu n\u00e3o apenas ajustar o texto dos prompts, mas tamb\u00e9m experimentar diferentes maneiras de estruturar as consultas para obter as melhores respostas poss\u00edveis.  <br\/><br\/>Os resultados foram impressionantes.\nA IA agora era capaz de lidar com uma ampla gama de consultas com alta precis\u00e3o, mesmo quando as perguntas eram abertas ou exigiam uma compreens\u00e3o profunda do contexto.\nPor exemplo, quando perguntaram a voc\u00ea: &#8220;Como tomar as decis\u00f5es mais importantes da sua vida?&#8221;\nA IA forneceu uma resposta abrangente e perspicaz, baseando-se em uma variedade de fontes e perspectivas para fornecer uma resposta completa.   <\/p>\n\n<p>Esse sucesso foi o resultado de centenas de horas de trabalho e in\u00fameros experimentos.\nEle demonstrou que, com a combina\u00e7\u00e3o certa de tecnologia e refinamento, era poss\u00edvel criar uma IA que pudesse n\u00e3o apenas armazenar e recuperar informa\u00e7\u00f5es de forma eficaz, mas tamb\u00e9m interagir com elas de maneira significativa.\nO desenvolvimento dos GPT Assistants usando o Modelo 4o marcou o ponto em que a IA da Fabrice realmente se tornou realidade, atingindo o n\u00edvel de sofistica\u00e7\u00e3o e precis\u00e3o que eu havia imaginado desde o in\u00edcio.\nA API do GPT Assistants foi ent\u00e3o integrada ao meu blog para permitir que os usu\u00e1rios finais interagissem com a Fabrice AI da maneira como voc\u00ea a v\u00ea no blog agora.   <\/p>\n\n<p><strong>Refletindo sobre a jornada<\/strong><\/p>\n\n<p>O processo de desenvolvimento da Fabrice AI destacou as complexidades do trabalho com IA, principalmente quando se trata de compreender e contextualizar informa\u00e7\u00f5es.\nIsso me ensinou que n\u00e3o h\u00e1 atalhos no desenvolvimento de IA &#8211; cada etapa, cada itera\u00e7\u00e3o e cada experimento \u00e9 uma parte necess\u00e1ria da jornada para criar algo realmente eficaz. <\/p>\n\n<p>Olhando para o futuro, estou animado para continuar refinando e expandindo a Fabrice AI.\nConforme mencionado na \u00faltima postagem, analisarei as perguntas feitas para completar a base de conhecimento onde houver lacunas.\nTamb\u00e9m espero lan\u00e7ar uma vers\u00e3o interativa que se pare\u00e7a comigo e com a qual voc\u00ea possa conversar.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como mencionei na publica\u00e7\u00e3o anterior, o desenvolvimento do Fabrice AI se mostrou muito mais complexo do que o esperado, o que me obrigou a explorar v\u00e1rias abordagens diferentes. A abordagem &hellip; <a href=\"https:\/\/www.fabricegrinda.com\/pt-br\/fabrice-ai-a-jornada-tecnica\/\" class=\"more-link\">Continue lendo<span class=\"screen-reader-text\"> &#8220;Fabrice AI: a jornada t\u00e9cnica&#8221;<\/span><\/a><\/p>\n","protected":false},"author":9,"featured_media":46226,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[934,826],"tags":[],"class_list":["post-46249","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gadgets-tecnologicos-pt-br","category-reflexoes-pessoais"],"acf":[],"contentUpdated":"Fabrice AI: a jornada t\u00e9cnica. Categories - Gadgets tecnol\u00f3gicos, Reflex\u00f5es pessoais. Date-Posted - 2024-09-04T14:05:11 . \n Como mencionei na publica\u00e7\u00e3o anterior, o desenvolvimento do Fabrice AI se mostrou muito mais complexo do que o esperado, o que me obrigou a explorar v\u00e1rias abordagens diferentes.\n A abordagem inicial: \u00cdndice Llama &#8211; Pesquisa vetorial\n Minha primeira incurs\u00e3o no aprimoramento das habilidades de recupera\u00e7\u00e3o do Fabrice AI envolveu o uso do \u00cdndice Llama para pesquisa vetorial.\n O conceito era simples: pegar o conte\u00fado do meu blog, convert\u00ea-lo em documentos Langchain e, em seguida, transform\u00e1-los em documentos Llama.\n Esses documentos Llama seriam ent\u00e3o armazenados em um \u00edndice vetorial, o que me permitiria consultar esse \u00edndice para obter informa\u00e7\u00f5es relevantes.  \n No entanto, quando comecei a testar o sistema, ficou claro que essa abordagem n\u00e3o estava produzindo os resultados que eu esperava.\n Especificamente, quando eu consultava o sistema com perguntas de contexto pesado, como &#8220;Quais s\u00e3o os maiores erros que os fundadores de mercado cometem?&#8221;, a IA n\u00e3o conseguia fornecer respostas significativas.\n Em vez de recuperar o conte\u00fado diferenciado que eu sabia estar incorporado nos dados, ela retornava respostas irrelevantes ou incompletas.  \n Esse fracasso inicial me levou a reconsiderar minha abordagem.\n Percebi que simplesmente armazenar conte\u00fado em um \u00edndice vetorial n\u00e3o era suficiente; o mecanismo de recupera\u00e7\u00e3o precisava entender o contexto e as nuances das perguntas que estavam sendo feitas.\n Essa percep\u00e7\u00e3o foi a primeira de muitas li\u00e7\u00f5es que moldariam a evolu\u00e7\u00e3o da Fabrice AI.  \n Armazenamento de conhecimento: Armazenamento e recupera\u00e7\u00e3o de documentos do MongoDB\n Com as limita\u00e7\u00f5es da abordagem do \u00edndice Llama em mente, passei a explorar o armazenamento dos documentos do Llama no MongoDB.\n O esquema flex\u00edvel e a estrutura orientada a documentos do MongoDB pareciam ser uma solu\u00e7\u00e3o promissora para gerenciar os diversos tipos de conte\u00fado que eu havia acumulado ao longo dos anos. \n O plano era criar uma experi\u00eancia de pesquisa mais din\u00e2mica e responsiva.\n No entanto, essa abordagem teve problemas rapidamente.\n A funcionalidade de pesquisa, que eu havia previsto ser mais robusta, n\u00e3o funcionou como esperado.\n Em vez disso, as consultas que deveriam retornar documentos relevantes n\u00e3o produziam resultados ou apresentavam conte\u00fado irrelevante.   \n Esse contratempo foi frustrante, mas tamb\u00e9m ressaltou uma li\u00e7\u00e3o fundamental: o m\u00e9todo de armazenamento \u00e9 t\u00e3o importante quanto 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 vetoriais, que poderia fornecer a precis\u00e3o e a escalabilidade de que eu precisava.\n No entanto, antes de me comprometer com essa alternativa, eu queria explorar outras abordagens para determinar se haveria uma solu\u00e7\u00e3o mais eficaz.  \n Metadata Retriever e Vector Store: Buscando especificidade\n Um dos pr\u00f3ximos caminhos que explorei foi o uso de um recuperador de metadados combinado com um armazenamento de vetores.\n A ideia por tr\u00e1s dessa abordagem era categorizar a vasta gama de informa\u00e7\u00f5es na Fabrice AI e, em seguida, recuperar respostas com base nessas categorias.\n Ao estruturar os dados com metadados, eu esperava melhorar a capacidade da IA de fornecer respostas espec\u00edficas e direcionadas.  \n No entanto, esse m\u00e9todo tamb\u00e9m tinha suas limita\u00e7\u00f5es.\n Embora parecesse promissor na superf\u00edcie, a IA teve dificuldades para fornecer respostas precisas a todos os tipos de consultas.\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, ele retornou respostas vagas ou nenhuma resposta.    \n Essa abordagem me ensinou uma li\u00e7\u00e3o valiosa sobre a import\u00e2ncia do contexto na IA.\n N\u00e3o basta simplesmente categorizar as informa\u00e7\u00f5es; a IA tamb\u00e9m deve entender como essas categorias interagem e se sobrep\u00f5em para formar um entendimento coeso do conte\u00fado.\n Sem essa profundidade de compreens\u00e3o, at\u00e9 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 refinar a IA do Fabrice, experimentei criar um SummaryTreeIndex.\n Essa abordagem visava resumir todos os documentos em um formato de \u00e1rvore, permitindo que a IA navegasse por esses 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 principais e responder \u00e0s consultas com informa\u00e7\u00f5es concisas e precisas.\n No entanto, esse m\u00e9todo tamb\u00e9m enfrentou desafios significativos.\n A IA teve dificuldades para fornecer respostas significativas a consultas complexas, como &#8220;Como tomar decis\u00f5es importantes na vida?&#8221;\n Em vez de aproveitar o conte\u00fado rico e cheio de nuances armazenado nos resumos, as respostas da IA geralmente eram superficiais ou incompletas.   \n Essa experi\u00eancia ressaltou a dificuldade de equilibrar amplitude e profundidade na IA.\n Embora os resumos possam fornecer uma vis\u00e3o geral de alto n\u00edvel, eles geralmente n\u00e3o t\u00eam o contexto detalhado necess\u00e1rio para responder a perguntas mais complexas.\n Percebi que qualquer solu\u00e7\u00e3o eficaz precisaria integrar tanto o conte\u00fado detalhado quanto os resumos de alto n\u00edvel, permitindo que a IA utilizasse ambos conforme necess\u00e1rio.  \n \u00c9 por isso que, na vers\u00e3o do Fabrice AI que est\u00e1 no ar atualmente, eu fa\u00e7o com que a IA forne\u00e7a primeiro um resumo da resposta, antes de entrar em mais detalhes.\n Expandindo os horizontes: \u00cdndice do Gr\u00e1fico de Conhecimento\n Reconhecendo as limita\u00e7\u00f5es dos m\u00e9todos anteriores, optei por uma abordagem mais sofisticada: o Knowledge Graph Index.\n Essa abordagem envolveu a constru\u00e7\u00e3o de um gr\u00e1fico de conhecimento 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 interconectada do conte\u00fado, permitindo que a IA da Fabrice respondesse a perguntas complexas e com muito contexto de forma mais eficaz.  \n Apesar de sua promessa, o Knowledge Graph Index tamb\u00e9m enfrentou obst\u00e1culos significativos.\n A IA teve dificuldades para produzir resultados precisos, principalmente para consultas que exigiam uma compreens\u00e3o profunda do contexto.\n Por exemplo, quando perguntado: &#8220;What are fair Seed &amp; Series A valuations?&#8221; (Quais s\u00e3o as avalia\u00e7\u00f5es justas da Seed e da S\u00e9rie A?), a IA novamente n\u00e3o conseguiu fornecer uma resposta relevante, destacando a dificuldade de integrar texto n\u00e3o estruturado em um gr\u00e1fico de conhecimento coerente.  \n Essa abordagem, embora n\u00e3o tenha sido bem-sucedida, forneceu informa\u00e7\u00f5es importantes sobre os desafios do uso de gr\u00e1ficos de conhecimento em IA.\n A complexidade dos dados e a necessidade de um contexto preciso significavam que mesmo um gr\u00e1fico de conhecimento bem constru\u00eddo poderia ter dificuldades para fornecer os resultados desejados.\n Outra desvantagem do Knowledge Graph Index era sua baixa velocidade.\n O tempo de resposta para obter documentos relacionados era muito alto em rela\u00e7\u00e3o a um \u00edndice de armazenamento de vetores.   \n Reavaliando os dados: G\u00eameos\n Depois de v\u00e1rios contratempos, decidi adotar uma abordagem diferente, aproveitando a IA do Google, o Gemini.\n A ideia era criar conjuntos de dados a partir de arquivos JSON-CSV e, em seguida, treinar um modelo LLM personalizado usando esses dados.\n Eu esperava que, usando dados estruturados e um modelo de treinamento robusto, eu pudesse superar alguns dos desafios que haviam atormentado as tentativas anteriores.  \n No entanto, essa abordagem tamb\u00e9m encontrou dificuldades.\n O processo de treinamento foi interrompido devido \u00e0 formata\u00e7\u00e3o incorreta dos dados, o que impediu que o modelo fosse treinado de forma eficaz.\n Esse contratempo ressaltou a import\u00e2ncia da integridade dos dados no treinamento de IA.\n Sem dados estruturados e formatados corretamente, at\u00e9 mesmo os modelos mais avan\u00e7ados podem n\u00e3o ter o desempenho esperado.   \n Essa experi\u00eancia me levou a considerar o potencial de usar o BigQuery para armazenar dados JSON, fornecendo uma plataforma mais dimension\u00e1vel e confi\u00e1vel para gerenciar os grandes conjuntos de dados necess\u00e1rios para treinar a Fabrice AI de forma eficaz.\n Combinando pontos fortes: Documentos Langchain com Pinecone\n Apesar dos desafios enfrentados at\u00e9 agora, eu estava determinado a encontrar uma solu\u00e7\u00e3o que permitisse \u00e0 Fabrice AI armazenar e recuperar conhecimento de forma eficaz.\n Essa determina\u00e7\u00e3o me levou a fazer experi\u00eancias com documentos Langchain e Pinecone.\n A abordagem envolveu a cria\u00e7\u00e3o de um armazenamento de vetores Pinecone usando documentos Langchain e embeddings OpenAI e, em seguida, a recupera\u00e7\u00e3o dos principais documentos semelhantes com base na consulta.  \n Esse m\u00e9todo se mostrou promissor, principalmente quando a consulta inclu\u00eda o t\u00edtulo do documento.\n Por exemplo, quando perguntado: &#8220;Qual \u00e9 a chave para a felicidade?&#8221;, a IA conseguiu recuperar e resumir o conte\u00fado relevante com precis\u00e3o.\n Entretanto, ainda havia limita\u00e7\u00f5es, principalmente quando a consulta n\u00e3o continha palavras-chave ou t\u00edtulos espec\u00edficos.  \n Essa abordagem demonstrou o potencial da combina\u00e7\u00e3o de diferentes tecnologias para aprimorar o desempenho da IA.\n Ao integrar os documentos da Langchain com o armazenamento de vetores da Pinecone, consegui melhorar a relev\u00e2ncia e a precis\u00e3o das respostas da IA, embora com algumas limita\u00e7\u00f5es. \n Alcan\u00e7ando 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 refinar o conhecimento armazenado na Fabrice AI.\n Ao carregar todo o conte\u00fado em uma base de conhecimento GPT, pretendi criar uma plataforma mais consistente e confi\u00e1vel para recuperar e interagir com meu conhecimento. \n Essa abordagem provou ser uma das mais bem-sucedidas, com a IA capaz de fornecer melhores resultados em uma s\u00e9rie de consultas.\n A chave para esse sucesso foi a integra\u00e7\u00e3o de todo o conhecimento em um sistema \u00fanico e coeso, permitindo que a IA aproveitasse toda a amplitude do conte\u00fado ao responder \u00e0s perguntas. \n Como mencionei em meu post anterior, n\u00e3o consegui fazer com que ele funcionasse em meu site, e ele s\u00f3 estava dispon\u00edvel para assinantes pagos do Chat GPT, o que eu achava muito limitado.\n Al\u00e9m disso, embora estivesse melhor, eu ainda n\u00e3o gostava da qualidade das respostas e n\u00e3o me sentia \u00e0 vontade para divulg\u00e1-las ao p\u00fablico. \n Refinamento final: Assistentes de GPT usando o Modelo 4o\n A pe\u00e7a final do quebra-cabe\u00e7a no desenvolvimento da Fabrice AI veio com a introdu\u00e7\u00e3o dos GPT Assistants usando o Modelo 4o.\n Essa abordagem representou o ponto culminante de tudo o que aprendi ao longo do projeto.\n Ao utilizar um banco de dados de vetores e refinar os prompts, meu objetivo era atingir o n\u00edvel mais alto poss\u00edvel de precis\u00e3o e compreens\u00e3o contextual nas respostas da IA.  \n Esse m\u00e9todo envolveu o upload de todo o conhecimento que eu havia acumulado em um banco de dados vetorial, que foi usado como base para as intera\u00e7\u00f5es da IA.\n O banco de dados vetorial permitiu que a IA realizasse pesquisas mais sofisticadas, recuperando informa\u00e7\u00f5es com base no significado sem\u00e2ntico das consultas, em vez de depender apenas da correspond\u00eancia de palavras-chave.\n Isso representou um avan\u00e7o significativo em rela\u00e7\u00e3o \u00e0s abordagens anteriores, permitindo que a IA compreendesse melhor e respondesse a perguntas complexas e com nuances.  \n Uma das principais inova\u00e7\u00f5es dessa 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 Isso envolveu n\u00e3o apenas ajustar o texto dos prompts, mas tamb\u00e9m experimentar diferentes maneiras de estruturar as consultas para obter as melhores respostas poss\u00edveis.  Os resultados foram impressionantes.\n A IA agora era capaz de lidar com uma ampla gama de consultas com alta precis\u00e3o, mesmo quando as perguntas eram abertas ou exigiam uma compreens\u00e3o profunda do contexto.\n Por exemplo, quando perguntaram a voc\u00ea: &#8220;Como tomar as decis\u00f5es mais importantes da sua vida?&#8221;\n A IA forneceu uma resposta abrangente e perspicaz, baseando-se em uma variedade de fontes e perspectivas para fornecer uma resposta completa.   \n Esse sucesso foi o resultado de centenas de horas de trabalho e in\u00fameros experimentos.\n Ele demonstrou que, com a combina\u00e7\u00e3o certa de tecnologia e refinamento, era poss\u00edvel criar uma IA que pudesse n\u00e3o apenas armazenar e recuperar informa\u00e7\u00f5es de forma eficaz, mas tamb\u00e9m interagir com elas de maneira significativa.\n O desenvolvimento dos GPT Assistants usando o Modelo 4o marcou o ponto em que a IA da Fabrice realmente se tornou realidade, atingindo o n\u00edvel de sofistica\u00e7\u00e3o e precis\u00e3o que eu havia imaginado desde o in\u00edcio.\n A API do GPT Assistants foi ent\u00e3o integrada ao meu blog para permitir que os usu\u00e1rios finais interagissem com a Fabrice AI da maneira como voc\u00ea a v\u00ea no blog agora.   \n Refletindo sobre a jornada\n O processo de desenvolvimento da Fabrice AI destacou as complexidades do trabalho com IA, principalmente quando se trata de compreender e contextualizar informa\u00e7\u00f5es.\n Isso me ensinou que n\u00e3o h\u00e1 atalhos no desenvolvimento de IA &#8211; cada etapa, cada itera\u00e7\u00e3o e cada experimento \u00e9 uma parte necess\u00e1ria da jornada para criar algo realmente eficaz. \n Olhando para o futuro, estou animado para continuar refinando e expandindo a Fabrice AI.\n Conforme mencionado na \u00faltima postagem, analisarei as perguntas feitas para completar a base de conhecimento onde houver lacunas.\n Tamb\u00e9m espero lan\u00e7ar uma vers\u00e3o interativa que se pare\u00e7a comigo e com a qual voc\u00ea possa conversar.  \n ","Category":["Gadgets tecnol\u00f3gicos","Reflex\u00f5es pessoais"],"_links":{"self":[{"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/posts\/46249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/comments?post=46249"}],"version-history":[{"count":1,"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/posts\/46249\/revisions"}],"predecessor-version":[{"id":46251,"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/posts\/46249\/revisions\/46251"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/media\/46226"}],"wp:attachment":[{"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/media?parent=46249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/categories?post=46249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grinda.org\/pt-br\/wp-json\/wp\/v2\/tags?post=46249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}