{"id":5306,"date":"2026-03-30T05:55:15","date_gmt":"2026-03-30T05:55:15","guid":{"rendered":"https:\/\/www.markus-schall.de\/?p=5306"},"modified":"2026-04-17T14:30:59","modified_gmt":"2026-04-17T14:30:59","slug":"da-exportacao-de-dados-do-chatgpt-para-o-seu-proprio-knowledge-ki-passo-a-passo-com-ollama-e-qdrant","status":"publish","type":"post","link":"https:\/\/www.markus-schall.de\/pt\/2026\/03\/da-exportacao-de-dados-do-chatgpt-para-o-seu-proprio-knowledge-ki-passo-a-passo-com-ollama-e-qdrant\/","title":{"rendered":"Da exporta\u00e7\u00e3o de dados ChatGPT para a sua pr\u00f3pria IA do conhecimento: passo a passo com Ollama e Qdrant"},"content":{"rendered":"<p>Na primeira parte desta s\u00e9rie de artigos, vimos que a exporta\u00e7\u00e3o de dados do ChatGPT \u00e9 muito mais do que apenas uma fun\u00e7\u00e3o t\u00e9cnica. Os seus dados exportados cont\u00eam uma cole\u00e7\u00e3o de pensamentos, ideias, an\u00e1lises e conversas que se acumularam durante um longo per\u00edodo de tempo. Mas enquanto estes dados estiverem apenas armazenados como um arquivo no seu disco r\u00edgido, continuam a ser apenas isso: um arquivo. O passo crucial \u00e9 tornar esta informa\u00e7\u00e3o novamente utiliz\u00e1vel. \u00c9 exatamente aqui que come\u00e7a o desenvolvimento de uma IA de conhecimento pessoal.<\/p>\n<p>A ideia \u00e9 surpreendentemente simples: uma IA n\u00e3o deve apenas trabalhar com conhecimentos gerais, mas tamb\u00e9m ser capaz de aceder aos seus pr\u00f3prios dados. Deve ser capaz de pesquisar conversas anteriores, encontrar conte\u00fados adequados e incorpor\u00e1-los em novas respostas. Isto transforma uma IA normal numa esp\u00e9cie de mem\u00f3ria digital. Esta \u00e9 a segunda parte da s\u00e9rie de artigos, que agora aborda o lado pr\u00e1tico das coisas.<!--more--><\/p>\n<hr \/>\n\n\t\t\t<div class=\"display-post-types\">\n\n\t\t\t\t\t\t\t<style type=\"text\/css\">\n\t\t\t#dpt-wrapper-497 { --dpt-text-align: left;--dpt-image-crop: center;--dpt-border-radius: 5px;--dpt-h-gutter: 10px;--dpt-v-gutter: 9px; }\t\t\t<\/style>\n\t\t\t<style type=\"text\/css\">#dpt-wrapper-497 { --dpt-title-font-style:normal;--dpt-title-font-weight:600;--dpt-title-line-height:1.5;--dpt-title-text-decoration:none;--dpt-title-text-transform:none;--dpt-excerpt-font-style:normal;--dpt-excerpt-font-weight:400;--dpt-excerpt-line-height:1.5;--dpt-excerpt-text-decoration:none;--dpt-excerpt-text-transform:none;--dpt-meta1-font-style:normal;--dpt-meta1-font-weight:400;--dpt-meta1-line-height:1.9;--dpt-meta1-text-decoration:none;--dpt-meta1-text-transform:none;--dpt-meta2-font-style:normal;--dpt-meta2-font-weight:400;--dpt-meta2-line-height:1.9;--dpt-meta2-text-decoration:none;--dpt-meta2-text-transform:none; }<\/style><div class=\"dpt-main-header\">\n\t\t\t\t\t\t<div class=\"dpt-main-title\">\n\t\t\t\t\t\t\t<span class=\"dpt-main-title-text\">Quest\u00f5es sociais da atualidade<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t<\/div>\t\t\t\n\t\t\t\t<div id=\"dpt-wrapper-497\" class=\"dpt-wrapper dpt-mag1 land1 dpt-cropped dpt-flex-wrap\" >\n\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"fracking, lng und energiepolitik: eine n\u00fcchterne analyse von risiken, chancen und realit\u00e4t\" data-id=\"5579\"  data-category=\"allgemein gesellschaft gesundheit\" data-post_tag=\"deutschland energiepolitik europa geopolitik krisen\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/04\/fracking-lng-e-politica-energetica-uma-analise-sobria-dos-riscos-oportunidades-e-realidade\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Fracking, GNL e pol\u00edtica energ\u00e9tica: uma an\u00e1lise s\u00f3bria dos riscos, oportunidades e realidade<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Fracking de g\u00e1s natural e pol\u00edtica energ\u00e9tica\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Fracking-Energiepolitik.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Fracking-Energiepolitik.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Fracking-Energiepolitik-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Fracking-Energiepolitik-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Fracking-Energiepolitik-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2026\/04\/fracking-lng-e-politica-energetica-uma-analise-sobria-dos-riscos-oportunidades-e-realidade\/\" rel=\"bookmark\">Fracking, GNL e pol\u00edtica energ\u00e9tica: uma an\u00e1lise s\u00f3bria dos riscos, oportunidades e realidade<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"mehr als punk: nina hagen, cosma shiva und die kunst, sich nicht vereinnahmen zu lassen\" data-id=\"4521\"  data-category=\"allgemein gesellschaft kunst &amp; kultur\" data-post_tag=\"auswandern deutschland erfahrungen europa krisen meinungsfreiheit musik portrait\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/01\/more-than-punk-nina-hagen-cosma-shiva-and-the-art-of-not-being-taken-in\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Mais do que punk: Nina Hagen, Cosma Shiva e a arte de n\u00e3o se deixar enganar<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Retrato de Nina e Cosma Shiva Hagen\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Nina-Cosma-Shiva-Hagen-Titel.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Nina-Cosma-Shiva-Hagen-Titel.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Nina-Cosma-Shiva-Hagen-Titel-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Nina-Cosma-Shiva-Hagen-Titel-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Nina-Cosma-Shiva-Hagen-Titel-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2026\/01\/more-than-punk-nina-hagen-cosma-shiva-and-the-art-of-not-being-taken-in\/\" rel=\"bookmark\">Mais do que punk: Nina Hagen, Cosma Shiva e a arte de n\u00e3o se deixar enganar<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"reichweite ist kein eigentum \u2013 warum sichtbarkeit heute nicht mehr ausreicht\" data-id=\"3994\"  data-category=\"allgemein featured filemaker &amp; erp gesellschaft kunst &amp; kultur\" data-post_tag=\"datenlogik datenschutz denkmodelle digitales eigentum erp-software\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2025\/12\/alcance-nao-e-propriedade-porque-e-que-a-visibilidade-ja-nao-e-suficiente-hoje-em-dia\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Alcance n\u00e3o \u00e9 propriedade - Porque \u00e9 que a visibilidade j\u00e1 n\u00e3o \u00e9 suficiente hoje em dia<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Alcance vs. propriedade\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/reichweite-vs-eigentum.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/reichweite-vs-eigentum.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/reichweite-vs-eigentum-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/reichweite-vs-eigentum-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/reichweite-vs-eigentum-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2025\/12\/alcance-nao-e-propriedade-porque-e-que-a-visibilidade-ja-nao-e-suficiente-hoje-em-dia\/\" rel=\"bookmark\">Alcance n\u00e3o \u00e9 propriedade - Porque \u00e9 que a visibilidade j\u00e1 n\u00e3o \u00e9 suficiente hoje em dia<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"wie tiere zeit wahrnehmen \u2013 und was das f\u00fcr die zukunft der ki bedeutet\" data-id=\"4918\"  data-category=\"allgemein gesellschaft ki-systeme\" data-post_tag=\"denkmodelle erfahrungen k\u00fcnstliche intelligenz llm portrait prozesse sprachmodell\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/02\/como-os-animais-percepcionam-o-tempo-e-o-que-isso-significa-para-o-futuro-da-ki\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Como os animais percepcionam o tempo - e o que isso significa para o futuro da IA<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Animais, IA e perce\u00e7\u00e3o do tempo\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2026\/02\/como-os-animais-percepcionam-o-tempo-e-o-que-isso-significa-para-o-futuro-da-ki\/\" rel=\"bookmark\">Como os animais percepcionam o tempo - e o que isso significa para o futuro da IA<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\n<hr \/>\n<h2>Parte 1 da s\u00e9rie: O tesouro subestimado na exporta\u00e7\u00e3o de dados do ChatGPT<\/h2>\n<p>Enquanto entramos na parte pr\u00e1tica das coisas nesta segunda parte, vale a pena dar uma vista de olhos na <a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/03\/a-exportacao-de-dados-chatgpt-explica-como-as-suas-conversas-ki-se-tornam-um-sistema-de-conhecimento-pessoal\/\"><strong>primeiro artigo desta s\u00e9rie<\/strong><\/a>. O artigo aborda a quest\u00e3o fundamental da raz\u00e3o pela qual a exporta\u00e7\u00e3o de dados do ChatGPT \u00e9 t\u00e3o interessante - e porque \u00e9 que muitos utilizadores ainda subestimam o seu potencial. O artigo mostra quais os dados que est\u00e3o efetivamente contidos na exporta\u00e7\u00e3o, como podem ser utilizados para criar um arquivo de conhecimentos pessoais e porque \u00e9 que este passo constitui a base para a sua pr\u00f3pria IA com mem\u00f3ria. Se quiser compreender por que raz\u00e3o estamos a construir esta conduta e qual o valor estrat\u00e9gico dos seus pr\u00f3prios hist\u00f3ricos de conversa\u00e7\u00e3o, deve come\u00e7ar pela Parte 1.<\/p>\n<p>Antes de come\u00e7armos com a implementa\u00e7\u00e3o efectiva no pr\u00f3ximo cap\u00edtulo, vejamos primeiro como \u00e9 que um sistema deste tipo est\u00e1 fundamentalmente estruturado.<\/p>\n<hr \/>\n<h2>A ideia de base de um sistema RAG<\/h2>\n<p>A base t\u00e9cnica do nosso sistema \u00e9 um conceito que \u00e9 atualmente muito utilizado no mundo da IA: RAG, ou Retrieval Augmented Generation. Por detr\u00e1s deste termo est\u00e1 um princ\u00edpio muito pr\u00e1tico.<\/p>\n<p>Normalmente, um modelo lingu\u00edstico responde a perguntas exclusivamente com o conhecimento que foi aprendido durante o seu treino. Embora este conhecimento seja extenso, tem duas limita\u00e7\u00f5es decisivas:<\/p>\n<ul>\n<li>Em primeiro lugar, o modelo n\u00e3o conhece qualquer informa\u00e7\u00e3o individual sobre os seus pr\u00f3prios projectos ou pensamentos.<\/li>\n<li>Em segundo lugar, n\u00e3o pode aceder a novos dados criados ap\u00f3s a forma\u00e7\u00e3o.<\/li>\n<\/ul>\n<p>\u00c9 exatamente aqui que entra um sistema RAG. Em vez de gerar uma resposta diretamente, acontece primeiro outra coisa: o sistema procura numa base de dados o conte\u00fado que corresponde \u00e0 pergunta colocada. Este conte\u00fado \u00e9 ent\u00e3o transferido para o modelo lingu\u00edstico como contexto. S\u00f3 depois \u00e9 que a IA formula a sua resposta. Em termos simples, o processo \u00e9 o seguinte:<\/p>\n<ol>\n<li>Fazes uma pergunta \u2192<\/li>\n<li>o sistema pesquisa uma base de dados de conhecimentos \u2192<\/li>\n<li>\u00e9 encontrado conte\u00fado relevante \u2192<\/li>\n<li>Este conte\u00fado \u00e9 transferido para a IA como contexto \u2192<\/li>\n<li>a IA gera uma resposta.<\/li>\n<\/ol>\n<p>A vantagem decisiva \u00e9 \u00f3bvia: a IA pode utilizar informa\u00e7\u00f5es que n\u00e3o faziam parte da sua forma\u00e7\u00e3o inicial.<\/p>\n<p>E \u00e9 aqui que os dados do ChatGPT entram em jogo. Se integrarmos estas conversas numa base de dados de conhecimentos, a IA pode aceder-lhes mais tarde. Pode encontrar ideias anteriores, utilizar argumentos de di\u00e1logos antigos ou ter em conta an\u00e1lises de conversas passadas. O sistema come\u00e7a assim a \u201erecordar\u201c os seus pr\u00f3prios pensamentos.<\/p>\n<h3>Os elementos constitutivos do nosso sistema<\/h3>\n<p>Para que isto funcione, precisamos de v\u00e1rios componentes que trabalhem em conjunto. Felizmente, a infraestrutura t\u00e9cnica para isso \u00e9 muito mais f\u00e1cil de aceder hoje do que era h\u00e1 alguns anos. No seu n\u00facleo, o nosso sistema \u00e9 composto por quatro componentes centrais.<\/p>\n<ol>\n<li>O primeiro bloco de constru\u00e7\u00e3o \u00e9 o <strong>Exporta\u00e7\u00e3o de dados ChatGPT<\/strong>. Aqui est\u00e3o os nossos dados em bruto. Estes cont\u00eam todas as conversas que tivemos anteriormente com a IA.<\/li>\n<li>O segundo bloco de constru\u00e7\u00e3o \u00e9 um <strong>Modelo de incorpora\u00e7\u00e3o<\/strong>. Este modelo traduz o texto em vectores matem\u00e1ticos. Isto permite comparar textos de acordo com o seu significado.<\/li>\n<li>O terceiro bloco de constru\u00e7\u00e3o \u00e9 um <strong>Base de dados vetorial<\/strong>. No nosso caso, utilizamos o Qdrant. Esta base de dados armazena as representa\u00e7\u00f5es matem\u00e1ticas dos textos e permite uma pesquisa sem\u00e2ntica r\u00e1pida.<\/li>\n<li>O quarto bloco de constru\u00e7\u00e3o \u00e9 um <strong>modelo lingu\u00edstico local<\/strong>, que funciona atrav\u00e9s do Ollama. Este modelo formular\u00e1 posteriormente as respostas efectivas.<\/li>\n<\/ol>\n<p>Estes quatro componentes trabalham em estreita colabora\u00e7\u00e3o.<\/p>\n<ol>\n<li>A exporta\u00e7\u00e3o de dados fornece o conte\u00fado.<\/li>\n<li>O modelo de incorpora\u00e7\u00e3o torna-os leg\u00edveis por m\u00e1quina.<\/li>\n<li>A base de dados vetorial guarda e pesquisa-os.<\/li>\n<li>O modelo de linguagem gera finalmente respostas compreens\u00edveis.<\/li>\n<\/ol>\n<p>Em conjunto, constituem a base de uma IA de conhecimento pessoal.<\/p>\n<h3>O fluxo de dados num relance<\/h3>\n<p>Para que o sistema funcione, os dados t\u00eam de passar por v\u00e1rias etapas. O primeiro passo \u00e9 a exporta\u00e7\u00e3o de dados do ChatGPT, que j\u00e1 cri\u00e1mos no primeiro artigo. As conversas que cont\u00e9m s\u00e3o primeiro extra\u00eddas dos ficheiros JSON. De seguida, estes textos t\u00eam de ser preparados. Os grandes hist\u00f3ricos de conversa\u00e7\u00f5es s\u00e3o divididos em sec\u00e7\u00f5es mais pequenas, as chamadas partes de texto. Isto torna a pesquisa subsequente muito mais eficiente.<\/p>\n<p>Na etapa seguinte, geramos embeddings a partir destas sec\u00e7\u00f5es de texto. Cada texto \u00e9 descrito matematicamente. Aos textos com um significado semelhante s\u00e3o atribu\u00eddos vectores semelhantes. Em seguida, guardamos estes vectores na nossa base de dados vetorial Qdrant.<\/p>\n<p>Isto significa que a parte mais importante da infraestrutura j\u00e1 est\u00e1 instalada. Se uma pergunta for feita mais tarde, acontece o seguinte:<\/p>\n<ol>\n<li>A pergunta tamb\u00e9m \u00e9 convertida num vetor.<\/li>\n<li>A base de dados procura textos com um significado semelhante.<\/li>\n<li>Estas passagens de texto s\u00e3o transferidas para o modelo lingu\u00edstico como contexto.<\/li>\n<li>O modelo utiliza esta informa\u00e7\u00e3o para formular uma resposta.<\/li>\n<\/ol>\n<p>Este processo garante que a IA n\u00e3o s\u00f3 utiliza conhecimentos gerais, como tamb\u00e9m pode aceder aos seus pr\u00f3prios dados.<\/p>\n<h3>O que ser\u00e1 poss\u00edvel no final<\/h3>\n<p>Depois de o sistema estar configurado, a forma de lidar com a IA muda visivelmente. J\u00e1 n\u00e3o est\u00e1 a trabalhar apenas com um modelo lingu\u00edstico geral, mas com uma IA que pode aceder aos seus pr\u00f3prios dados. Isto abre possibilidades completamente novas. Por exemplo, pode fazer perguntas como:<\/p>\n<blockquote><p><em>\u201eJ\u00e1 alguma vez falei com a IA sobre este assunto?\u201c<\/em><br \/>\n<em>\u201eQue ideias tinha eu sobre este projeto antes?\u201c<\/em><br \/>\n<em>\u201eQue argumentos desenvolvi em conversas anteriores?\u201c<\/em><\/p><\/blockquote>\n<p>A IA pesquisa ent\u00e3o as suas pr\u00f3prias conversas e encontra o conte\u00fado adequado. Em vez de dar apenas uma resposta geral, pode referir-se a pensamentos anteriores, resumir an\u00e1lises antigas ou reconhecer liga\u00e7\u00f5es entre diferentes conversas.<\/p>\n<p>Por outras palavras, a IA come\u00e7a a trabalhar com o seu pr\u00f3prio arquivo de conhecimentos. Isto transforma uma simples ferramenta de conversa\u00e7\u00e3o num sistema que pode apoiar o seu pensamento a longo prazo. E \u00e9 precisamente este sistema que vamos construir passo a passo nos pr\u00f3ximos cap\u00edtulos. Na pr\u00f3xima sec\u00e7\u00e3o, come\u00e7amos com o trabalho pr\u00e1tico e, em primeiro lugar, analisamos mais de perto a exporta\u00e7\u00e3o de dados do ChatGPT. Porque antes de podermos construir uma base de dados de conhecimentos, precisamos de compreender como os nossos dados est\u00e3o efetivamente estruturados.<\/p>\n<hr \/>\n<h3>Inqu\u00e9rito atual sobre a utiliza\u00e7\u00e3o de sistemas locais de IA<\/h3>\n<div class='bootstrap-yop yop-poll-mc'>\n\t\t\t\t\t\t\t<div class=\"basic-yop-poll-container\" style=\"background-color:#ffffff; border:0px; border-style:solid; border-color:#000000; border-radius:5px; padding:0px 5px;\" data-id=\"9\" data-temp=\"basic-pretty\" data-skin=\"square\" data-cscheme=\"blue\" data-cap=\"0\" data-access=\"guest\" data-tid=\"\" data-uid=\"f3cefbf91447e7b244257ba060da3e90\" data-pid=\"4918\" data-resdet=\"votes-number,percentages\" data-show-results-to=\"guest\" data-show-results-moment=\"after-vote\" data-show-results-only=\"false\" data-show-message=\"true\" data-show-results-as=\"bar\" data-sort-results-by=\"as-defined\" data-sort-results-rule=\"asc\"data-is-ended=\"0\" data-percentages-decimals=\"2\" data-gdpr=\"no\" data-gdpr-sol=\"consent\" data-css=\".basic-yop-poll-container[data-uid] .basic-vote {\t\t\t\t\t\t\t\t\ttext-align: center;\t\t\t\t\t\t\t\t}\" data-counter=\"0\" data-load-with=\"1\" data-notification-section=\"top\"><div class=\"row\"><div class=\"col-md-12\"><div class=\"basic-inner\"><div class=\"basic-message hide\" style=\"border-left: 10px solid #008000; padding: 0px 10px;\" data-error=\"#ff0000\" data-success=\"#008000\"><p class=\"basic-message-text\" style=\"color:#000000; font-size:14px; font-weight:normal;\"><\/p><\/div><div class=\"basic-overlay hide\"><div class=\"basic-vote-options\"><\/div><div class=\"basic-preloader\"><div class=\"basic-windows8\"><div class=\"basic-wBall basic-wBall_1\"><div class=\"basic-wInnerBall\"><\/div><\/div><div class=\"basic-wBall basic-wBall_2\"><div class=\"basic-wInnerBall\"><\/div><\/div><div class=\"basic-wBall basic-wBall_3\"><div class=\"basic-wInnerBall\"><\/div><\/div><div class=\"basic-wBall basic-wBall_4\"><div class=\"basic-wInnerBall\"><\/div><\/div><div class=\"basic-wBall basic-wBall_5\"><div class=\"basic-wInnerBall\"><\/div><\/div><\/div><\/div><\/div><form class=\"basic-form\" action=\"\"><input type=\"hidden\" name=\"_token\" value=\"683cbd28ef\" autocomplete=\"off\"><div class=\"basic-elements\"><div class=\"basic-element basic-question basic-question-text-vertical\" data-id=\"9\" data-uid=\"4dd06034e08b2f046795df0dcb0f9a04\" data-type=\"question\" data-question-type=\"text\" data-required=\"yes\" data-allow-multiple=\"no\" data-min=\"1\" data-max=\"7\" data-display=\"vertical\" data-colnum=\"\" data-display-others=\"no\" data-others-color=\"\" data-others=\"\" data-others-max-chars=\"0\"><div class=\"basic-question-title\"><h5 style=\"color:#000000; font-size:16px; font-weight:normal; text-align:left;\">O que pensa de um software de IA de execu\u00e7\u00e3o local, como o MLX ou o Ollama?<\/h5><\/div><ul class=\"basic-answers\"><li class=\"basic-answer\" style=\"padding:0px 0px;\" data-id=\"45\" data-type=\"text\" data-vn=\"141\" data-color=\"#000000\" data-make-link=\"no\" data-link=\"\"><div class=\"basic-answer-content basic-text-vertical\"><label for=\"answer[45]\" class=\"basic-answer-label\"><input type=\"radio\" id=\"answer[45]\" name=\"answer[9]\" value=\"45\"><span class=\"basic-text\" style=\"color: #000000; font-size: 14px; font-weight: normal;\">Ingenious - finalmente independente da nuvem<\/span><\/label><\/div><\/li><li class=\"basic-answer\" style=\"padding:0px 0px;\" data-id=\"46\" data-type=\"text\" data-vn=\"25\" data-color=\"#000000\" data-make-link=\"no\" data-link=\"\"><div class=\"basic-answer-content basic-text-vertical\"><label for=\"answer[46]\" class=\"basic-answer-label\"><input type=\"radio\" id=\"answer[46]\" name=\"answer[9]\" value=\"46\"><span class=\"basic-text\" style=\"color: #000000; font-size: 14px; font-weight: normal;\">Interessante, mas (ainda) demasiado complicado<\/span><\/label><\/div><\/li><li class=\"basic-answer\" style=\"padding:0px 0px;\" data-id=\"47\" data-type=\"text\" data-vn=\"28\" data-color=\"#000000\" data-make-link=\"no\" data-link=\"\"><div class=\"basic-answer-content basic-text-vertical\"><label for=\"answer[47]\" class=\"basic-answer-label\"><input type=\"radio\" id=\"answer[47]\" name=\"answer[9]\" value=\"47\"><span class=\"basic-text\" style=\"color: #000000; font-size: 14px; font-weight: normal;\">Vou experiment\u00e1-lo em breve<\/span><\/label><\/div><\/li><li class=\"basic-answer\" style=\"padding:0px 0px;\" data-id=\"48\" data-type=\"text\" data-vn=\"5\" data-color=\"#000000\" data-make-link=\"no\" data-link=\"\"><div class=\"basic-answer-content basic-text-vertical\"><label for=\"answer[48]\" class=\"basic-answer-label\"><input type=\"radio\" id=\"answer[48]\" name=\"answer[9]\" value=\"48\"><span class=\"basic-text\" style=\"color: #000000; font-size: 14px; font-weight: normal;\">N\u00e3o preciso dela - a nuvem \u00e9 suficiente para mim<\/span><\/label><\/div><\/li><li class=\"basic-answer\" style=\"padding:0px 0px;\" data-id=\"49\" data-type=\"text\" data-vn=\"4\" data-color=\"#000000\" data-make-link=\"no\" data-link=\"\"><div class=\"basic-answer-content basic-text-vertical\"><label for=\"answer[49]\" class=\"basic-answer-label\"><input type=\"radio\" id=\"answer[49]\" name=\"answer[9]\" value=\"49\"><span class=\"basic-text\" style=\"color: #000000; font-size: 14px; font-weight: normal;\">N\u00e3o sei exatamente do que se trata<\/span><\/label><\/div><\/li><\/ul><\/div><div class=\"clearfix\"><\/div><\/div><div class=\"basic-vote\"><a href=\"#\" class=\"button basic-vote-button\" role=\"button\" style=\"background:#027bb8; border:0px; border-style: solid; border-color:#000000; border-radius:5px; padding:10px 10px; color:#ffffff; font-size:14px; font-weight:normal;\">Vota\u00e7\u00e3o<\/a><\/div><input type=\"hidden\" name=\"trp-form-language\" value=\"pt\"\/><\/form><\/div><\/div><\/div><\/div>\n\t\t\t\t\t\t<\/div>\n<hr \/>\n<h2>Prepara\u00e7\u00e3o: Compreender a exporta\u00e7\u00e3o de dados do ChatGPT<\/h2>\n<p>No primeiro artigo desta s\u00e9rie, j\u00e1 cri\u00e1mos a exporta\u00e7\u00e3o de dados do ChatGPT e descarreg\u00e1mo-la como um ficheiro ZIP. \u00c0 primeira vista, este ficheiro pode parecer pouco espetacular - um arquivo com alguns ficheiros t\u00e9cnicos que, inicialmente, parece mais uma c\u00f3pia de seguran\u00e7a do que um conjunto de dados valioso. No entanto, este ficheiro cont\u00e9m a base de todo o nosso sistema de conhecimento.<\/p>\n<p>Antes de podermos come\u00e7ar a carregar estes dados numa base de dados ou a lig\u00e1-los a uma IA, precisamos primeiro de compreender como \u00e9 que a exporta\u00e7\u00e3o est\u00e1 estruturada. Porque s\u00f3 se soubermos que informa\u00e7\u00e3o est\u00e1 contida e como est\u00e1 estruturada \u00e9 que a podemos processar mais tarde de uma forma significativa. Neste cap\u00edtulo, vamos, portanto, analisar a forma como a exporta\u00e7\u00e3o de dados est\u00e1 estruturada, quais os ficheiros realmente relevantes e como podemos transformar este arquivo t\u00e9cnico numa base \u00fatil para o nosso sistema de conhecimento de IA.<\/p>\n<h3>Descompactar o ficheiro ZIP<\/h3>\n<p>O primeiro passo \u00e9 trivial, mas n\u00e3o deixa de ser importante: precisamos de descompactar o ficheiro descarregado. O ficheiro est\u00e1 normalmente dispon\u00edvel como um ficheiro ZIP cl\u00e1ssico. Dependendo da extens\u00e3o da sua utiliza\u00e7\u00e3o anterior, o seu tamanho pode variar. Alguns utilizadores recebem um arquivo de algumas centenas de megabytes, outros de v\u00e1rios gigabytes.<\/p>\n<p>Depois de descompactar o ficheiro, \u00e9 criada uma pasta com v\u00e1rios ficheiros e subpastas. A estrutura exacta pode variar ligeiramente, mas normalmente encontrar\u00e1 uma s\u00e9rie de ficheiros JSON e possivelmente outros ficheiros com informa\u00e7\u00f5es adicionais.<\/p>\n<p>Para muitos utilizadores, esta estrutura parece inicialmente algo t\u00e9cnica. Mas se pararmos um pouco, rapidamente reconhecemos um padr\u00e3o: os dados est\u00e3o organizados de forma relativamente limpa e seguem uma estrutura clara. Isto \u00e9 uma boa not\u00edcia, porque \u00e9 precisamente esta estrutura que torna poss\u00edvel o processamento autom\u00e1tico do conte\u00fado mais tarde.<\/p>\n<h3>Estrutura dos dados do chat<\/h3>\n<p>A parte mais importante da exporta\u00e7\u00e3o s\u00e3o os dados reais da conversa. Estas conversas s\u00e3o normalmente armazenadas em um ou mais ficheiros JSON. O JSON \u00e9 um formato de dados generalizado que \u00e9 frequentemente utilizado para armazenar informa\u00e7\u00f5es estruturadas.<\/p>\n<p>Este ficheiro n\u00e3o cont\u00e9m apenas um texto longo. Em vez disso, um di\u00e1logo est\u00e1 dividido em elementos individuais. Normalmente, um di\u00e1logo \u00e9 composto por v\u00e1rias mensagens. Cada mensagem cont\u00e9m informa\u00e7\u00f5es como<\/p>\n<ul>\n<li>o texto efetivo da mensagem<\/li>\n<li>o papel do remetente (utilizador ou IA)<\/li>\n<li>um carimbo de data\/hora<\/li>\n<li>parcialmente outros metadados<\/li>\n<\/ul>\n<p>Isto permite reconstruir todo o desenrolar do di\u00e1logo. Por exemplo, um di\u00e1logo come\u00e7a com uma pergunta do utilizador. Segue-se uma resposta da IA. Podem seguir-se outras perguntas e respostas. Cada uma destas mensagens \u00e9 guardada individualmente.<\/p>\n<p>Isto tem uma grande vantagem: podemos mais tarde reconhecer exatamente quem disse o qu\u00ea e como se desenvolveu uma conversa. Isto \u00e9 particularmente importante para o nosso sistema de conhecimento, uma vez que pretendemos pesquisar e analisar mais tarde exatamente este conte\u00fado.<\/p>\n<h3>De que dados precisamos realmente<\/h3>\n<p>Embora a exporta\u00e7\u00e3o contenha muita informa\u00e7\u00e3o, n\u00e3o precisamos de toda ela para o nosso sistema de conhecimento. O componente mais importante s\u00e3o os textos das conversas. Estes textos cont\u00eam o conte\u00fado efetivo: Ideias, an\u00e1lises, perguntas e respostas. \u00c9 precisamente este conte\u00fado que queremos pesquisar mais tarde.<\/p>\n<p>Alguns metadados tamb\u00e9m podem ser \u00fateis. Estes incluem, por exemplo<\/p>\n<ul>\n<li>Carimbo de data\/hora<\/li>\n<li>T\u00edtulo da conversa<\/li>\n<li>Possivelmente n\u00fameros de identifica\u00e7\u00e3o interna<\/li>\n<\/ul>\n<p>Esta informa\u00e7\u00e3o ajuda-nos a classificar melhor o conte\u00fado mais tarde ou a categorizar uma conversa em termos de tempo. Outros componentes da exporta\u00e7\u00e3o s\u00e3o menos relevantes para o nosso projeto. Trata-se, por exemplo, de certos metadados t\u00e9cnicos que s\u00f3 t\u00eam interesse para o funcionamento interno da plataforma.<\/p>\n<p>Para construir a nossa base de conhecimentos, concentramo-nos deliberadamente no essencial: os textos das conversas e algumas informa\u00e7\u00f5es contextuais b\u00e1sicas. Quanto mais claramente estruturarmos estes dados, melhor a nossa IA poder\u00e1 trabalhar com eles mais tarde.<\/p>\n<h3>Primeira an\u00e1lise dos dados<\/h3>\n<p>Antes de come\u00e7armos a trabalhar com scripts automatizados, vale a pena dar uma vista de olhos r\u00e1pida aos pr\u00f3prios dados. Para tal, abra um dos ficheiros JSON com um editor de texto simples ou com um programa que consiga visualizar bem os ficheiros JSON. Muitos editores de c\u00f3digo, como o Visual Studio Code, s\u00e3o muito adequados para este efeito, mas os editores de texto simples tamb\u00e9m funcionam.<\/p>\n<p>Quando se olha para o ficheiro pela primeira vez, \u00e9 prov\u00e1vel que se veja uma quantidade relativamente grande de dados estruturados. Os ficheiros JSON s\u00e3o constitu\u00eddos por elementos aninhados, ou seja, campos de dados que, por sua vez, cont\u00eam outros campos. Isto pode parecer um pouco complexo no in\u00edcio, mas com um pouco de paci\u00eancia reconhecer\u00e1 rapidamente a estrutura b\u00e1sica. Por exemplo, ver\u00e1 que uma conversa \u00e9 composta por v\u00e1rias mensagens e que cada mensagem representa um objeto separado. O texto real encontra-se normalmente num campo claramente reconhec\u00edvel.<\/p>\n<p>Este primeiro rastreio tem um objetivo importante: ajuda-o a compreender como os seus dados est\u00e3o estruturados. Porque, no pr\u00f3ximo cap\u00edtulo, utilizaremos precisamente esta estrutura para ler automaticamente as conversas e prepar\u00e1-las para o nosso sistema de conhecimento. Por outras palavras: Estamos agora a transformar, passo a passo, um arquivo de dados t\u00e9cnicos numa base de conhecimentos utiliz\u00e1vel. E \u00e9 exatamente por aqui que come\u00e7amos no pr\u00f3ximo cap\u00edtulo. O objetivo \u00e9 extrair os dados das conversas e prepar\u00e1-los de forma a poderem ser pesquisados mais tarde de forma eficiente.<\/p>\n<h2>Preparar os dados: Das conversas aos textos analis\u00e1veis<\/h2>\n<p>Depois de desempacotar a exporta\u00e7\u00e3o de dados do ChatGPT no cap\u00edtulo anterior e de obter uma vis\u00e3o geral inicial da estrutura, come\u00e7a agora a parte t\u00e9cnica do nosso projeto. Embora os dados exportados estejam completos, ainda n\u00e3o est\u00e3o optimizados para o nosso sistema de conhecimento nesta forma.<\/p>\n<p>A raz\u00e3o \u00e9 simples: os hist\u00f3ricos das conversas s\u00e3o normalmente longos, cont\u00eam muitos t\u00f3picos e s\u00e3o armazenados numa estrutura leg\u00edvel para os humanos, mas n\u00e3o ideal para pesquisas sem\u00e2nticas ou bases de dados vectoriais. Para que a nossa IA possa encontrar conte\u00fado relevante mais tarde, temos primeiro de processar estes dados em bruto. Isto significa essencialmente tr\u00eas coisas:<\/p>\n<ol>\n<li>Extrair as conversas dos ficheiros JSON<\/li>\n<li>estruturar os textos de forma sensata<\/li>\n<li>dividir o conte\u00fado em sec\u00e7\u00f5es mais pequenas<\/li>\n<\/ol>\n<p>Este processo \u00e9 um passo completamente normal nos sistemas de IA modernos e \u00e9 frequentemente designado por pr\u00e9-processamento.<\/p>\n<h3>Porque \u00e9 que os dados em bruto n\u00e3o s\u00e3o diretamente adequados<\/h3>\n<p>Se der uma vista de olhos a um dos ficheiros JSON, verificar\u00e1 que um \u00fanico chat \u00e9 frequentemente composto por muitas mensagens. Um di\u00e1logo t\u00edpico pode ter o seguinte aspeto, por exemplo:<\/p>\n<ul>\n<li>Quest\u00e3o<\/li>\n<li>Resposta<\/li>\n<li>Pedido de informa\u00e7\u00e3o<\/li>\n<li>nova declara\u00e7\u00e3o<\/li>\n<li>mais pormenores<\/li>\n<li>Resumo<\/li>\n<\/ul>\n<p>Algumas conversas podem conter centenas ou mesmo milhares de palavras. Isto n\u00e3o \u00e9 um problema para os humanos. Simplesmente lemos um di\u00e1logo de cima para baixo.<\/p>\n<p>No entanto, isto n\u00e3o funciona t\u00e3o bem para uma pesquisa de IA. A raz\u00e3o para isto \u00e9 que uma \u00fanica conversa cont\u00e9m frequentemente v\u00e1rios t\u00f3picos. Se mais tarde efectuarmos uma pesquisa sem\u00e2ntica, o sistema deve encontrar passagens de texto com a maior precis\u00e3o poss\u00edvel - n\u00e3o conversas inteiras com muitos conte\u00fados diferentes.<\/p>\n<p>\u00c9 por isso que os textos grandes s\u00e3o divididos em sec\u00e7\u00f5es mais pequenas. Estas sec\u00e7\u00f5es s\u00e3o designadas por partes (chunks). Um peda\u00e7o \u00e9 simplesmente um pequeno bloco de texto que cont\u00e9m um pensamento coerente. Este m\u00e9todo melhora significativamente a qualidade da pesquisa posterior.<\/p>\n<h3>Extrair hist\u00f3ricos de conversa\u00e7\u00e3o<\/h3>\n<p>O primeiro passo pr\u00e1tico \u00e9 ler o conte\u00fado dos ficheiros JSON. Para o efeito, utilizamos um pequeno script Python. O Python \u00e9 particularmente adequado para estas tarefas porque cont\u00e9m muitas bibliotecas para processamento de dados e IA.<\/p>\n<p>Primeiro, crie um novo ficheiro, por exemplo:<\/p>\n<p><code class=\"notranslate\" data-no-translation=\"\">extract_chats.py<\/code><\/p>\n<p>Em seguida, adicionamos um script simples que carrega os dados do chat.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">import json\r\nwith open(\"conversations.json\", \"r\", encoding=\"utf-8\") as f:\r\n  data = json.load(f)\r\nprint(\"Anzahl der Gespr\u00e4che:\", len(data))<\/pre>\n<p>Quando executar este script, dever\u00e1 ver quantas conversas est\u00e3o contidas na sua exporta\u00e7\u00e3o. Agora vamos extrair os textos actuais.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">texts = []\r\nfor conversation in data:\r\n  if \"mapping\" in conversation:\r\n    for node in conversation[\"mapping\"].values():\r\n      message = node.get(\"message\")\r\n      if message:\r\n        content = message.get(\"content\")\r\n        if content and \"parts\" in content:\r\n          text = \" \".join(content[\"parts\"])\r\n          texts.append(text)\r\nprint(\"Extrahierte Textabschnitte:\", len(texts))<\/pre>\n<p>Este script percorre a estrutura JSON e recolhe todas as partes de texto das conversas. Isto significa que j\u00e1 conclu\u00edmos a parte mais importante: extra\u00edmos o conte\u00fado do formato de exporta\u00e7\u00e3o t\u00e9cnica.<\/p>\n<h3>Criar blocos de texto<\/h3>\n<p>Agora vem o pr\u00f3ximo passo importante: a fragmenta\u00e7\u00e3o. Em vez de guardar conversas completas, dividimos os textos em sec\u00e7\u00f5es mais pequenas.<br \/>\nUm tamanho t\u00edpico para estas sec\u00e7\u00f5es de texto \u00e9 entre 300 e 800 palavras ou aproximadamente 500 tokens. Segue-se um exemplo simples de como dividir textos em partes.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">def split_text(text, chunk_size=500):\r\n    words = text.split()\r\n    chunks = []\r\n    for i in range(0, len(words), chunk_size):\r\n        chunk = \" \".join(words[i:i+chunk_size])\r\n        chunks.append(chunk)\r\n    return chunks<\/pre>\n<p>Agora podemos aplicar esta fun\u00e7\u00e3o aos nossos textos.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">all_chunks = []\r\nfor text in texts:\r\n    chunks = split_text(text)\r\n    all_chunks.extend(chunks)\r\nprint(\"Gesamtzahl der Chunks:\", len(all_chunks))<\/pre>\n<p>Cri\u00e1mos agora muitas sec\u00e7\u00f5es de texto mais pequenas a partir dos nossos hist\u00f3ricos de conversa\u00e7\u00e3o. Estes blocos de texto s\u00e3o ideais para uma pesquisa posterior numa base de dados vetorial.<\/p>\n<h3>Adicionar metadados<\/h3>\n<p>Para al\u00e9m do texto propriamente dito, as informa\u00e7\u00f5es adicionais podem ser muito \u00fateis. Os chamados metadados ajudam-nos a ordenar ou filtrar melhor o conte\u00fado mais tarde. Os metadados t\u00edpicos podem ser<\/p>\n<ul>\n<li>Data da conversa<\/li>\n<li>T\u00edtulo da conversa<\/li>\n<li>Fonte (ChatGPT Export)<\/li>\n<li>ID da chamada<\/li>\n<\/ul>\n<p>Podemos guardar esta informa\u00e7\u00e3o juntamente com o texto, por exemplo, desta forma:<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">documents = []\r\nfor conversation in data:\r\n    title = conversation.get(\"title\", \"Unbekannt\")\r\n    if \"mapping\" in conversation:\r\n        for node in conversation[\"mapping\"].values():\r\n            message = node.get(\"message\")\r\n            if message:\r\n                content = message.get(\"content\")\r\n                if content and \"parts\" in content:\r\n                    text = \" \".join(content[\"parts\"])\r\n                    chunks = split_text(text)\r\n                    for chunk in chunks:\r\n                        documents.append({\r\n                            \"text\": chunk,\r\n                            \"title\": title\r\n                         })<\/pre>\n<p>Isto j\u00e1 deu aos nossos dados uma estrutura muito melhor. Em vez de um arquivo de chat confuso, temos agora uma cole\u00e7\u00e3o de muitas pequenas sec\u00e7\u00f5es de texto, cada uma das quais com informa\u00e7\u00f5es contextuais.<\/p>\n<p>\u00c9 precisamente esta estrutura que ser\u00e1 crucial no passo seguinte. Porque agora podemos come\u00e7ar a gerar embeddings a partir destes textos - ou seja, representa\u00e7\u00f5es matem\u00e1ticas do conte\u00fado que mais tarde ser\u00e3o guardadas na nossa base de dados vetorial. E \u00e9 exatamente disso que trata o pr\u00f3ximo cap\u00edtulo.<\/p>\n<h2>Criar incorpora\u00e7\u00f5es<\/h2>\n<p>No cap\u00edtulo anterior, j\u00e1 coloc\u00e1mos os nossos dados do ChatGPT numa forma utiliz\u00e1vel. Extra\u00edmos as conversas dos ficheiros JSON, limp\u00e1mos os textos e dividimo-los em sec\u00e7\u00f5es mais pequenas - os chamados \"chunks\".<\/p>\n<p>No entanto, ainda falta um passo crucial para que a nossa IA possa realmente procurar conte\u00fados de uma forma significativa. Os textos t\u00eam de ser traduzidos para uma forma que as m\u00e1quinas possam comparar. \u00c9 aqui que os embeddings entram em a\u00e7\u00e3o.<\/p>\n<p>Os embeddings s\u00e3o representa\u00e7\u00f5es matem\u00e1ticas de textos. Permitem aos computadores comparar o significado dos textos. Dois textos com conte\u00fados semelhantes recebem vectores semelhantes - mesmo que utilizem palavras diferentes. Esta \u00e9 precisamente a propriedade de que necessitamos para o nosso sistema de conhecimento. Afinal, a nossa IA n\u00e3o deve procurar apenas palavras id\u00eanticas, mas tamb\u00e9m textos com conte\u00fados semelhantes.<\/p>\n<h3>O que s\u00e3o embeddings<\/h3>\n<p>Uma incorpora\u00e7\u00e3o \u00e9 basicamente uma lista de n\u00fameros. Estes n\u00fameros descrevem o significado de um texto num espa\u00e7o matem\u00e1tico. Cada texto \u00e9 convertido num chamado vetor. Este vetor pode ter o seguinte aspeto, por exemplo:<\/p>\n<p><code data-no-translation=\"\">[0.134, -0.876, 0.442, 0.921, -0.223, ...]<\/code><\/p>\n<p>Um \u00fanico vetor pode conter v\u00e1rias centenas ou mesmo milhares de n\u00fameros. \u00c9 claro que estes n\u00fameros n\u00e3o s\u00e3o diretamente compreens\u00edveis para os seres humanos. No entanto, para as m\u00e1quinas, s\u00e3o ideais para calcular as semelhan\u00e7as entre textos. Se dois textos t\u00eam um conte\u00fado semelhante, os seus vectores est\u00e3o mais pr\u00f3ximos no espa\u00e7o matem\u00e1tico. Um exemplo:<\/p>\n<ul>\n<li><strong>Texto A<\/strong>\u201eComo posso exportar os meus dados do ChatGPT?\u201c<\/li>\n<li><strong>Texto B<\/strong>: \u201eComo \u00e9 que transfiro as minhas conversas do ChatGPT?\u201c<\/li>\n<\/ul>\n<p>Embora a reda\u00e7\u00e3o seja diferente, ambos os textos descrevem basicamente o mesmo t\u00f3pico. Um bom modelo de incorpora\u00e7\u00e3o reconhece esta semelhan\u00e7a. Assim, os dois textos recebem vectores semelhantes. Mais tarde, utilizaremos exatamente este princ\u00edpio para a nossa pesquisa sem\u00e2ntica.<\/p>\n<h3>Modelos de incorpora\u00e7\u00e3o com Ollama<\/h3>\n<p>Precisamos de um modelo especial para criar embeddings. Felizmente, n\u00e3o temos de recorrer a servi\u00e7os externos na nuvem para o fazer. Muitos modelos de incorpora\u00e7\u00e3o podem agora ser operados localmente - e \u00e9 aqui que o Ollama entra em a\u00e7\u00e3o.<\/p>\n<p>Uma vez que o Ollama j\u00e1 est\u00e1 a funcionar no seu sistema, podemos incorporar a\u00ed um modelo install. Um modelo muito bom \u00e9, por exemplo:<\/p>\n<p><code data-no-translation=\"\">nomic-embed-text<\/code><\/p>\n<p>\u00c9 poss\u00edvel dom\u00e1-lo com o seguinte comando 1TP12:<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">ollama pull nomic-embed-text<\/pre>\n<p>Outros modelos populares s\u00e3o<\/p>\n<ul>\n<li>mxbai-embed-large<\/li>\n<li>bge-grande<\/li>\n<li>tudo-minilme<\/li>\n<\/ul>\n<p>Para os nossos objectivos <em>texto n\u00f3mico-embutido<\/em> \u00e9 um \u00f3timo ponto de partida. Este modelo gera embeddings de alta qualidade e funciona localmente sem qualquer problema.<\/p>\n<h3>Criar localmente embeddings<\/h3>\n<p>Agora queremos alargar o nosso script Python para que possa gerar embeddings. Primeiro 1TP12Criamos uma biblioteca com a qual Python pode se comunicar Ollama.<\/p>\n<p>pip install ollama<\/p>\n<p>Agora podemos abordar o modelo de incorpora\u00e7\u00e3o diretamente a partir de Python. Segue-se um exemplo simples:<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">import ollama\r\nresponse = ollama.embeddings(\r\n    model=\"nomic-embed-text\",\r\n    prompt=\"Wie exportiere ich meine ChatGPT-Daten?\"\r\n)\r\nprint(len(response[\"embedding\"]))<\/pre>\n<p>Se tudo tiver funcionado, obter\u00e1 um vetor com v\u00e1rias centenas de n\u00fameros.<br \/>\nAgora vamos aplicar isto aos nossos blocos de conversa\u00e7\u00e3o.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">embeddings = []\r\nfor doc in documents:\r\n    text = doc[\"text\"]\r\n    result = ollama.embeddings(\r\n        model=\"nomic-embed-text\",\r\n        prompt=text\r\n    )\r\n    vector = result[\"embedding\"]\r\n    embeddings.append({\r\n        \"text\": text,\r\n        \"embedding\": vector,\r\n        \"title\": doc[\"title\"]\r\n    })<\/pre>\n<p>Utilizamos isto para criar um vetor para cada sec\u00e7\u00e3o de texto. Estes vectores s\u00e3o posteriormente guardados na nossa base de dados.<\/p>\n<h3>Porque \u00e9 que este passo \u00e9 crucial<\/h3>\n<p>Os embeddings est\u00e3o no centro dos sistemas de conhecimento modernos. Sem os embeddings, s\u00f3 poder\u00edamos pesquisar textos utilizando as cl\u00e1ssicas pesquisas por palavras-chave. Isto significaria que o sistema s\u00f3 encontraria conte\u00fados que contivessem exatamente as mesmas palavras. Mas a linguagem raramente funciona de forma t\u00e3o simples. Por exemplo, um utilizador pode perguntar:<\/p>\n<blockquote><p><em>\u201eComo \u00e9 que processei os meus dados ChatGPT?\u201c<\/em><\/p><\/blockquote>\n<p>No entanto, a conversa original poderia ser formulada da seguinte forma:<\/p>\n<blockquote><p><em>\u201eComo posso analisar a minha exporta\u00e7\u00e3o de dados ChatGPT?\u201c<\/em><\/p><\/blockquote>\n<p>Uma simples pesquisa pode n\u00e3o reconhecer esta liga\u00e7\u00e3o. Com as incorpora\u00e7\u00f5es \u00e9 diferente. Uma vez que ambos os textos t\u00eam significados semelhantes, os seus vectores est\u00e3o pr\u00f3ximos um do outro no espa\u00e7o matem\u00e1tico. A nossa base de dados pode assim encontrar conte\u00fados correspondentes, mesmo que a reda\u00e7\u00e3o seja diferente. \u00c9 precisamente esta capacidade que torna a pesquisa sem\u00e2ntica t\u00e3o poderosa. Permite a uma IA procurar n\u00e3o s\u00f3 palavras, mas tamb\u00e9m significados.<\/p>\n<p>E \u00e9 exatamente por isso que os embeddings s\u00e3o o elemento central do nosso sistema. No pr\u00f3ximo cap\u00edtulo, vamos desenvolver isto e installieren a nossa base de dados de vectores. Vamos armazenar a\u00ed os vectores gerados - e criar assim a base para a nossa IA de conhecimento pessoal.<\/p>\n<h2>Qdrant 1TP12Adicionar e configurar<\/h2>\n<p>Depois de termos criado os embeddings para os nossos dados de conversa\u00e7\u00e3o no cap\u00edtulo anterior, temos agora uma cole\u00e7\u00e3o de sec\u00e7\u00f5es de texto e vectores associados. Estes vectores descrevem matematicamente o significado dos textos e constituem assim a base de uma pesquisa sem\u00e2ntica. No entanto, atualmente, estes dados s\u00f3 est\u00e3o dispon\u00edveis na mem\u00f3ria de trabalho do nosso gui\u00e3o ou em listas simples. Precisamos de uma mem\u00f3ria especializada para que a nossa IA possa aceder-lhes mais tarde de forma eficiente.<\/p>\n<p>\u00c9 exatamente aqui que entra em jogo uma base de dados vetorial. Uma base de dados de vectores \u00e9 optimizada para armazenar grandes quantidades de tais embeddings e procurar rapidamente vectores semelhantes. Para o nosso projeto, utilizamos a Qdrant, uma base de dados moderna de c\u00f3digo aberto que foi especialmente desenvolvida para aplica\u00e7\u00f5es de IA.<\/p>\n<p>Neste cap\u00edtulo 1TP12 vamos instalar o Qdrant, iniciar o servidor e preparar a base de dados para que possamos importar facilmente os nossos dados de conversa\u00e7\u00e3o mais tarde.<\/p>\n<h3>O que \u00e9 o Qdrant<\/h3>\n<p>A Qdrant \u00e9 uma base de dados especializada para as chamadas pesquisas vectoriais. Enquanto as bases de dados tradicionais armazenam informa\u00e7\u00f5es em tabelas - como nomes, n\u00fameros ou textos - uma base de dados vetorial trabalha com representa\u00e7\u00f5es matem\u00e1ticas de dados.<\/p>\n<p>Isto significa que, em vez de guardar apenas o texto, o Qdrant guarda os embeddings associados. A grande vantagem reside na pesquisa. Se uma pergunta for feita mais tarde, o nosso sistema tamb\u00e9m converte essa pergunta num vetor. O Qdrant pode ent\u00e3o calcular, \u00e0 velocidade da luz, quais os textos guardados que s\u00e3o mais semelhantes a este vetor. Assim, \u00e9 poss\u00edvel descobrir, por exemplo:<\/p>\n<ul>\n<li>que passagens de chat correspondem tematicamente \u00e0 pergunta<\/li>\n<li>quais as conversas anteriores com conte\u00fado semelhante<\/li>\n<li>que ideias podem ser relevantes no seu arquivo<\/li>\n<\/ul>\n<p>\u00c9 precisamente por esta raz\u00e3o que o Qdrant \u00e9 atualmente utilizado em muitos sistemas modernos de IA - desde pesquisas de documentos a assistentes de conhecimento complexos. Outra vantagem: Qdrant \u00e9 open source, rapidamente 1TP12izado e funciona sem problemas numa m\u00e1quina local normal.<\/p>\n<h3>Instala\u00e7\u00e3o do Qdrant<\/h3>\n<p>A maneira mais f\u00e1cil de installieren Qdrant \u00e9 via Docker. Se o Docker estiver dispon\u00edvel na sua m\u00e1quina, pode iniciar o servidor com um \u00fanico comando. Aqui pode <a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\" target=\"_blank\" rel=\"noopener\"><strong>Descarregar o Docker<\/strong><\/a>, se ainda n\u00e3o o tiver instalado no seu computador installiert.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">docker run -p 6333:6333 qdrant\/qdrant<\/pre>\n<p>Este comando inicia o servidor Qdrant e abre a porta padr\u00e3o 6333. Os nossos scripts podem depois comunicar com a base de dados atrav\u00e9s desta porta.<\/p>\n<p>Se n\u00e3o quiser usar o Docker, existem tamb\u00e9m outras formas de installiere Qdrant, por exemplo, atrav\u00e9s de um bin\u00e1rio local ou de um gestor de pacotes. No entanto, em muitos projectos pr\u00e1ticos, o Docker provou ser a op\u00e7\u00e3o mais simples e mais est\u00e1vel.<\/p>\n<p>Depois de o servidor ter sido iniciado, o Qdrant \u00e9 executado em segundo plano e aguarda os pedidos. Pode agora testar se o servidor est\u00e1 acess\u00edvel. Para o efeito, abra o seguinte endere\u00e7o no seu navegador:<\/p>\n<p><code data-no-translation=\"\">http:\/\/localhost:6333<\/code><\/p>\n<p>Se tudo tiver funcionado, dever\u00e1 aparecer uma mensagem de estado simples. O servidor est\u00e1 agora pronto para os pr\u00f3ximos passos.<\/p>\n<h3>Primeiros passos com o Qdrant<\/h3>\n<p>Antes de podermos importar os nossos dados de chat, precisamos de criar uma cole\u00e7\u00e3o. No Qdrant, uma cole\u00e7\u00e3o \u00e9 compar\u00e1vel a uma tabela numa base de dados cl\u00e1ssica. Ela cont\u00e9m os nossos vectores e os dados associados.<\/p>\n<p>Em primeiro lugar, installiere a biblioteca Python para Qdrant:<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">pip install qdrant-client<\/pre>\n<p>Agora podemos estabelecer uma liga\u00e7\u00e3o \u00e0 base de dados no nosso script Python.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">from qdrant_client import QdrantClient\r\nclient = QdrantClient(\"localhost\", port=6333)<\/pre>\n<p>Se este c\u00f3digo for executado sem uma mensagem de erro, a liga\u00e7\u00e3o \u00e9 bem sucedida. Agora criamos uma cole\u00e7\u00e3o para os nossos dados de chat.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">from qdrant_client.models import VectorParams, Distance\r\nclient.recreate_collection(\r\ncollection_name=\"chatgpt_archive\",\r\nvectors_config=VectorParams(size=768, distance=Distance.COSINE),\r\n)<\/pre>\n<p>Os par\u00e2metros mais importantes s\u00e3o<\/p>\n<ul>\n<li><strong>nome_da_colec\u00e7\u00e3o<\/strong> - o nome da nossa base de dados<\/li>\n<li><strong>tamanho<\/strong> - o comprimento dos vectores de incorpora\u00e7\u00e3o<\/li>\n<li><strong>dist\u00e2ncia<\/strong> - o m\u00e9todo de c\u00e1lculo da semelhan\u00e7a<\/li>\n<\/ul>\n<p>O tamanho do vetor depende do modelo de incorpora\u00e7\u00e3o utilizado. Muitos modelos funcionam com vectores de 768 ou 1024 dimens\u00f5es. A fun\u00e7\u00e3o de dist\u00e2ncia cosseno \u00e9 um dos m\u00e9todos mais comuns para calcular as semelhan\u00e7as entre textos. A nossa base de dados est\u00e1 agora pronta a ser utilizada.<\/p>\n<h3>Estrutura de dados do plano<\/h3>\n<p>Antes de importarmos os nossos dados, vale a pena dar uma vista de olhos r\u00e1pida \u00e0 estrutura que queremos guardar. Cada entrada na nossa base de dados vetorial ser\u00e1 constitu\u00edda por v\u00e1rios componentes:<\/p>\n<ul>\n<li><strong>ID<\/strong> - um identificador \u00fanico<\/li>\n<li><strong>Incorpora\u00e7\u00e3o<\/strong> - o vetor do texto<\/li>\n<li><strong>Carga \u00fatil<\/strong> - Informa\u00e7\u00f5es adicionais sobre o texto<\/li>\n<\/ul>\n<p>A carga \u00fatil pode conter, por exemplo<\/p>\n<ul>\n<li>o texto original<\/li>\n<li>o t\u00edtulo da conversa<\/li>\n<li>a data<\/li>\n<li>outros metadados<\/li>\n<\/ul>\n<p>Um exemplo de um registo de dados pode ser o seguinte:<\/p>\n<p><code data-no-translation=\"\">{<br \/>\n\"id\": 1,<br \/>\n\"vector\": [0.123, -0.452, 0.889, ...],<br \/>\n\"payload\": {<br \/>\n\"text\": \"Wie kann ich meinen ChatGPT-Datenexport analysieren?\",<br \/>\n\"title\": \"Datenanalyse\"<br \/>\n}<br \/>\n}<\/code><\/p>\n<p>Esta estrutura tem uma grande vantagem. Os vectores s\u00e3o utilizados para a pesquisa sem\u00e2ntica, enquanto a carga \u00fatil cont\u00e9m todas as informa\u00e7\u00f5es que pretendemos apresentar ou analisar mais tarde. Isto significa que o nosso sistema permanece flex\u00edvel e pode ser facilmente expandido mais tarde.<\/p>\n<p>Isto significa que a parte mais importante da infraestrutura j\u00e1 est\u00e1 preparada. O nosso servidor Qdrant est\u00e1 a funcionar, a base de dados est\u00e1 configurada e sabemos qual ser\u00e1 a estrutura dos nossos dados. No pr\u00f3ximo cap\u00edtulo, come\u00e7amos com o passo crucial: importamos os nossos dados do ChatGPT para a base de dados e transformamos o nosso arquivo de conversas numa base de conhecimentos real e pesquis\u00e1vel.<\/p>\n<h2>Importar dados do ChatGPT para o Qdrant<\/h2>\n<p>Agora que cri\u00e1mos o Qdrant installiert e uma cole\u00e7\u00e3o no cap\u00edtulo anterior, foi criada a base t\u00e9cnica para a nossa base de dados de conhecimentos. Os nossos embeddings j\u00e1 existem - cri\u00e1mo-los a partir dos dados do ChatGPT - e o Qdrant est\u00e1 a funcionar como servidor de base de dados na nossa m\u00e1quina.<\/p>\n<p>Agora vem o passo crucial: carregamos os nossos dados para a base de dados. N\u00e3o s\u00f3 guardamos os pr\u00f3prios vectores, como tamb\u00e9m os textos e metadados associados. Esta combina\u00e7\u00e3o permite que a nossa IA encontre mais tarde conte\u00fados relevantes e os utilize nas respostas. Neste cap\u00edtulo, constru\u00edmos a verdadeira base de conhecimentos do nosso sistema.<\/p>\n<h3>Guardar incorpora\u00e7\u00f5es<\/h3>\n<p>Em primeiro lugar, temos de transferir os embeddings gerados para a base de dados. Cada entrada na Qdrant \u00e9 constitu\u00edda por tr\u00eas componentes:<\/p>\n<ul>\n<li>uma identifica\u00e7\u00e3o<\/li>\n<li>um vetor (incorpora\u00e7\u00e3o)<\/li>\n<li>uma carga \u00fatil com dados adicionais<\/li>\n<\/ul>\n<p>No nosso caso, por exemplo, o payload cont\u00e9m<\/p>\n<ul>\n<li>a sec\u00e7\u00e3o de texto<\/li>\n<li>o t\u00edtulo da conversa<\/li>\n<li>Possivelmente mais metadados<\/li>\n<\/ul>\n<p>Em Python, podemos preparar esta estrutura com relativa facilidade. Um exemplo:<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">points = []\r\nfor idx, item in enumerate(embeddings):\r\npoints.append({\r\n\"id\": idx,\r\n\"vector\": item[\"embedding\"],\r\n\"payload\": {\r\n\"text\": item[\"text\"],\r\n\"title\": item[\"title\"]\r\n}\r\n})<\/pre>\n<p>Isto gera uma lista de pontos de dados que podemos depois guardar em Qdrant. Cada ponto de dados cont\u00e9m, portanto, uma sec\u00e7\u00e3o de texto, o vetor correspondente e informa\u00e7\u00f5es de contexto adicionais. Esta estrutura constitui mais tarde a base da nossa pesquisa sem\u00e2ntica.<\/p>\n<h3>Criar script de importa\u00e7\u00e3o<\/h3>\n<p>Agora, ligamos o nosso script Python \u00e0 Qdrant e transferimos os dados. Para o fazer, utilizamos o cliente Python Qdrant, que analis\u00e1mos no cap\u00edtulo anterior 1TP12. A importa\u00e7\u00e3o pode ter o seguinte aspeto, por exemplo:<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">from qdrant_client import QdrantClient\r\nfrom qdrant_client.models import PointStruct\r\nclient = QdrantClient(\"localhost\", port=6333)\r\npoints = []\r\nfor idx, item in enumerate(embeddings):\r\npoint = PointStruct(\r\nid=idx,\r\nvector=item[\"embedding\"],\r\npayload={\r\n\"text\": item[\"text\"],\r\n\"title\": item[\"title\"]\r\n}\r\n)\r\npoints.append(point)\r\nclient.upsert(\r\ncollection_name=\"chatgpt_archive\",\r\npoints=points\r\n)\r\nprint(\"Import abgeschlossen:\", len(points), \"Datens\u00e4tze gespeichert.\")<\/pre>\n<p>O comando upsert garante que os dados s\u00e3o guardados na cole\u00e7\u00e3o. Se j\u00e1 existir um ID, a entrada \u00e9 actualizada. Caso contr\u00e1rio, \u00e9 criado um novo registo de dados. Dependendo do tamanho da exporta\u00e7\u00e3o do ChatGPT, essa importa\u00e7\u00e3o pode levar alguns segundos ou minutos. Isto \u00e9 completamente normal para conjuntos de dados maiores - como v\u00e1rios milhares de sec\u00e7\u00f5es de texto.<\/p>\n<h3>Testar a base de dados<\/h3>\n<p>Quando a importa\u00e7\u00e3o estiver conclu\u00edda, devemos verificar se os nossos dados foram guardados corretamente. O teste mais simples \u00e9 efetuar uma pesquisa vetorial. Para fazer isso, primeiro criamos uma incorpora\u00e7\u00e3o para uma pergunta de teste.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">query = \"Wie kann ich ChatGPT-Daten analysieren?\"\r\nquery_vector = ollama.embeddings(\r\nmodel=\"nomic-embed-text\",\r\nprompt=query\r\n)[\"embedding\"]<\/pre>\n<p>Agora podemos procurar em Qdrant por vectores semelhantes.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">search_result = client.search(\r\ncollection_name=\"chatgpt_archive\",\r\nquery_vector=query_vector,\r\nlimit=3\r\n)<\/pre>\n<p>Este comando devolve as tr\u00eas sec\u00e7\u00f5es de texto mais semelhantes da nossa base de dados. Podemos produzi-las assim, por exemplo:<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">for result in search_result:\r\nprint(result.payload[\"text\"])\r\nprint(\"---\")<\/pre>\n<p>Se tudo tiver funcionado, aparecer\u00e3o as sec\u00e7\u00f5es de chat do seu arquivo que correspondem \u00e0 consulta de pesquisa. Agora j\u00e1 sabemos: A nossa base de dados est\u00e1 a funcionar.<\/p>\n<h3>Primeira avalia\u00e7\u00e3o do desempenho<\/h3>\n<p>Este momento \u00e9 um dos aspectos mais interessantes de todo o projeto. Pela primeira vez, torna-se evidente que o nosso arquivo de conversa\u00e7\u00e3o pode efetivamente ser utilizado como uma fonte de conhecimento. Pode agora experimentar diferentes consultas de pesquisa. Por exemplo:<\/p>\n<ul>\n<li>\u201eArtigo da IA\u201c<\/li>\n<li>\u201eSistema RAG\u201c<\/li>\n<li>\u201eExporta\u00e7\u00e3o de dados ChatGPT\u201c<\/li>\n<li>\u201eIdeia de estrat\u00e9gia\u201c<\/li>\n<\/ul>\n<p>Consoante o conte\u00fado do seu hist\u00f3rico de conversa\u00e7\u00f5es, o Qdrant encontrar\u00e1 passagens de texto adequadas. Por vezes, ficar\u00e1 surpreendido com o conte\u00fado que ressurge. Conversas que h\u00e1 muito esqueceu podem, de repente, voltar a ser relevantes. Isto mostra muito claramente porque \u00e9 que esta abordagem \u00e9 t\u00e3o interessante. As suas antigas conversas de IA j\u00e1 n\u00e3o s\u00e3o apenas um arquivo. Tornam-se uma base de conhecimentos pesquis\u00e1vel.<\/p>\n<p>Atingimos assim um marco importante. Os nossos dados ChatGPT est\u00e3o agora totalmente armazenados na base de dados vetorial e podem ser pesquisados semanticamente. No pr\u00f3ximo cap\u00edtulo, damos um passo em frente: ligamos a nossa base de dados de conhecimentos \u00e0 pr\u00f3pria IA. Isto permitir\u00e1 que o modelo lingu\u00edstico aceda a estes dados no futuro e os incorpore diretamente nas respostas.<\/p>\n<figure id=\"attachment_5470\" aria-describedby=\"caption-attachment-5470\" style=\"width: 2550px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5470\" src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Qdrant-Collections-scaled.jpg\" alt=\"Qdrant Dashboard em http:\/\/localhost:6333\/dashboard\" width=\"2560\" height=\"1786\" srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Qdrant-Collections-scaled.jpg 2560w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Qdrant-Collections-300x209.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Qdrant-Collections-1024x714.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Qdrant-Collections-768x536.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Qdrant-Collections-1536x1071.jpg 1536w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Qdrant-Collections-2048x1429.jpg 2048w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Qdrant-Collections-18x12.jpg 18w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption id=\"caption-attachment-5470\" class=\"wp-caption-text\">Qdrant Dashboard em http:\/\/localhost:6333\/dashboard<\/figcaption><\/figure>\n<h2>Ligar a IA \u00e0 base de dados de conhecimentos<\/h2>\n<p>At\u00e9 este ponto, j\u00e1 constru\u00edmos uma grande parte da infraestrutura. Os nossos dados ChatGPT foram extra\u00eddos da exporta\u00e7\u00e3o, divididos em sec\u00e7\u00f5es de texto mais pequenas, incorporados e finalmente armazenados na base de dados vetorial Qdrant.<\/p>\n<p>No entanto, a nossa IA ainda n\u00e3o est\u00e1 a trabalhar com estes dados. Embora possamos efetuar uma pesquisa vetorial utilizando Python e encontrar passagens de texto adequadas, a pr\u00f3pria IA ainda n\u00e3o est\u00e1 ciente disso. Quando lhe fazemos uma pergunta, ela continua a utilizar apenas os seus conhecimentos gerais da l\u00edngua.<\/p>\n<p>O pr\u00f3ximo passo \u00e9, portanto, ligar estes dois mundos. Estamos agora a construir um processo em que a IA recebe primeiro conte\u00fados relevantes da base de dados de conhecimentos e depois os incorpora na sua resposta. Este \u00e9 precisamente o n\u00facleo de um sistema RAG.<\/p>\n<h3>Processo de inqu\u00e9rito<\/h3>\n<p>O processo de um pedido de informa\u00e7\u00e3o muda ligeiramente gra\u00e7as ao nosso sistema de conhecimento. At\u00e9 agora, uma conversa com uma IA era normalmente assim:<\/p>\n<ol>\n<li>Fazes uma pergunta \u2192<\/li>\n<li>A IA processa a pergunta \u2192<\/li>\n<li>a IA gera uma resposta.<\/li>\n<\/ol>\n<p>Uma base de dados de conhecimentos \u00e9 uma etapa adicional. O novo processo tem o seguinte aspeto:<\/p>\n<ol>\n<li>Fazes uma pergunta \u2192<\/li>\n<li>a pergunta \u00e9 convertida numa incorpora\u00e7\u00e3o \u2192<\/li>\n<li>a base de dados vetorial procura textos semelhantes \u2192<\/li>\n<li>Estes textos s\u00e3o transferidos para a IA como contexto \u2192<\/li>\n<\/ol>\n<p>a IA formula uma resposta. Isto significa que a IA j\u00e1 n\u00e3o trabalha apenas com o seu conhecimento treinado, mas tamb\u00e9m com os seus pr\u00f3prios dados. Este contexto torna frequentemente as respostas muito mais precisas e personalizadas.<\/p>\n<h3>Etapa de recupera\u00e7\u00e3o<\/h3>\n<p>A primeira parte deste processo \u00e9 conhecida como recupera\u00e7\u00e3o. Recuperar significa simplesmente \u201eir buscar\u201c. Nesta etapa, o nosso sistema procura na base de dados conte\u00fados que correspondam ao t\u00f3pico da pergunta. Primeiro, criamos outra incorpora\u00e7\u00e3o para a pergunta atual.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">query = \"Welche Ideen hatte ich zur Nutzung meines ChatGPT-Datenexports?\"\r\nquery_vector = ollama.embeddings(\r\nmodel=\"nomic-embed-text\",\r\nprompt=query\r\n)[\"embedding\"]<\/pre>\n<p>Esta incorpora\u00e7\u00e3o descreve o significado da pergunta em forma matem\u00e1tica. O Qdrant pode agora procurar vectores semelhantes.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">results = client.search(\r\ncollection_name=\"chatgpt_archive\",\r\nquery_vector=query_vector,\r\nlimit=5\r\n)<\/pre>\n<p>A base de dados devolve agora as cinco passagens de texto que melhor correspondem \u00e0 pergunta. Estas passagens de texto formam o contexto para a IA. Reunimo-las numa lista.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">context_texts = []\r\nfor r in results:\r\ncontext_texts.append(r.payload[\"text\"])<\/pre>\n<p>Dispomos agora de uma cole\u00e7\u00e3o de conte\u00fados relevantes do nosso arquivo de chat.<\/p>\n<h3>Transferir contexto para Ollama<\/h3>\n<p>Agora vem o passo decisivo. Passamos este contexto, juntamente com a pergunta original, para o nosso modelo lingu\u00edstico. O modelo pode agora utilizar esta informa\u00e7\u00e3o para formular uma resposta.<\/p>\n<p>Em primeiro lugar, criamos a chamada mensagem. Um prompt \u00e9 simplesmente o texto que enviamos para a IA.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">context = \"\\n\\n\".join(context_texts)\r\nprompt = f\"\"\"\r\nDu bist ein KI-Assistent, der mit meinem pers\u00f6nlichen Wissensarchiv arbeitet.\r\nNutze die folgenden Textausschnitte als Kontext:\r\n{context}\r\nBeantworte nun diese Frage:\r\n{query}\r\n\"\"\"<\/pre>\n<p>Agora enviamos esta mensagem para o nosso modelo lingu\u00edstico no Ollama.<\/p>\n<pre class=\"notranslate\" data-no-translation=\"\">response = ollama.chat(\r\nmodel=\"llama3\",\r\nmessages=[\r\n{\"role\": \"user\", \"content\": prompt}\r\n]\r\n)\r\nprint(response[\"message\"][\"content\"])<\/pre>\n<p>A IA recebe agora a pergunta e as passagens de texto relevantes da nossa base de dados. Isto permite-lhe gerar respostas com base nos nossos pr\u00f3prios dados.<\/p>\n<h3>Gera\u00e7\u00e3o de respostas<\/h3>\n<p>A \u00faltima etapa \u00e9 a gera\u00e7\u00e3o da resposta propriamente dita. O modelo lingu\u00edstico combina agora duas fontes de conhecimento:<\/p>\n<p>os seus pr\u00f3prios conhecimentos<\/p>\n<p>o contexto da nossa base de dados de conhecimentos<\/p>\n<p>Esta combina\u00e7\u00e3o \u00e9 particularmente poderosa. O modelo pode explicar rela\u00e7\u00f5es gerais e, ao mesmo tempo, incorporar conte\u00fados espec\u00edficos do nosso arquivo. Um exemplo: Se perguntar:<\/p>\n<blockquote><p><em>\u201eQue ideias tive para utilizar a minha exporta\u00e7\u00e3o de dados ChatGPT?\u201c<\/em><\/p><\/blockquote>\n<p>a IA pode agora aceder a conversas anteriores e criar um resumo estruturado a partir delas. Por exemplo, pode responder:<\/p>\n<ul>\n<li>Falou sobre a constru\u00e7\u00e3o de um arquivo de conhecimentos pessoais<\/li>\n<li>Pretendia desenvolver uma IA local com um sistema RAG<\/li>\n<li>Desenvolveu a ideia de uma s\u00e9rie de artigos<\/li>\n<\/ul>\n<p>Sem a etapa de recupera\u00e7\u00e3o, a IA n\u00e3o teria tido conhecimento desta informa\u00e7\u00e3o. Com o nosso sistema, o seu arquivo de conversa\u00e7\u00e3o torna-se uma verdadeira fonte de conhecimento. Isto completa a parte mais importante do nosso sistema. Agora temos:<\/p>\n<ul>\n<li>uma IA local atrav\u00e9s de Ollama<\/li>\n<li>uma base de dados vetorial com os nossos dados de conversa\u00e7\u00e3o<\/li>\n<li>uma pesquisa sem\u00e2ntica<\/li>\n<li>um fluxo de trabalho RAG<\/li>\n<\/ul>\n<p>No pr\u00f3ximo cap\u00edtulo, testaremos este sistema na pr\u00e1tica e veremos se a nossa IA de conhecimento pessoal funciona de facto.<\/p>\n<figure id=\"attachment_5469\" aria-describedby=\"caption-attachment-5469\" style=\"width: 1408px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5469\" src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Terminal-Import-abgeschlossen.jpg\" alt=\"Terminal ap\u00f3s a importa\u00e7\u00e3o bem sucedida de dados ChatGPT\" width=\"1418\" height=\"994\" srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Terminal-Import-abgeschlossen.jpg 1418w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Terminal-Import-abgeschlossen-300x210.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Terminal-Import-abgeschlossen-1024x718.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Terminal-Import-abgeschlossen-768x538.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Terminal-Import-abgeschlossen-18x12.jpg 18w\" sizes=\"auto, (max-width: 1418px) 100vw, 1418px\" \/><figcaption id=\"caption-attachment-5469\" class=\"wp-caption-text\">Terminal ap\u00f3s a importa\u00e7\u00e3o bem sucedida de dados ChatGPT<\/figcaption><\/figure>\n<h2>Primeiro, as perguntas com o seu conhecimento pessoal IA<\/h2>\n<p>Agora que estabelecemos a liga\u00e7\u00e3o entre a nossa IA e a base de dados de conhecimentos no cap\u00edtulo anterior, o sistema est\u00e1 tecnicamente completo. Os nossos dados ChatGPT est\u00e3o na base de dados vetorial, a IA pode recuperar conte\u00fados relevantes e todo o processo de um sistema RAG funciona.<\/p>\n<p>Agora vem a parte mais emocionante do projeto: as primeiras consultas reais. Porque s\u00f3 agora podemos ver se o nosso sistema faz realmente o que esper\u00e1vamos - nomeadamente encontrar conversas anteriores, analisar conte\u00fados e gerar respostas com significado. Neste cap\u00edtulo, testamos a nossa IA de conhecimento, analisamos casos de utiliza\u00e7\u00e3o t\u00edpicos e damos uma vista de olhos a poss\u00edveis optimiza\u00e7\u00f5es.<\/p>\n<h3>Exemplo de consultas<\/h3>\n<p>Vamos come\u00e7ar com algumas perguntas simples. Uma boa estrat\u00e9gia \u00e9 come\u00e7ar por fazer perguntas que sabe que est\u00e3o no seu arquivo de conversa\u00e7\u00e3o. Por exemplo:<\/p>\n<blockquote><p><em>\u201eQue ideias tive para utilizar a minha exporta\u00e7\u00e3o de dados ChatGPT?\u201c<\/em><br \/>\n<em>\u201eO que \u00e9 que eu escrevi sobre os sistemas RAG?\u201c<\/em><br \/>\n<em>\u201eQue estrat\u00e9gias discuti para utilizar a IA?\u201c<\/em><\/p><\/blockquote>\n<p>Estas perguntas cont\u00eam deliberadamente formula\u00e7\u00f5es abertas. O objetivo n\u00e3o \u00e9 encontrar um texto espec\u00edfico, mas descobrir um conte\u00fado tematicamente adequado. Quando coloca uma pergunta deste tipo ao seu sistema, o processo que cri\u00e1mos no cap\u00edtulo anterior decorre em segundo plano:<\/p>\n<ol>\n<li>A pergunta \u00e9 convertida numa incorpora\u00e7\u00e3o.<\/li>\n<li>A base de dados vetorial procura sec\u00e7\u00f5es de texto semelhantes.<\/li>\n<li>Estas passagens de texto s\u00e3o transferidas para a IA como contexto.<\/li>\n<li>A IA gera uma resposta com base neste contexto.<\/li>\n<\/ol>\n<p>O resultado pode ser surpreendente. Muitas vezes, surgem conversas que h\u00e1 muito se esqueceram. Ideias antigas reaparecem de repente no ecr\u00e3 - por vezes at\u00e9 num contexto completamente novo.<\/p>\n<p>\u00c9 precisamente este o ponto forte desta abordagem. O seu arquivo de chat torna-se uma fonte de conhecimento pesquis\u00e1vel.<\/p>\n<h3>Qualidade das respostas<\/h3>\n<p>Se experimentar algumas perguntas, aperceber-se-\u00e1 de que a qualidade das respostas pode variar. Isto \u00e9 perfeitamente normal. A qualidade de um sistema deste tipo depende de v\u00e1rios factores. Um fator importante \u00e9 o tamanho das sec\u00e7\u00f5es de texto. Se as sec\u00e7\u00f5es forem demasiado grandes, podem conter v\u00e1rios t\u00f3picos. Isto torna a pesquisa menos exacta.<\/p>\n<p>No entanto, se os peda\u00e7os forem demasiado pequenos, por vezes falta o contexto necess\u00e1rio. Outro fator \u00e9 o modelo de incorpora\u00e7\u00e3o. Os diferentes modelos reconhecem os contextos de significado de forma diferente. Alguns s\u00e3o particularmente adequados para textos t\u00e9cnicos, outros para linguagem geral.<\/p>\n<p>O n\u00famero de resultados obtidos tamb\u00e9m desempenha um papel importante. Por exemplo, se apenas forem recuperadas duas passagens de texto, podem faltar informa\u00e7\u00f5es importantes. Se, por outro lado, forem carregados demasiados textos, a IA pode ter dificuldade em reconhecer o contexto relevante.<\/p>\n<p>Estes par\u00e2metros podem ser facilmente ajustados mais tarde. O mais importante, antes de mais, \u00e9 ter um sistema b\u00e1sico a funcionar.<\/p>\n<h3>Problemas t\u00edpicos<\/h3>\n<p>Como em qualquer sistema t\u00e9cnico, tamb\u00e9m aqui podem ocorrer algumas dificuldades. Um problema comum \u00e9 o facto de a base de dados encontrar textos que s\u00e3o apenas parcialmente relevantes. Isto deve-se ao facto de a pesquisa sem\u00e2ntica trabalhar sempre com probabilidades.<\/p>\n<p>Outro problema pode surgir se os textos tiverem sido demasiado fragmentados. Se um pensamento estiver disperso por v\u00e1rias partes, a IA pode ter dificuldade em reconhecer o contexto.<\/p>\n<p>O pedido tamb\u00e9m desempenha um papel importante. Se o pedido n\u00e3o for claro, a IA pode n\u00e3o utilizar o contexto da melhor forma. Um exemplo de uma mensagem melhor poderia ser o seguinte:<\/p>\n<blockquote><p><em>Utilize os seguintes excertos de texto do meu arquivo de conhecimentos,<\/em><br \/>\n<em>responder \u00e0 pergunta da forma mais exacta poss\u00edvel.<\/em><br \/>\n<em>Se existirem conte\u00fados relevantes, fa\u00e7a um resumo dos mesmos.<\/em><\/p><\/blockquote>\n<p>Estes pequenos ajustamentos podem melhorar significativamente a qualidade das respostas.<\/p>\n<h3>Afina\u00e7\u00e3o fina<\/h3>\n<p>Assim que o sistema estiver basicamente a funcionar, come\u00e7a a parte mais interessante: a afina\u00e7\u00e3o. Aqui pode experimentar e melhorar o seu sistema de conhecimento passo a passo. Algumas optimiza\u00e7\u00f5es t\u00edpicas s\u00e3o<\/p>\n<ul>\n<li><strong>Ajustar o tamanho do bloco<\/strong><br \/>\nPor vezes, sec\u00e7\u00f5es de texto mais pequenas proporcionam melhores resultados. Noutros casos, \u00e9 \u00fatil mais contexto.<\/li>\n<li><strong>Utiliza\u00e7\u00e3o de um modelo de incorpora\u00e7\u00e3o diferente<\/strong><br \/>\nA altera\u00e7\u00e3o do modelo pode melhorar significativamente a qualidade da pesquisa sem\u00e2ntica.<\/li>\n<li><strong>Mais contexto para a IA<\/strong><br \/>\n\u00c9 poss\u00edvel obter mais resultados da base de dados, por exemplo, dez passagens de texto em vez de cinco.<\/li>\n<li><strong>Utilizar metadados<\/strong><br \/>\nSe guardar informa\u00e7\u00f5es adicionais - como a data ou o t\u00edtulo da chamada - pode filtrar a pesquisa com maior precis\u00e3o mais tarde.<\/li>\n<\/ul>\n<p>Estes ajustamentos fazem parte de qualquer sistema RAG real. Raramente existe um ajuste perfeito para todas as situa\u00e7\u00f5es. Mas \u00e9 precisamente este o atrativo de tais sistemas: podem ser continuamente melhorados.<\/p>\n<p>Com este cap\u00edtulo, realiz\u00e1mos o primeiro teste completo do nosso sistema. Vimos que a nossa IA de conhecimento pessoal \u00e9 efetivamente capaz de pesquisar conversas antigas e recuperar conte\u00fados relevantes.<\/p>\n<p>Isto significa que o n\u00facleo do nosso projeto j\u00e1 foi alcan\u00e7ado. Mas o sistema ainda pode ser consideravelmente alargado. No pr\u00f3ximo cap\u00edtulo, veremos como pode integrar fontes de dados adicionais e expandir o seu arquivo de conhecimentos pessoais, passo a passo.<\/p>\n<hr \/>\n\n\t\t\t<div class=\"display-post-types\">\n\n\t\t\t\t\t\t\t<style type=\"text\/css\">\n\t\t\t#dpt-wrapper-498 { --dpt-text-align: left;--dpt-image-crop: center;--dpt-border-radius: 5px;--dpt-h-gutter: 10px;--dpt-v-gutter: 10px; }\t\t\t<\/style>\n\t\t\t<style type=\"text\/css\">#dpt-wrapper-498 { --dpt-title-font-style:normal;--dpt-title-font-weight:600;--dpt-title-line-height:1.5;--dpt-title-text-decoration:none;--dpt-title-text-transform:none;--dpt-excerpt-font-style:normal;--dpt-excerpt-font-weight:400;--dpt-excerpt-line-height:1.5;--dpt-excerpt-text-decoration:none;--dpt-excerpt-text-transform:none;--dpt-meta1-font-style:normal;--dpt-meta1-font-weight:400;--dpt-meta1-line-height:1.9;--dpt-meta1-text-decoration:none;--dpt-meta1-text-transform:none;--dpt-meta2-font-style:normal;--dpt-meta2-font-weight:400;--dpt-meta2-line-height:1.9;--dpt-meta2-text-decoration:none;--dpt-meta2-text-transform:none; }<\/style><div class=\"dpt-main-header\">\n\t\t\t\t\t\t<div class=\"dpt-main-title\">\n\t\t\t\t\t\t\t<span class=\"dpt-main-title-text\">Artigos actuais sobre a Alemanha<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t<\/div>\t\t\t\n\t\t\t\t<div id=\"dpt-wrapper-498\" class=\"dpt-wrapper dpt-list2 land1 dpt-cropped dpt-flex-wrap\" >\n\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"was unsere opas vom krieg erz\u00e4hlten \u2013 und warum diese stimmen heute fehlen\" data-id=\"4674\"  data-category=\"allgemein gesellschaft\" data-post_tag=\"deutschland erfahrungen europa geopolitik krisen meinungsfreiheit musik sicherheitspolitik\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/01\/o-que-os-nossos-avos-nos-contaram-sobre-a-guerra-e-por-que-razao-essas-vozes-nao-existem-atualmente\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">O que os nossos av\u00f3s nos contaram sobre a guerra - e porque \u00e9 que essas vozes n\u00e3o existem hoje em dia<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Mem\u00f3rias de guerra dos av\u00f3s\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Opa-Kriegserinnerungen.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Opa-Kriegserinnerungen.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Opa-Kriegserinnerungen-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Opa-Kriegserinnerungen-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Opa-Kriegserinnerungen-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2026\/01\/o-que-os-nossos-avos-nos-contaram-sobre-a-guerra-e-por-que-razao-essas-vozes-nao-existem-atualmente\/\" rel=\"bookmark\">O que os nossos av\u00f3s nos contaram sobre a guerra - e porque \u00e9 que essas vozes n\u00e3o existem hoje em dia<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"wie die pandemie \u00d6konomen in bezug auf inflation, wachstum und wirtschaftliche erholung eines besseren belehrte\" data-id=\"5882\"  data-category=\"allgemein gesellschaft\" data-post_tag=\"denkmodelle deutschland energiepolitik europa geopolitik krisen\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/05\/como-a-pandemia-provou-que-os-economistas-estavam-errados-sobre-o-crescimento-da-inflacao-e-a-recuperacao-economica\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Como a pandemia provou que os economistas estavam errados sobre a infla\u00e7\u00e3o, o crescimento e a recupera\u00e7\u00e3o econ\u00f3mica<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"682\" class=\"attachment-full size-full\" alt=\"Hip\u00f3teses dos economistas durante a pandemia\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Pandemie-Oekonomen.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Pandemie-Oekonomen.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Pandemie-Oekonomen-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Pandemie-Oekonomen-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Pandemie-Oekonomen-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2026\/05\/como-a-pandemia-provou-que-os-economistas-estavam-errados-sobre-o-crescimento-da-inflacao-e-a-recuperacao-economica\/\" rel=\"bookmark\">Como a pandemia provou que os economistas estavam errados sobre a infla\u00e7\u00e3o, o crescimento e a recupera\u00e7\u00e3o econ\u00f3mica<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"kriegst\u00fcchtigkeit, wehrpflicht &#038; verweigerung: was im ernstfall zu tun ist\" data-id=\"2966\"  data-category=\"allgemein b\u00fccher gesellschaft tipps &amp; anleitungen\" data-post_tag=\"buch deutschland geopolitik gesundheit krisen pers\u00f6nlichkeitsentwicklung ratgeber sicherheitspolitik\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2025\/09\/objecao-de-consciencia-ao-servico-militar-o-que-fazer-em-caso-de-emergencia\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Aptid\u00e3o para a guerra, recrutamento e recusa: o que fazer em caso de emerg\u00eancia<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1536\" height=\"1024\" class=\"attachment-full size-full\" alt=\"Conscri\u00e7\u00e3o: recusar o servi\u00e7o militar\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/wehrpflicht-kriegsdienst-verweigern.jpg\" data-dpt-sizes=\"(max-width: 1536px) 100vw, 1536px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/wehrpflicht-kriegsdienst-verweigern.jpg 1536w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/wehrpflicht-kriegsdienst-verweigern-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/wehrpflicht-kriegsdienst-verweigern-1024x683.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/wehrpflicht-kriegsdienst-verweigern-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/wehrpflicht-kriegsdienst-verweigern-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2025\/09\/objecao-de-consciencia-ao-servico-militar-o-que-fazer-em-caso-de-emergencia\/\" rel=\"bookmark\">Aptid\u00e3o para a guerra, recrutamento e recusa: o que fazer em caso de emerg\u00eancia<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"vom ende der wehrpflicht bis zu schulstreiks: die neue debatte \u00fcber bundeswehr und bildung\" data-id=\"5147\"  data-category=\"allgemein gesellschaft\" data-post_tag=\"deutschland europa geopolitik krisen meinungsfreiheit sicherheitspolitik\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/03\/do-fim-do-servico-militar-obrigatorio-as-greves-escolares-o-novo-debate-sobre-as-forcas-armadas-alemas-e-a-educacao\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Do fim do servi\u00e7o militar obrigat\u00f3rio \u00e0s greves escolares: o novo debate sobre a Bundeswehr e a educa\u00e7\u00e3o<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Greves escolares sobre o servi\u00e7o militar obrigat\u00f3rio e o Bundeswehr nas escolas\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Wehrpflicht-Schulstreiks.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Wehrpflicht-Schulstreiks.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Wehrpflicht-Schulstreiks-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Wehrpflicht-Schulstreiks-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Wehrpflicht-Schulstreiks-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2026\/03\/do-fim-do-servico-militar-obrigatorio-as-greves-escolares-o-novo-debate-sobre-as-forcas-armadas-alemas-e-a-educacao\/\" rel=\"bookmark\">Do fim do servi\u00e7o militar obrigat\u00f3rio \u00e0s greves escolares: o novo debate sobre a Bundeswehr e a educa\u00e7\u00e3o<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\n<hr \/>\n<h2>Extens\u00f5es para o seu sistema de conhecimento de IA pessoal<\/h2>\n<p>J\u00e1 criou um sistema funcional com a configura\u00e7\u00e3o anterior. Os seus dados ChatGPT foram extra\u00eddos, convertidos em embeddings, armazenados em Qdrant e finalmente ligados a uma IA local. O resultado \u00e9 uma IA de conhecimento que pode aceder a conversas anteriores.<\/p>\n<p>Mas, em rigor, estamos apenas no in\u00edcio. A arquitetura que construiu n\u00e3o se limita aos dados ChatGPT. Funciona com qualquer tipo de texto. Qualquer coisa que possa ser convertida em documentos ou ficheiros de texto pode fazer parte deste sistema de conhecimento. \u00c9 aqui que reside o verdadeiro potencial deste tipo de sistemas.<\/p>\n<p>O que basicamente constru\u00edmos \u00e9 uma m\u00e1quina de conhecimento pessoal. E esta m\u00e1quina pode ser expandida passo a passo. Neste cap\u00edtulo, analisamos as possibilidades que da\u00ed adv\u00eam e como pode expandir o seu sistema a longo prazo.<\/p>\n<h3>Integrar fontes de dados adicionais<\/h3>\n<p>O pr\u00f3ximo passo mais \u00f3bvio \u00e9 adicionar mais conte\u00fado \u00e0 sua base de conhecimentos. As conversas do ChatGPT s\u00e3o um bom come\u00e7o, mas normalmente representam apenas uma parte do seu pr\u00f3prio conhecimento. Muitas informa\u00e7\u00f5es est\u00e3o dispon\u00edveis noutros formatos. Por exemplo:<\/p>\n<ul>\n<li>artigos pr\u00f3prios<\/li>\n<li>Notas<\/li>\n<li>Documentos PDF<\/li>\n<li>Documentos de investiga\u00e7\u00e3o<\/li>\n<li>E-Books<\/li>\n<li>Protocolos ou listas de ideias<\/li>\n<\/ul>\n<p>Todo este conte\u00fado pode ser processado da mesma forma que os nossos dados de conversa\u00e7\u00e3o. O processo permanece id\u00eantico:<\/p>\n<ul>\n<li>Extrair texto<\/li>\n<li>Dividir o texto em partes<\/li>\n<li>Criar incorpora\u00e7\u00f5es<\/li>\n<li>Guardar dados em Qdrant<\/li>\n<\/ul>\n<p>Um exemplo: Se tiver escrito muitos dos seus pr\u00f3prios artigos, pode importar esses textos para a sua base de dados de conhecimentos. A IA pode aceder-lhes mais tarde e reconhecer correla\u00e7\u00f5es. Por exemplo, pode perguntar:<\/p>\n<blockquote><p><em>\u201eQue artigos escrevi sobre IA?\u201c<\/em><\/p><\/blockquote>\n<p>ou<\/p>\n<blockquote><p><em>\u201eQue argumentos desenvolvi sobre este tema no passado?\u201c<\/em><\/p><\/blockquote>\n<p>A IA pesquisa ent\u00e3o o seu arquivo de artigos e utiliza o conte\u00fado que encontra como contexto. Desta forma, o seu sistema evolui passo a passo para um arquivo de conhecimentos abrangente.<\/p>\n<h3>V\u00e1rias bases de dados de conhecimentos<\/h3>\n<p>\u00c0 medida que a quantidade de dados aumenta, pode ser \u00fatil separar diferentes \u00e1reas. O Qdrant permite-lhe criar v\u00e1rias colec\u00e7\u00f5es. Cada cole\u00e7\u00e3o pode representar a sua pr\u00f3pria base de conhecimentos. Um poss\u00edvel sistema poderia ser assim, por exemplo:<\/p>\n<ul>\n<li><strong>Cole\u00e7\u00e3o 1<\/strong>Conversas ChatGPT<\/li>\n<li><strong>Cole\u00e7\u00e3o 2<\/strong>: Arquivo de artigos<\/li>\n<li><strong>Cole\u00e7\u00e3o 3<\/strong>: notas pessoais<\/li>\n<li><strong>Cole\u00e7\u00e3o 4<\/strong>Documenta\u00e7\u00e3o t\u00e9cnica<\/li>\n<\/ul>\n<p>Esta separa\u00e7\u00e3o tem v\u00e1rias vantagens. Em primeiro lugar, a estrutura mant\u00e9m-se clara. Sabe-se sempre onde est\u00e1 armazenado determinado conte\u00fado. Em segundo lugar, as consultas podem ser controladas de forma mais espec\u00edfica. Algumas perguntas talvez devam pesquisar apenas o arquivo de artigos, outras todo o sistema de conhecimento. Um exemplo:<\/p>\n<ul>\n<li>Uma pergunta de investiga\u00e7\u00e3o s\u00f3 pode ser pesquisada no arquivo de artigos.<\/li>\n<li>Uma quest\u00e3o estrat\u00e9gica, por outro lado, poderia ter em conta todas as colec\u00e7\u00f5es ao mesmo tempo.<\/li>\n<\/ul>\n<p>Estas estruturas tornam os sistemas de conhecimento de maior dimens\u00e3o significativamente mais eficientes.<\/p>\n<h3>Actualiza\u00e7\u00f5es autom\u00e1ticas<\/h3>\n<p>Outro passo \u00fatil \u00e9 atualizar o sistema regularmente. No exemplo anterior, process\u00e1mos a exporta\u00e7\u00e3o de dados ChatGPT uma vez. No entanto, na pr\u00e1tica, est\u00e3o constantemente a ser criados novos conte\u00fados.<\/p>\n<p>Novas conversas, novas notas, novos documentos - toda esta informa\u00e7\u00e3o pode tamb\u00e9m tornar-se parte do seu arquivo de conhecimentos.<br \/>\nPor isso, vale a pena pensar em actualiza\u00e7\u00f5es autom\u00e1ticas. Uma solu\u00e7\u00e3o simples consiste em importar regularmente novos dados. Por exemplo:<\/p>\n<ul>\n<li>Processar novos dados de conversa\u00e7\u00e3o uma vez por semana<\/li>\n<li>Importa\u00e7\u00e3o autom\u00e1tica de novos documentos<\/li>\n<li>Adicionar imediatamente novos artigos \u00e0 base de dados<\/li>\n<\/ul>\n<p>Tecnicamente, isto \u00e9 relativamente f\u00e1cil de implementar. Um pequeno script pode verificar regularmente se est\u00e3o dispon\u00edveis novos ficheiros e process\u00e1-los automaticamente. Isto permite que o seu sistema de conhecimento cres\u00e7a continuamente. Com o tempo, \u00e9 criado um arquivo cada vez mais extenso que documenta os seus pensamentos e projectos.<\/p>\n<h3>Integra\u00e7\u00e3o nas suas pr\u00f3prias aplica\u00e7\u00f5es<\/h3>\n<p>At\u00e9 agora, o nosso sistema tem sido utilizado atrav\u00e9s de simples scripts Python. Mas, a longo prazo, este sistema tamb\u00e9m pode ser integrado nas suas pr\u00f3prias aplica\u00e7\u00f5es. Por exemplo, muitos programadores est\u00e3o a criar pequenas interfaces Web que lhes permitem utilizar diretamente os seus conhecimentos de IA.<\/p>\n<p>Em vez de iniciar um script, pode simplesmente escrever uma pergunta num campo de entrada. O mesmo processo \u00e9 executado em segundo plano:<\/p>\n<ol>\n<li>Criar incorpora\u00e7\u00e3o<\/li>\n<li>Pesquisar na base de dados<\/li>\n<li>Transferir o contexto para a IA<\/li>\n<li>Gerar resposta<\/li>\n<\/ol>\n<p>O resultado aparece ent\u00e3o diretamente na interface do utilizador. Uma aplica\u00e7\u00e3o deste tipo pode assumir formas muito diferentes. Por exemplo:<\/p>\n<ul>\n<li>uma IA de investiga\u00e7\u00e3o pessoal<\/li>\n<li>um assistente de conhecimentos para projectos<\/li>\n<li>um motor de busca de ideias<\/li>\n<li>um arquivo de artigos e notas<\/li>\n<\/ul>\n<p>Torna-se particularmente interessante quando se combinam estes sistemas com outras ferramentas. Por exemplo, um sistema editorial pode aceder automaticamente ao seu arquivo de conhecimentos e utilizar artigos anteriores como base de investiga\u00e7\u00e3o. Ou um sistema de notas poderia integrar automaticamente novas ideias na sua base de dados.<\/p>\n<p>Por outras palavras, a IA torna-se parte do seu ambiente de trabalho di\u00e1rio. Isto torna claro que o nosso pequeno projeto vai muito al\u00e9m da exporta\u00e7\u00e3o de dados original do ChatGPT.<\/p>\n<p>N\u00e3o cri\u00e1mos apenas um arquivo. Cri\u00e1mos uma arquitetura que pode ser expandida conforme necess\u00e1rio. E \u00e9 precisamente aqui que reside o verdadeiro valor de tais sistemas. Eles n\u00e3o s\u00e3o est\u00e1ticos. Crescem com o seu conhecimento.<\/p>\n<h2>Vers\u00e3o alargada da conduta para descarregar<\/h2>\n<p>O script seguinte \u00e9 uma vers\u00e3o alargada do pipeline do artigo. \u00c9 mais robusto e muito mais pr\u00f3ximo de uma solu\u00e7\u00e3o produtiva. Tr\u00eas coisas foram melhoradas:<\/p>\n<ul>\n<li><strong>Indicador de progresso<\/strong>O utilizador pode ver, a qualquer momento, quantos textos j\u00e1 foram processados.<\/li>\n<li><strong>Importa\u00e7\u00e3o por lotes<\/strong>Os embeddings s\u00e3o recolhidos e escritos no Qdrant em blocos, o que \u00e9 significativamente mais r\u00e1pido do que as importa\u00e7\u00f5es individuais.<\/li>\n<li><strong>Pipeline de incorpora\u00e7\u00e3o mais r\u00e1pido<\/strong>O gui\u00e3o funciona de forma estruturada com partes preparadas e reduz as chamadas desnecess\u00e1rias.<\/li>\n<\/ul>\n<p>Este script \u00e9, portanto, particularmente adequado se a exporta\u00e7\u00e3o do ChatGPT for maior - v\u00e1rios milhares de conversas, por exemplo. Processo t\u00edpico:<\/p>\n<ol>\n<li>Carregar exporta\u00e7\u00e3o ChatGPT<\/li>\n<li>Extrair textos<\/li>\n<li>Dividir o texto em partes<\/li>\n<li>Criar incorpora\u00e7\u00f5es<\/li>\n<li>Importa\u00e7\u00e3o em lote para a Qdrant<\/li>\n<li>Efetuar uma consulta de teste<\/li>\n<\/ol>\n<h3>Defini\u00e7\u00f5es importantes no gui\u00e3o<\/h3>\n<p>Alguns valores devem ser ajustados pelo utilizador:<\/p>\n<ul>\n<li><strong>EXPORT_PFAD<\/strong><br \/>\nCaminho para os ficheiros conversations.json, na sua maioria numerados, da exporta\u00e7\u00e3o do ChatGPT.<\/li>\n<li><strong>NOME_DA_COLEC\u00c7\u00c3O<\/strong><br \/>\nNome da cole\u00e7\u00e3o de bases de dados de vectores.<\/li>\n<li><strong>MODELO_DE_EMBED<\/strong><br \/>\nModelo de incorpora\u00e7\u00e3o do Ollama, por exemplo, nomic-embed-text ou mxbai-embed-large<\/li>\n<li><strong>MODELO DE RESPOSTA<\/strong><br \/>\nModelo lingu\u00edstico para a consulta de teste, por exemplo, lama, mistral ou gpt:oss<\/li>\n<li><strong>VECTOR_SIZE<\/strong><br \/>\nDimens\u00e3o do modelo de incorpora\u00e7\u00e3o.<br \/>\ntexto n\u00f3mico \u2192 768<br \/>\nmxbai-embed-large \u2192 1024<\/li>\n<li><strong>CHUNK_SIZE<\/strong><br \/>\nTamanho das sec\u00e7\u00f5es de texto.<br \/>\nNormalmente, 300-600 palavras.<\/li>\n<li><strong>BATCH_SIZE<\/strong><br \/>\nQuantos embeddings s\u00e3o escritos no Qdrant ao mesmo tempo.<br \/>\nValor t\u00edpico: 50-200.<\/li>\n<\/ul>\n<p><strong><a class=\"downloadbtn\" href=\"https:\/\/markus-schall.de\/downloads\/ChatGPT_Export_Scripts.zip\">Descarregar o script Python<\/a><\/strong><\/p>\n<h3>Mantenha-se atualizado - sem publicidade<\/h3>\n<p>Se quiser manter-se informado sobre as actualiza\u00e7\u00f5es deste script ou sobre novos downloads, pode subscrever a minha newsletter mensal. O boletim informativo \u00e9 deliberadamente enxuto, completamente livre de an\u00fancios e aparece apenas uma vez por m\u00eas. Nela encontrar\u00e1 uma sele\u00e7\u00e3o dos novos artigos mais importantes, conte\u00fados pr\u00e1ticos sobre IA, software e digitaliza\u00e7\u00e3o, bem como informa\u00e7\u00f5es sobre scripts actualizados ou novas ofertas de descarregamento. Sem spam, sem e-mails di\u00e1rios - apenas o conte\u00fado mais relevante em formato compacto. Se quiser seguir estes desenvolvimentos continuamente, a newsletter \u00e9 a forma mais f\u00e1cil de se manter atualizado.<\/p>\n<div class=\"mailster-block-form-type-content wp-block-mailster-form-outside-wrapper wp-block-mailster-form-outside-wrapper-c1cd9d66 wp-block-mailster-form-outside-wrapper-5542 wp-block-mailster-form\"><style class=\"mailster-form-style-c1cd9d66\">.wp-block-mailster-form-outside-wrapper-c1cd9d66 .mailster-block-form-inner > *{margin-block-start:0;margin-block-end:0;}.wp-block-mailster-form-outside-wrapper-c1cd9d66 .mailster-block-form-inner > * + *{margin-block-start:0.9em;margin-block-end:0;}.wp-block-mailster-form-outside-wrapper-c1cd9d66 .wp-block-mailster-form-wrapper .mailster-label{}.wp-block-mailster-form-outside-wrapper-c1cd9d66 .wp-block-mailster-form-wrapper .input{}.mailster-block-form input[type=\"text\"]{padding:10px 15px;border:1px solid rgb(204, 204, 204);font:17px \/ 25.5px -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";border-radius:0px;background:rgb(250, 250, 250) none repeat scroll 0% 0% \/ auto padding-box border-box;box-shadow:none;line-height:25.5px;appearance:auto;outline:rgb(102, 102, 102) none 0px;text-transform:none;letter-spacing:normal;height:47px;}.mailster-block-form input[type=\"email\"]{padding:10px 15px;border:1px solid rgb(204, 204, 204);font:17px \/ 25.5px -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";border-radius:0px;background:rgb(250, 250, 250) none repeat scroll 0% 0% \/ auto padding-box border-box;box-shadow:none;line-height:25.5px;appearance:auto;outline:rgb(102, 102, 102) none 0px;text-transform:none;letter-spacing:normal;height:47px;}.mailster-block-form input[type=\"date\"]{}.mailster-block-form input[type=\"checkbox\"]{}.mailster-block-form input[type=\"radio\"]{}.mailster-block-form input[type=\"submit\"]{padding:10px 20px;border:0px solid rgb(0, 0, 0);font:17px \/ 25.5px -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";border-radius:5px;background:rgb(2, 123, 184) none repeat scroll 0% 0% \/ auto padding-box border-box;box-shadow:none;line-height:25.5px;appearance:button;outline:rgb(255, 255, 255) none 0px;text-transform:none;letter-spacing:normal;border:0px solid rgb(0, 0, 0);outline:rgb(255, 255, 255) none 0px;color:rgb(255, 255, 255);}.mailster-block-form select{}.mailster-block-form label{padding:0px;border:0px none rgb(58, 58, 58);font:17px \/ 25.5px -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";border-radius:0px;background:rgba(0, 0, 0, 0) none repeat scroll 0% 0% \/ auto padding-box border-box;box-shadow:none;line-height:25.5px;appearance:none;outline:rgb(58, 58, 58) none 0px;text-transform:none;letter-spacing:normal;}.mailster-block-form textarea{}<\/style>\n<form method=\"post\" novalidate class=\"wp-block-mailster-form-wrapper mailster-block-form\" action=\"\"><div class=\"mailster-block-form-inner\">\n<div class=\"wp-block-mailster-messages mailster-block-form-info mailster-wrapper\" aria-hidden=\"true\"><style>:root {--mailster--color--success-background: #6fbf4d;--mailster--color--success: #ffffff;--mailster--color--error-background: #bf4d4d;--mailster--color--error: #ffffff;}<\/style><div class=\"mailster-block-form-info-success\" style=\"width:100%\"><div>Confirme a sua subscri\u00e7\u00e3o!<\/div><div class=\"mailster-block-form-info-extra\"><\/div><\/div><div class=\"mailster-block-form-info-error\" style=\"width:100%\"><div>Alguns campos est\u00e3o em falta ou incorrectos!<\/div><div class=\"mailster-block-form-info-extra\"><\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-mailster-field-firstname mailster-wrapper mailster-wrapper-type-text mailster-wrapper-inline\" style=\"width:100%\"><input name=\"firstname\" id=\"mailster-id-41b55c\" type=\"text\" aria-required=\"false\" aria-label=\"Nome pr\u00f3prio\" spellcheck=\"false\" value=\"\" class=\"input\" autocomplete=\"given-name\" placeholder=\" \"\/><label for=\"mailster-id-41b55c\" class=\"mailster-label\">Nome pr\u00f3prio<\/label><\/div>\n\n\n\n<div class=\"wp-block-mailster-field-email mailster-wrapper mailster-wrapper-required mailster-wrapper-type-email mailster-wrapper-inline mailster-wrapper-asterisk\"><input name=\"email\" id=\"mailster-id-f70659\" type=\"email\" aria-required=\"true\" aria-label=\"correio eletr\u00f3nico\" spellcheck=\"false\" required value=\"\" class=\"input\" autocomplete=\"email\" placeholder=\" \"\/><label for=\"mailster-id-f70659\" class=\"mailster-label\">correio eletr\u00f3nico<\/label><\/div>\n\n\n\n<div class=\"wp-block-mailster-field-submit mailster-wrapper mailster-wrapper-type-submit mailster-wrapper-align-center wp-block-button\"><input name=\"submit\" id=\"mailster-id-7c1924\" type=\"submit\" value=\"Registe-se aqui\" class=\"wp-block-button__link submit-button\"\/><\/div>\n<\/div><script class=\"mailster-block-form-data\" type=\"application\/json\">{\"id\":5542,\"identifier\":\"c1cd9d66\",\"cooldown\":0,\"isPreview\":false,\"type\":\"submission\",\"prefill\":false}<\/script><input name=\"_timestamp\" type=\"hidden\" value=\"1777705879\" \/>\n<button class=\"mailster-block-form-close\" aria-label=\"fechar\" tabindex=\"0\"><svg viewbox=\"0 0 100 100\"><path d=\"M100 10.71 89.29 0 50 39.29 10.71 0 0 10.71 39.29 50 0 89.29 10.71 100 50 60.71 89.29 100 100 89.29 60.71 50z\"\/><\/svg><\/button><input type=\"hidden\" name=\"trp-form-language\" value=\"pt\"\/><\/form>\n<\/div>\n<h3>Perspectivas para a Parte 3: Aperfei\u00e7oar, analisar e otimizar a utiliza\u00e7\u00e3o dos dados<\/h3>\n<p>Na terceira parte da s\u00e9rie, vamos um passo al\u00e9m e damos uma olhada no que voc\u00ea pode realmente obter do banco de dados de conhecimento que voc\u00ea criou. Agora que os dados do ChatGPT foram armazenados no Qdrant, o foco est\u00e1 na sua utiliza\u00e7\u00e3o efectiva. Damos uma vista de olhos \u00e0 interface Web do Qdrant, analisamos os dados armazenados e verificamos se a pesquisa sem\u00e2ntica j\u00e1 funciona bem. Tamb\u00e9m analisamos ajustes finos importantes: Como deve ser selecionado o chunking em fun\u00e7\u00e3o do caso de utiliza\u00e7\u00e3o? Como \u00e9 que o contexto pode ser transferido de forma optimizada para um modelo lingu\u00edstico local? E como \u00e9 que a qualidade das respostas pode ser especificamente melhorada? A terceira parte destina-se a todos aqueles que querem tirar mais partido do sistema e desenvolv\u00ea-lo conscientemente.<\/p>\n<hr \/>\n\n\t\t\t<div class=\"display-post-types\">\n\n\t\t\t\t\t\t\t<style type=\"text\/css\">\n\t\t\t#dpt-wrapper-499 { --dpt-text-align: left;--dpt-image-crop: center;--dpt-border-radius: 5px;--dpt-h-gutter: 10px;--dpt-v-gutter: 9px; }\t\t\t<\/style>\n\t\t\t<style type=\"text\/css\">#dpt-wrapper-499 { --dpt-title-font-style:normal;--dpt-title-font-weight:600;--dpt-title-line-height:1.5;--dpt-title-text-decoration:none;--dpt-title-text-transform:none;--dpt-excerpt-font-style:normal;--dpt-excerpt-font-weight:400;--dpt-excerpt-line-height:1.5;--dpt-excerpt-text-decoration:none;--dpt-excerpt-text-transform:none;--dpt-meta1-font-style:normal;--dpt-meta1-font-weight:400;--dpt-meta1-line-height:1.9;--dpt-meta1-text-decoration:none;--dpt-meta1-text-transform:none;--dpt-meta2-font-style:normal;--dpt-meta2-font-weight:400;--dpt-meta2-line-height:1.9;--dpt-meta2-text-decoration:none;--dpt-meta2-text-transform:none; }<\/style><div class=\"dpt-main-header\">\n\t\t\t\t\t\t<div class=\"dpt-main-title\">\n\t\t\t\t\t\t\t<span class=\"dpt-main-title-text\">Artigos actuais sobre intelig\u00eancia artificial<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t<\/div>\t\t\t\n\t\t\t\t<div id=\"dpt-wrapper-499\" class=\"dpt-wrapper dpt-mag1 land1 dpt-cropped dpt-flex-wrap\" >\n\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"ki f\u00fcr anf\u00e4nger: wie du ohne vorkenntnisse sinnvoll mit k\u00fcnstlicher intelligenz startest\" data-id=\"4199\"  data-category=\"allgemein apple iphone &amp; ipad apple macos ki-systeme tipps &amp; anleitungen\" data-post_tag=\"denkmodelle k\u00fcnstliche intelligenz lernen prozesse\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2025\/12\/ki-para-principiantes-como-comecar-a-utilizar-a-inteligencia-artificial-sem-conhecimentos-previos\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">IA para principiantes: como come\u00e7ar a utilizar a intelig\u00eancia artificial sem conhecimentos pr\u00e9vios<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"IA para principiantes\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/KI-fuer-Einsteiger-Computer.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/KI-fuer-Einsteiger-Computer.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/KI-fuer-Einsteiger-Computer-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/KI-fuer-Einsteiger-Computer-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/KI-fuer-Einsteiger-Computer-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2025\/12\/ki-para-principiantes-como-comecar-a-utilizar-a-inteligencia-artificial-sem-conhecimentos-previos\/\" rel=\"bookmark\">IA para principiantes: como come\u00e7ar a utilizar a intelig\u00eancia artificial sem conhecimentos pr\u00e9vios<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"rag mit ollama und qdrant als universelle suchmaschine f\u00fcr eigene daten\" data-id=\"2764\"  data-category=\"filemaker &amp; erp ki-systeme\" data-post_tag=\"datenbanken docker k\u00fcnstliche intelligenz llama llm mistral ollama qdrant vektordatenbank\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2025\/08\/rag-com-ollama-e-qdrant-como-motor-de-pesquisa-universal-para-dados-proprios\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">RAG com Ollama e Qdrant como motor de pesquisa universal para dados pr\u00f3prios<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1920\" height=\"640\" class=\"attachment-full size-full\" alt=\"Alargar a IA local com bases de dados utilizando RAG, Ollama e Qdrant\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/lokale-ki-rag-ollama-qdrant.jpg\" data-dpt-sizes=\"(max-width: 1920px) 100vw, 1920px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/lokale-ki-rag-ollama-qdrant.jpg 1920w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/lokale-ki-rag-ollama-qdrant-300x100.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/lokale-ki-rag-ollama-qdrant-1024x341.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/lokale-ki-rag-ollama-qdrant-768x256.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/lokale-ki-rag-ollama-qdrant-1536x512.jpg 1536w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/lokale-ki-rag-ollama-qdrant-18x6.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2025\/08\/rag-com-ollama-e-qdrant-como-motor-de-pesquisa-universal-para-dados-proprios\/\" rel=\"bookmark\">RAG com Ollama e Qdrant como motor de pesquisa universal para dados pr\u00f3prios<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"wie man heute schon ki-spezialisten ausbilden kann \u2013 chancen f\u00fcr unternehmen und azubis\" data-id=\"3120\"  data-category=\"allgemein b\u00fccher ki-systeme tipps &amp; anleitungen\" data-post_tag=\"buch datenbanken datenlogik denkmodelle k\u00fcnstliche intelligenz llm sprachmodell\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2025\/10\/como-formar-especialistas-em-ki-atualmente-oportunidades-para-empresas-e-formandos\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Como os especialistas em IA podem ser formados atualmente - oportunidades para empresas e formandos<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Formar um especialista em IA\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/ki-spezialist-ausbildung.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/ki-spezialist-ausbildung.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/ki-spezialist-ausbildung-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/ki-spezialist-ausbildung-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/ki-spezialist-ausbildung-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2025\/10\/como-formar-especialistas-em-ki-atualmente-oportunidades-para-empresas-e-formandos\/\" rel=\"bookmark\">Como os especialistas em IA podem ser formados atualmente - oportunidades para empresas e formandos<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"wie tiere zeit wahrnehmen \u2013 und was das f\u00fcr die zukunft der ki bedeutet\" data-id=\"4918\"  data-category=\"allgemein gesellschaft ki-systeme\" data-post_tag=\"denkmodelle erfahrungen k\u00fcnstliche intelligenz llm portrait prozesse sprachmodell\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/02\/como-os-animais-percepcionam-o-tempo-e-o-que-isso-significa-para-o-futuro-da-ki\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Como os animais percepcionam o tempo - e o que isso significa para o futuro da IA<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Animais, IA e perce\u00e7\u00e3o do tempo\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Tiere-KI-Zeitwahrnehmung-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2026\/02\/como-os-animais-percepcionam-o-tempo-e-o-que-isso-significa-para-o-futuro-da-ki\/\" rel=\"bookmark\">Como os animais percepcionam o tempo - e o que isso significa para o futuro da IA<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\n<hr \/>\n<h2>Perguntas mais frequentes<\/h2>\n<ol>\n<li><strong>Qual \u00e9 o objetivo de integrar a minha exporta\u00e7\u00e3o de dados do ChatGPT na minha pr\u00f3pria IA?<\/strong><br \/>\nA maior vantagem \u00e9 que pode utilizar as suas pr\u00f3prias conversas e pensamentos a longo prazo. Muitas pessoas t\u00eam conversas intensas com sistemas de IA sobre projectos, ideias, an\u00e1lises ou quest\u00f5es pessoais. Este conte\u00fado desaparece normalmente no decurso da plataforma. No entanto, se o exportar e o integrar na sua pr\u00f3pria base de dados de conhecimentos, torna-se um arquivo pessoal. A sua IA local pode ent\u00e3o aceder a este conte\u00fado, reconhecer correla\u00e7\u00f5es e ajud\u00e1-lo com novas quest\u00f5es. Em vez de come\u00e7ar sempre do zero, o utilizador baseia-se no seu pr\u00f3prio pensamento, passo a passo.<\/li>\n<li><strong>N\u00e3o \u00e9 muito complicado para algu\u00e9m que n\u00e3o \u00e9 um programador?<\/strong><br \/>\n\u00c0 primeira vista, termos como embeddings, bases de dados vectoriais ou sistemas RAG parecem complexos. Na pr\u00e1tica, por\u00e9m, as etapas individuais s\u00e3o estruturadas de forma relativamente clara. Basicamente, s\u00e3o necess\u00e1rios apenas tr\u00eas componentes: uma IA local (por exemplo, atrav\u00e9s do Ollama), uma base de dados vetorial como o Qdrant e um pequeno script Python que processa os dados. Muitos dos passos s\u00e3o autom\u00e1ticos. Uma vez configurado, o sistema funciona como um motor de busca normal ou um chatbot - exceto que funciona com os seus pr\u00f3prios conhecimentos.<\/li>\n<li><strong>Que dados cont\u00e9m efetivamente a exporta\u00e7\u00e3o do ChatGPT?<\/strong><br \/>\nA exporta\u00e7\u00e3o ChatGPT cont\u00e9m normalmente todas as conversas que o utilizador teve com o sistema. Isto inclui n\u00e3o s\u00f3 as mensagens de texto propriamente ditas, mas tamb\u00e9m metadados como t\u00edtulos de conversas, registos de data e hora e informa\u00e7\u00f5es estruturais. Os dados est\u00e3o normalmente dispon\u00edveis no formato JSON e podem, portanto, ser processados com relativa facilidade com scripts. Em muitos casos, a exporta\u00e7\u00e3o tamb\u00e9m inclui ficheiros multim\u00e9dia ou lingu\u00edsticos, se estes tiverem sido utilizados nas conversas. No entanto, \u00e9 sobretudo o conte\u00fado de texto que interessa na cria\u00e7\u00e3o de uma base de dados de conhecimentos.<\/li>\n<li><strong>Por que raz\u00e3o \u00e9 utilizada uma base de dados vetorial para estes sistemas e n\u00e3o uma base de dados normal?<\/strong><br \/>\nAs bases de dados normais s\u00e3o ideais para a pesquisa de termos ou IDs espec\u00edficos. No entanto, s\u00e3o menos adequadas para pesquisas sem\u00e2nticas. Uma base de dados vetorial armazena textos n\u00e3o apenas como cadeias de caracteres, mas tamb\u00e9m como vectores matem\u00e1ticos que descrevem o significado de um texto. Isto permite que o sistema procure semelhan\u00e7as no conte\u00fado. Por exemplo, se pedir \u201eideias para artigos sobre IA\u201c, a base de dados tamb\u00e9m pode encontrar conte\u00fado que contenha outras frases, como \u201et\u00f3picos para artigos de blogue sobre intelig\u00eancia artificial\u201c.<\/li>\n<li><strong>O que s\u00e3o os embeddings e porque \u00e9 que s\u00e3o t\u00e3o importantes?<\/strong><br \/>\nOs embeddings s\u00e3o representa\u00e7\u00f5es matem\u00e1ticas de textos. Um modelo de linguagem converte um texto numa lista de n\u00fameros que descrevem o significado do texto. Os textos com significados semelhantes encontram-se pr\u00f3ximos uns dos outros no espa\u00e7o matem\u00e1tico. Isto permite que uma base de dados vetorial procure posteriormente conte\u00fados semelhantes. Sem os embeddings, uma pesquisa sem\u00e2ntica dificilmente seria poss\u00edvel. Constituem a base dos sistemas RAG modernos e s\u00e3o a raz\u00e3o pela qual estes sistemas s\u00e3o muito mais flex\u00edveis do que as pesquisas cl\u00e1ssicas de texto integral.<\/li>\n<li><strong>Qual \u00e9 o tamanho da minha exporta\u00e7\u00e3o de dados ChatGPT?<\/strong><br \/>\nO tamanho n\u00e3o desempenha um papel importante. Mesmo v\u00e1rios milhares de conversas podem ser processadas sem qualquer problema. O que \u00e9 mais importante \u00e9 o n\u00famero de sec\u00e7\u00f5es de texto geradas, os chamados chunks. Uma exporta\u00e7\u00e3o maior leva a mais peda\u00e7os e, por conseguinte, a mais incorpora\u00e7\u00f5es. No entanto, as bases de dados vectoriais modernas podem gerir facilmente milh\u00f5es de entradas deste tipo. Mesmo um pequeno servidor ou um computador de secret\u00e1ria potente \u00e9 completamente suficiente para um assistente de conhecimentos privado.<\/li>\n<li><strong>Porque \u00e9 que o texto \u00e9 dividido em pequenas sec\u00e7\u00f5es antes de ser processado?<\/strong><br \/>\nSe guardar conversas completas ou textos extensos diretamente como embeddings, a pesquisa sem\u00e2ntica torna-se imprecisa. Um \u00fanico texto pode conter v\u00e1rios t\u00f3picos. Ao dividi-lo em sec\u00e7\u00f5es mais pequenas, o sistema pode posteriormente efetuar uma pesquisa muito mais precisa. Cada sec\u00e7\u00e3o descreve um t\u00f3pico mais claro. Isto permite que a base de dados encontre exatamente as partes de uma conversa que realmente se enquadram na pergunta atual.<\/li>\n<li><strong>Qual \u00e9 o papel do Ollama neste sistema?<\/strong><br \/>\nO Ollama funciona como uma plataforma local para modelos lingu\u00edsticos. Permite-lhe executar modelos de IA diretamente no seu pr\u00f3prio computador. No nosso sistema, o Ollama desempenha duas tarefas: Cria embeddings para textos e gera respostas a perguntas. A vantagem \u00e9 que todos os dados permanecem locais. Isto significa que as suas conversas e o seu arquivo de conhecimentos nunca saem do seu computador.<\/li>\n<li><strong>Porque \u00e9 que o Qdrant \u00e9 utilizado como base de dados vetorial?<\/strong><br \/>\nQdrant \u00e9 uma base de dados vetorial moderna que foi especialmente desenvolvida para aplica\u00e7\u00f5es de IA. \u00c9 r\u00e1pida, f\u00e1cil de installieren e est\u00e1 muito bem documentada. Pode tamb\u00e9m ser facilmente ligada ao Python e a muitos quadros de IA. O Qdrant \u00e9, por conseguinte, uma solu\u00e7\u00e3o particularmente pr\u00e1tica para os sistemas de conhecimento locais. As alternativas incluem Chroma, Weaviate ou Pinecone.<\/li>\n<li><strong>O que significa o termo sistema RAG?<\/strong><br \/>\nRAG significa \u201eRetrieval-Augmented Generation\u201c (Gera\u00e7\u00e3o Aumentada por Recupera\u00e7\u00e3o). Trata-se de uma arquitetura em que uma IA come\u00e7a por recuperar informa\u00e7\u00f5es relevantes de uma base de dados e depois utiliza-as para gerar uma resposta. A IA combina assim os seus pr\u00f3prios conhecimentos com dados externos. Isto permite-lhe dar respostas muito precisas e, ao mesmo tempo, aceder a informa\u00e7\u00f5es actuais ou pessoais.<\/li>\n<li><strong>Posso tamb\u00e9m integrar outras fontes de dados neste sistema?<\/strong><br \/>\nDe facto, esta \u00e9 uma das maiores vantagens desta arquitetura. O sistema n\u00e3o se limita aos dados do ChatGPT. Tamb\u00e9m pode integrar os seus pr\u00f3prios artigos, notas, PDFs, trabalhos de investiga\u00e7\u00e3o ou outros documentos. Desde que o conte\u00fado possa ser processado em forma de texto, pode tornar-se parte da base de conhecimentos. Com o tempo, o seu sistema transformar-se-\u00e1 num arquivo de conhecimentos abrangente.<\/li>\n<li><strong>Qual a atualidade de um tal sistema de conhecimentos?<\/strong><br \/>\nA atualidade depende da frequ\u00eancia com que importa novos dados. Por exemplo, pode processar regularmente novas exporta\u00e7\u00f5es do ChatGPT ou criar um script que reconhe\u00e7a automaticamente novos documentos. Muitos sistemas est\u00e3o configurados para serem actualizados uma vez por semana ou uma vez por m\u00eas. Isto mant\u00e9m a base de conhecimentos sempre actualizada.<\/li>\n<li><strong>De que hardware necessito para um sistema deste tipo?<\/strong><br \/>\nUm computador de secret\u00e1ria moderno \u00e9 suficiente para projectos mais pequenos. Se pretender utilizar um modelo de linguagem maior, uma GPU pode ser \u00fatil. No entanto, muitos utilizadores tamb\u00e9m executam os seus sistemas de conhecimento com sucesso num port\u00e1til potente ou num mini-servidor. Acima de tudo, \u00e9 importante ter mem\u00f3ria suficiente e espa\u00e7o de armazenamento suficiente para a base de dados.<\/li>\n<li><strong>Com que rapidez \u00e9 que um sistema deste tipo funciona na pr\u00e1tica?<\/strong><br \/>\nA velocidade depende de v\u00e1rios factores, por exemplo, o tamanho da base de dados, o hardware e o modelo de linguagem utilizado. Em muitos casos, uma consulta demora apenas alguns segundos. A pesquisa vetorial propriamente dita \u00e9 geralmente extremamente r\u00e1pida. A maior parte do tempo \u00e9 frequentemente gasto na gera\u00e7\u00e3o da resposta do modelo de linguagem.<\/li>\n<li><strong>\u00c9 poss\u00edvel separar v\u00e1rias \u00e1reas do conhecimento?<\/strong><br \/>\nSim, as bases de dados vectoriais como o Qdrant permitem a utiliza\u00e7\u00e3o de v\u00e1rias colec\u00e7\u00f5es. Cada cole\u00e7\u00e3o pode representar uma \u00e1rea tem\u00e1tica distinta. Por exemplo, pode criar uma cole\u00e7\u00e3o para conversas ChatGPT, uma para artigos e outra para notas. Isto permite que as \u00e1reas de conhecimento sejam claramente estruturadas e pesquisadas de uma forma direcionada.<\/li>\n<li><strong>Qu\u00e3o seguros est\u00e3o os meus dados num sistema de IA local?<\/strong><br \/>\nA grande vantagem de um sistema local \u00e9 o facto de os seus dados n\u00e3o terem de ser transferidos para servi\u00e7os externos. Todas as informa\u00e7\u00f5es permanecem no seu pr\u00f3prio computador ou servidor. Isto \u00e9 particularmente interessante para conte\u00fados sens\u00edveis. Naturalmente, deve criar c\u00f3pias de seguran\u00e7a regulares e proteger o seu sistema contra o acesso n\u00e3o autorizado.<\/li>\n<li><strong>Posso tamb\u00e9m integrar este sistema nas minhas pr\u00f3prias aplica\u00e7\u00f5es?<\/strong><br \/>\nSim, a maioria dos componentes pode ser acedida atrav\u00e9s de interfaces de programa\u00e7\u00e3o. Isto permite-lhe integrar o seu sistema de conhecimentos nas suas pr\u00f3prias ferramentas, por exemplo, numa interface Web, num sistema editorial ou numa aplica\u00e7\u00e3o de notas. Muitos programadores criam pequenas aplica\u00e7\u00f5es que tornam a sua base de dados de conhecimentos diretamente acess\u00edvel atrav\u00e9s de uma interface de conversa\u00e7\u00e3o.<\/li>\n<li><strong>Como poder\u00e1 esta tecnologia evoluir no futuro?<\/strong><br \/>\nAs IA de conhecimento pessoal est\u00e3o provavelmente apenas no in\u00edcio do seu desenvolvimento. No futuro, esses sistemas poder\u00e3o integrar automaticamente novos conte\u00fados, criar resumos ou mesmo dar as suas pr\u00f3prias sugest\u00f5es de projectos. Quanto mais dados flu\u00edrem para um sistema deste tipo, mais valioso ele se torna. A longo prazo, poder\u00e1 transformar-se numa esp\u00e9cie de mem\u00f3ria digital pessoal que estrutura os conhecimentos e os torna acess\u00edveis em qualquer altura.<\/li>\n<\/ol>\n<hr \/>\n\n\t\t\t<div class=\"display-post-types\">\n\n\t\t\t\t\t\t\t<style type=\"text\/css\">\n\t\t\t#dpt-wrapper-500 { --dpt-text-align: left;--dpt-image-crop: center;--dpt-border-radius: 5px;--dpt-h-gutter: 10px;--dpt-v-gutter: 9px; }\t\t\t<\/style>\n\t\t\t<style type=\"text\/css\">#dpt-wrapper-500 { --dpt-title-font-style:normal;--dpt-title-font-weight:600;--dpt-title-line-height:1.5;--dpt-title-text-decoration:none;--dpt-title-text-transform:none;--dpt-excerpt-font-style:normal;--dpt-excerpt-font-weight:400;--dpt-excerpt-line-height:1.5;--dpt-excerpt-text-decoration:none;--dpt-excerpt-text-transform:none;--dpt-meta1-font-style:normal;--dpt-meta1-font-weight:400;--dpt-meta1-line-height:1.9;--dpt-meta1-text-decoration:none;--dpt-meta1-text-transform:none;--dpt-meta2-font-style:normal;--dpt-meta2-font-weight:400;--dpt-meta2-line-height:1.9;--dpt-meta2-text-decoration:none;--dpt-meta2-text-transform:none; }<\/style><div class=\"dpt-main-header\">\n\t\t\t\t\t\t<div class=\"dpt-main-title\">\n\t\t\t\t\t\t\t<span class=\"dpt-main-title-text\">Artigos actuais sobre arte e cultura<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t<\/div>\t\t\t\n\t\t\t\t<div id=\"dpt-wrapper-500\" class=\"dpt-wrapper dpt-mag1 land1 dpt-cropped dpt-flex-wrap\" >\n\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"johann sebastian bach \u2013 ordnung, haltung und das fundament unserer musik\" data-id=\"5033\"  data-category=\"allgemein gesellschaft kunst &amp; kultur\" data-post_tag=\"deutschland musik portrait\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/02\/johann-sebastian-bach-a-atitude-da-ordem-e-a-base-da-nossa-musica\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Johann Sebastian Bach - ordem, atitude e a base da nossa m\u00fasica<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Retrato de Johann Sebastian Bach\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Johann-Sebastian-Bach-Portrait.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Johann-Sebastian-Bach-Portrait.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Johann-Sebastian-Bach-Portrait-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Johann-Sebastian-Bach-Portrait-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Johann-Sebastian-Bach-Portrait-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2026\/02\/johann-sebastian-bach-a-atitude-da-ordem-e-a-base-da-nossa-musica\/\" rel=\"bookmark\">Johann Sebastian Bach - ordem, atitude e a base da nossa m\u00fasica<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"vicco von b\u00fclow alias loriot \u2013 ordnung, form und der leise widerstand des humors\" data-id=\"4169\"  data-category=\"allgemein gesellschaft kunst &amp; kultur stories &amp; humor\" data-post_tag=\"deutschland erfahrungen pers\u00f6nlichkeitsentwicklung portrait\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2025\/12\/vicco-von-buelow-alias-loriot-nota-de-encomenda-e-a-resistencia-silenciosa-do-humor\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Vicco von B\u00fclow alias Loriot - ordem, forma e a resist\u00eancia silenciosa do humor<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"747\" class=\"attachment-full size-full\" alt=\"\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Loriot-Titel.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Loriot-Titel.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Loriot-Titel-300x219.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Loriot-Titel-768x560.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Loriot-Titel-16x12.jpg 16w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2025\/12\/vicco-von-buelow-alias-loriot-nota-de-encomenda-e-a-resistencia-silenciosa-do-humor\/\" rel=\"bookmark\">Vicco von B\u00fclow alias Loriot - ordem, forma e a resist\u00eancia silenciosa do humor<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"gr\u00f6nland, trump und die frage der zugeh\u00f6rigkeit: geschichte, recht und realit\u00e4t\" data-id=\"4325\"  data-category=\"allgemein gesellschaft kunst &amp; kultur\" data-post_tag=\"europa geopolitik krisen meinungsfreiheit sicherheitspolitik spieltheorie\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2026\/01\/groenland-trump-e-a-questao-da-pertenca-historia-direito-e-realidade\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Gronel\u00e2ndia, Trump e a quest\u00e3o da perten\u00e7a: hist\u00f3ria, direito e realidade<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1024\" height=\"683\" class=\"attachment-full size-full\" alt=\"Gronel\u00e2ndia na mira: EUA e Trump\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Groenland-USA-Trump-Titel.jpg\" data-dpt-sizes=\"(max-width: 1024px) 100vw, 1024px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/Groenland-USA-Trump-Titel.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Groenland-USA-Trump-Titel-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Groenland-USA-Trump-Titel-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/Groenland-USA-Trump-Titel-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2026\/01\/groenland-trump-e-a-questao-da-pertenca-historia-direito-e-realidade\/\" rel=\"bookmark\">Gronel\u00e2ndia, Trump e a quest\u00e3o da perten\u00e7a: hist\u00f3ria, direito e realidade<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"dpt-entry has-thumbnail\" data-title=\"dieter bohlen im klartext: warum deutschland an der eigenen b\u00fcrokratie scheitert\" data-id=\"3546\"  data-category=\"allgemein b\u00fccher gesellschaft kunst &amp; kultur\" data-post_tag=\"buch deutschland erfahrungen krisen meinungsfreiheit musik\">\n\t\t\t\t\t\t\t<div class=\"dpt-entry-wrapper\"><div class=\"dpt-featured-content\"><div class=\"dpt-permalink\"><a href=\"https:\/\/www.markus-schall.de\/pt\/2025\/11\/dieter-bohlen-em-linguagem-simples-porque-e-que-a-alemanha-esta-a-falhar-devido-a-sua-propria-burocracia\/\" class=\"dpt-permalink\"><span class=\"screen-reader-text\">Dieter Bohlen em linguagem simples: porque \u00e9 que a Alemanha est\u00e1 a falhar devido \u00e0 sua pr\u00f3pria burocracia<\/span><\/a><\/div><div class=\"dpt-thumbnail\"><div class=\"dpt-thumbnail-inner\"><img width=\"1536\" height=\"1024\" class=\"attachment-full size-full\" alt=\"Dieter Bohlen em conversa com Dominik Kettner\" context=\"dpt\" data-dpt-src=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/bohlen-kettner-germany.jpg\" data-dpt-sizes=\"(max-width: 1536px) 100vw, 1536px\" data-dpt-srcset=\"https:\/\/www.markus-schall.de\/wp-content\/uploads\/bohlen-kettner-germany.jpg 1536w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/bohlen-kettner-germany-300x200.jpg 300w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/bohlen-kettner-germany-1024x683.jpg 1024w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/bohlen-kettner-germany-768x512.jpg 768w, https:\/\/www.markus-schall.de\/wp-content\/uploads\/bohlen-kettner-germany-18x12.jpg 18w\" \/><\/div><span class=\"dpt-thumbnail-aspect-ratio\" style=\"padding-top: 75%\"><\/span><\/div><\/div><div class=\"sub-entry\"><h3 class=\"dpt-title\"><a class=\"dpt-title-link\" href=\"https:\/\/www.markus-schall.de\/pt\/2025\/11\/dieter-bohlen-em-linguagem-simples-porque-e-que-a-alemanha-esta-a-falhar-devido-a-sua-propria-burocracia\/\" rel=\"bookmark\">Dieter Bohlen em linguagem simples: porque \u00e9 que a Alemanha est\u00e1 a falhar devido \u00e0 sua pr\u00f3pria burocracia<\/a><\/h3><\/div><\/div>\n\t\t\t\t\t\t<\/div><!-- .dpt-entry -->\n\t\t\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\n<hr \/>","protected":false},"excerpt":{"rendered":"<p>Na primeira parte desta s\u00e9rie de artigos, vimos que a exporta\u00e7\u00e3o de dados do ChatGPT \u00e9 muito mais do que apenas uma fun\u00e7\u00e3o t\u00e9cnica. Os seus dados exportados cont\u00eam uma cole\u00e7\u00e3o de pensamentos, ideias, an\u00e1lises e conversas que se acumularam durante um longo per\u00edodo de tempo. Mas enquanto estes dados estiverem apenas armazenados como um arquivo no seu disco r\u00edgido, continuam a ser apenas isso: um ... <a title=\"Dieter Bohlen em linguagem simples: porque \u00e9 que a Alemanha est\u00e1 a falhar devido \u00e0 sua pr\u00f3pria burocracia\" class=\"read-more\" href=\"https:\/\/www.markus-schall.de\/pt\/2025\/11\/dieter-bohlen-em-linguagem-simples-porque-e-que-a-alemanha-esta-a-falhar-devido-a-sua-propria-burocracia\/\" aria-label=\"Leia mais sobre Dieter Bohlen em linguagem simples: porque \u00e9 que a Alemanha est\u00e1 a falhar devido \u00e0 sua pr\u00f3pria burocracia\">Ler mais<\/a><\/p>","protected":false},"author":1,"featured_media":5300,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":149,"footnotes":""},"categories":[15,431,4],"tags":[440,444,473,452,471,435,433,465,432,442,434],"class_list":["post-5306","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apple-macos","category-ki-systeme","category-tipps-anleitungen","tag-datenbanken","tag-denkmodelle","tag-digitales-eigentum","tag-docker","tag-kuenstliche-intelligenz","tag-llama","tag-llm","tag-mlx","tag-ollama","tag-prozesse","tag-sprachmodell"],"_links":{"self":[{"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/posts\/5306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/comments?post=5306"}],"version-history":[{"count":36,"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/posts\/5306\/revisions"}],"predecessor-version":[{"id":5753,"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/posts\/5306\/revisions\/5753"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/media\/5300"}],"wp:attachment":[{"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/media?parent=5306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/categories?post=5306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.markus-schall.de\/pt\/wp-json\/wp\/v2\/tags?post=5306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}