{"id":23856,"date":"2025-09-11T15:42:07","date_gmt":"2025-09-11T13:42:07","guid":{"rendered":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/"},"modified":"2025-09-11T15:42:07","modified_gmt":"2025-09-11T13:42:07","slug":"rag-caricamento-di-documenti-ai","status":"publish","type":"post","link":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/","title":{"rendered":"RAG: caricamento di documenti | AI"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>I modi in cui i documenti possono entrare a far parte del nostro sistema sono disparati pertanto anche un ambito che potrebbe sembrare il pi\u00f9 lineare dell&#8217;architettura si dirama in varie vie. Analizzeremo insieme, con tutti i dovuti esempi, l&#8217;uso di <em>Document loader<\/em> per acquisire documenti da integrare in una struttura dati in attesa che uno splitter li sminuzzi per una loro miglior digestione nella <strong>RAG<\/strong>.<\/p>\n<p>Ci baseremo sempre sulla libreria <a href=\"https:\/\/www.html.it\/pag\/537081\/langchain-il-framework-per-le-applicazioni-di-ai\/\" target=\"blank\" rel=\"noopener\">Langchain<\/a> ed in particolare sulla versione 0.3, attualmente la pi\u00f9 recente. In <a href=\"https:\/\/www.html.it\/guide\/guida-python\/\" target=\"_blank\" rel=\"noopener\">Python<\/a>, la richiederemo in questo modo:<\/p>\n<pre><code class=\"language-bash\">pip install langchain==0.3 langchain-community<\/code><\/pre>\n<p>Da ricordare che, se lo si esegue in un notebook Google Colab, sar\u00e0 il caso di anteporre un punto esclamativo (<code>!<\/code>) per indicare che non si tratta di un&#8217;istruzione Python bens\u00ec di una direttiva da riga di comando <a href=\"https:\/\/www.html.it\/guide\/guida-linux\/\" target=\"_blank\" rel=\"noopener\">Linux<\/a>.<\/p>\n<h2 id=\"textloader-e-rag-un-documento-alla-volta\">TextLoader e RAG: un documento alla volta<\/h2>\n<p>L&#8217;opzione pi\u00f9 basilare consiste nel <code>TextLoader<\/code>, un oggetto che legge un file di testo e lo carica come documento. Iniziamo con l&#8217;interpretazione di un testo di nome <code>documento.txt<\/code>:<\/p>\n<pre><code class=\"language-python\">from langchain_community.document_loaders.text import TextLoader\nloader = TextLoader(\n    \"documento.txt\",\n    encoding=None,\n    autodetect_encoding=True\n)<\/code><\/pre>\n<p>Questo codice produce un oggetto in grado di elaborare un testo. Si noti che abbiamo applicato un paio di argomenti riguardanti l&#8217;<em>encoding<\/em> per evitare errate interpretazioni dei caratteri. Qui chiediamo di non applicare un encoding specifico ma di provare lui stesso &#8211; il Loader &#8211; ad individuare il migliore procedendo per tentativi. Fatto ci\u00f2 passiamo all&#8217;estrazione dei contenuti con:<\/p>\n<pre><code class=\"language-bash\">documenti = loader.load()<\/code><\/pre>\n<p>A questo punto l&#8217;operazione \u00e8 svolta e ci troviamo in possesso di <code>documenti<\/code>, una lista di oggetti di tipo <code>Document<\/code> (classe definita in Langchain). Avendo interpretato un solo documento avremo a che fare con una lista di un solo item che sar\u00e0 il documento che rappresenta il file da noi fornito.<\/p>\n<p>E&#8217; importante conoscere come \u00e8 fatto un oggetto <code>Document<\/code> in quanto sar\u00e0 il frutto di qualsiasi <em>Loader<\/em> useremo. Al suo interno tipicamente troviamo due porzioni principali:<\/p>\n<ul>\n<li><code>page_content<\/code>, una stringa che immagazzina tutto il testo del documento. In quanto stringa, ovviamente, in Python \u00e8 sottoponibile con facilit\u00e0 a miriadi di operazioni di elaborazione;<\/li>\n<li><code>metadata<\/code>, un dizionario Python in cui vengono fissati parametri utili a definire correttamente il contenuto del documento. Nel nostro caso, i metadati prodotti coincideranno con <code>{'source': 'documento.txt'}<\/code>, in pratica solo il nome del file di origine.<\/li>\n<\/ul>\n<p>Passiamo ora al caricamento di tutti i documenti presenti in una cartella, caso ancora pi\u00f9 comune rispetto ad un singolo testo.<\/p>\n<h2 id=\"directoryloader-e-rag-una-cartella-intera\">DirectoryLoader e RAG: una cartella intera<\/h2>\n<p>Supponiamo di avere una cartella di nome <code>archivio<\/code> che include molti documenti di testo. Il nostro scopo \u00e8 acquisirli tutti in una struttura dati. Quanto visto al paragrafo precedente ci sembra gi\u00e0 adeguato in quanto, in fin dei conti, abbiamo fatto uso di un oggetto specifico, <code>Document<\/code> che andr\u00e0 bene anche per ognuno dei documenti che tratteremo in questo esempio ed il risultato del Loader consisteva gi\u00e0 in una lista, seppur di un solo item, pertanto in grado di ospitare potenzialmente una moltitudine di elementi.<\/p>\n<p>La classe di cui facciamo uso \u00e8 <code>DirectoryLoader<\/code> ancora messa a disposizione da Langchain.<\/p>\n<pre><code class=\"language-python\">from langchain_community.document_loaders import DirectoryLoader\nloader = DirectoryLoader(\n    \"archivio\",\n    glob=\"**\/*.txt\",\n    loader_cls=TextLoader,\n    show_progress=True,\n    use_multithreading=True\n)<\/code><\/pre>\n<p>In questo modo carichiamo tutto il contenuto della cartella <code>archivio<\/code> di cui non forniamo il percorso assoluto solo perch\u00e9 si trova nel nostro path di lavoro. L&#8217;argomento <code>glob<\/code> segue il formato dell&#8217;omonima funzione Python che permette di ricercare solo file con estensione <code>.txt<\/code> ma in ogni sottocartella (<code>**\/<\/code>).<\/p>\n<p>Notare anche gli altri parametri usati:<\/p>\n<ul>\n<li><code>loader_cls<\/code> dichiara la classe che servir\u00e0 a caricare il singolo documento. Qui facciamo uso di <code>TextLoader<\/code> che gi\u00e0 conosciamo;<\/li>\n<li><code>show_progress<\/code> se impostato a <code>True<\/code> chiede di mostrare una barra di progresso testuale che potr\u00e0 essere comoda per tenere il segno di caricamenti molto articolati. Il suo corretto funzionamento richiede per\u00f2 la disponibilit\u00e0 della libreria <code>tqdm<\/code> che all&#8217;occorrenza potr\u00e0 essere caricata con <code>pip<\/code>;<\/li>\n<li><code>use_multithreading<\/code> impostato a <code>True<\/code> invita il sistema a parallelizzare il caricamento istanziando thread paralleli se possibile.<\/li>\n<\/ul>\n<p>Potremo a questo punto procedere al caricamento dei documenti con <code>documenti = loader.load()<\/code> per ottenere una lista di oggetti <code>Document<\/code> dal formato identico a quello visto nell&#8217;esempio del <code>TextLoader<\/code>.<\/p>\n<h2 id=\"e-ora\">E ora?<\/h2>\n<p>Parlando di RAG, abbiamo portato l&#8217;esempio di solo due loader, i pi\u00f9 utilizzati, ma si consideri che la <a href=\"https:\/\/python.langchain.com\/api_reference\/community\/document_loaders.html\" target=\"_blank\" rel=\"nofollow noopener\">documentazione ufficiale<\/a> ne descrive moltissimi che potranno essere sperimentati, distinti sia per formati di dato (non strutturati, PDF, HTML, etc.) sia per tipologia di origine (servizi web, servizi di storage on line, social network, etc.). Noi proseguiremo ora con lo splitting dei documenti per trasformarli in chunk molto pi\u00f9 gestibili.<\/p>\n<div id=\"tagmailerContainer\">\n<p>Se vuoi aggiornamenti su <em>RAG: caricamento di documenti<\/em> inserisci la tua email nel box qui sotto:<\/p>\n<\/div>\n<p><span class=\"bm_post\" style=\"display:none\" data-domain=\"html.it\" data-author=\"unknown\" data-alias=\"unknown\" data-tipologia=\"edit\" data-custom=\"\" data-po=\"\" data-path=\"https:\/\/www.html.it\/pag\/561910\/rag-caricamento-di-documenti\/\" data-postid=\"561910\" data-programs=\"\" data-subjects=\"\" data-themes=\"\"\/><\/p><\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/www.html.it\/pag\/561910\/rag-caricamento-di-documenti\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I modi in cui i documenti possono entrare a far parte del nostro sistema sono disparati pertanto anche un ambito che potrebbe sembrare il pi\u00f9 lineare dell&#8217;architettura si dirama in varie vie. Analizzeremo insieme, con tutti i dovuti esempi, l&#8217;uso di Document loader per acquisire documenti da integrare in una struttura dati in attesa che&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_s2mail":""},"categories":[37],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>RAG: caricamento di documenti | AI - AGENZIA WEB Italia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RAG: caricamento di documenti | AI - AGENZIA WEB Italia\" \/>\n<meta property=\"og:description\" content=\"I modi in cui i documenti possono entrare a far parte del nostro sistema sono disparati pertanto anche un ambito che potrebbe sembrare il pi\u00f9 lineare dell&#8217;architettura si dirama in varie vie. Analizzeremo insieme, con tutti i dovuti esempi, l&#8217;uso di Document loader per acquisire documenti da integrare in una struttura dati in attesa che...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/\" \/>\n<meta property=\"og:site_name\" content=\"AGENZIA WEB Italia\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-11T13:42:07+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\"},\"headline\":\"RAG: caricamento di documenti | AI\",\"datePublished\":\"2025-09-11T13:42:07+00:00\",\"dateModified\":\"2025-09-11T13:42:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/\"},\"wordCount\":707,\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"articleSection\":[\"News\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/\",\"name\":\"RAG: caricamento di documenti | AI - AGENZIA WEB Italia\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\"},\"datePublished\":\"2025-09-11T13:42:07+00:00\",\"dateModified\":\"2025-09-11T13:42:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RAG: caricamento di documenti | AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"name\":\"AGENZIA WEB Italia\",\"description\":\"Web design Web agency Italia\",\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\",\"name\":\"Multimedia Web\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"contentUrl\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"width\":200,\"height\":57,\"caption\":\"Multimedia Web\"},\"image\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RAG: caricamento di documenti | AI - AGENZIA WEB Italia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/","og_locale":"it_IT","og_type":"article","og_title":"RAG: caricamento di documenti | AI - AGENZIA WEB Italia","og_description":"I modi in cui i documenti possono entrare a far parte del nostro sistema sono disparati pertanto anche un ambito che potrebbe sembrare il pi\u00f9 lineare dell&#8217;architettura si dirama in varie vie. Analizzeremo insieme, con tutti i dovuti esempi, l&#8217;uso di Document loader per acquisire documenti da integrare in una struttura dati in attesa che...","og_url":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/","og_site_name":"AGENZIA WEB Italia","article_published_time":"2025-09-11T13:42:07+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"admin","Tempo di lettura stimato":"4 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/#article","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/"},"author":{"name":"admin","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42"},"headline":"RAG: caricamento di documenti | AI","datePublished":"2025-09-11T13:42:07+00:00","dateModified":"2025-09-11T13:42:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/"},"wordCount":707,"publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"articleSection":["News"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/","name":"RAG: caricamento di documenti | AI - AGENZIA WEB Italia","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website"},"datePublished":"2025-09-11T13:42:07+00:00","dateModified":"2025-09-11T13:42:07+00:00","breadcrumb":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/rag-caricamento-di-documenti-ai\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.nycwebdesign.eu\/webdesign\/"},{"@type":"ListItem","position":2,"name":"RAG: caricamento di documenti | AI"}]},{"@type":"WebSite","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","name":"AGENZIA WEB Italia","description":"Web design Web agency Italia","publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization","name":"Multimedia Web","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","contentUrl":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","width":200,"height":57,"caption":"Multimedia Web"},"image":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42","name":"admin","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","caption":"admin"}}]}},"_links":{"self":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/23856"}],"collection":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/comments?post=23856"}],"version-history":[{"count":0,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/23856\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/media?parent=23856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/categories?post=23856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/tags?post=23856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}