Spaces:
Sleeping
Sleeping
Upload folder using huggingface_hub
Browse files
chatbot/chunks/pdf_chunks.json
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
chatbot/chunks/wiki_chunks.json
CHANGED
|
@@ -167,6 +167,147 @@
|
|
| 167 |
"page_type": "entity",
|
| 168 |
"layer": "wiki"
|
| 169 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 170 |
{
|
| 171 |
"text": "[\"Tied Ridges, FYM, and Nitrogen on Soil Moisture and Maize Yield in Machakos (Ngie Mwende, 2019)\" β Tied Ridges, FYM, and Nitrogen on Soil Moisture and Maize Yield in Machakos]\n**Citation:** Ngie Mwende, M. (2019). *Effect of tied ridges, farmyard manure, nitrogen fertilizer, and cropping systems on soil moisture, soil properties, and maize yield in Machakos County.* PhD thesis, Kenyatta University.",
|
| 172 |
"source": "wiki/sources/tied-ridges-soil-moisture-machakos.md",
|
|
|
|
| 167 |
"page_type": "entity",
|
| 168 |
"layer": "wiki"
|
| 169 |
},
|
| 170 |
+
{
|
| 171 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β Inventory of CSA TIMPs for Maize Value Chain β Volume I]\n**Citation:** Musila R.N., Ligeyo D.O., Murenga M. et al. (2022). *Inventory of Climate Smart Agriculture Technologies, Innovations and Management Practices for Maize Value Chain, Volume I.* KALRO/KCSAP. October 2022.",
|
| 172 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 173 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 174 |
+
"section": "Inventory of CSA TIMPs for Maize Value Chain β Volume I",
|
| 175 |
+
"page_type": "source-summary",
|
| 176 |
+
"layer": "wiki"
|
| 177 |
+
},
|
| 178 |
+
{
|
| 179 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β Overview]\nThis 365-page document is the official KCSAP TIMPs inventory for the maize value chain. It provides standardized, structured profiles of **193 TIMPs** covering the full production system from variety selection through postharvest and value addition.\n\n**Totals:** 116 Technologies | 20 Innovations | 57 Management Practices \n**Status:** 149 ready for upscaling | 37 requires validation | 5 requires further research\n\nEach TIMP follows a uniform 7-section template: (A) problem/description/justification, (B) dissemination approaches, (C) counties promoted/to be upscaled, (D) economic/gender/VMG considerations, (E) success stories, (F) readiness status, (G) contacts.\n\n---",
|
| 180 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 181 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 182 |
+
"section": "Overview",
|
| 183 |
+
"page_type": "source-summary",
|
| 184 |
+
"layer": "wiki"
|
| 185 |
+
},
|
| 186 |
+
{
|
| 187 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β Sub-theme Summary]\n| Sub-theme | Technologies | Innovations | Mgmt Practices |\n|---|---|---|---|\n| Improved maize varieties | 79 | 0 | 0 |\n| Maize seed system | 0 | 3 | 0 |\n| GAPs and Food Safety | 1 | 0 | 2 |\n| Agronomic management practices | 0 | 0 | 9 |\n| Soil fertility management | 0 | 1 | 3 |\n| Soil & water management | 9 | 0 | 2 |\n| Irrigation and drainage | 1 | 0 | 0 |\n| Agroforestry systems | 0 | 0 | 1 |\n| Maize Crop health | 3 | 0 | 15 |\n| Weed Management | 2 | 1 | 9 |\n| Harvesting & Postharvest | 10 | 0 | 3 |\n| Maize Value addition | 3 | 14 | 0 |\n| Mechanization | 8 | 1 | 0 |\n| Farming Business & marketing | 0 | 0 | 8 |\n| Elements of Agricultural Policies | 0 | 0 | 5 |\n\n---",
|
| 188 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 189 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 190 |
+
"section": "Sub-theme Summary",
|
| 191 |
+
"page_type": "source-summary",
|
| 192 |
+
"layer": "wiki"
|
| 193 |
+
},
|
| 194 |
+
{
|
| 195 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.2.1 Coastal Lowlands (CL 2, 3 & 4)]\n| TIMP Name | Type | Maturity | Yield potential | Key attributes | Status |\n|---|---|---|---|---|---|\n| Coast Composite Maize (CCM) | OPV | 110β120 days | 16β21 bags/acre | Heat tolerant, leaf rust resistant, rainfed+irrigated | Ready |\n| WSQ104 | QPM OPV | 90β105 days | 15 bags/acre | Drought tolerant, high lysine+tryptophan, 0β1200 m | Ready |\n| KH500Q | QPM 3-way hybrid | 90β120 days | 36 bags/acre | Drought tolerant, MSV resistant, GLS resistant | Ready |\n| PH4 (Pwani Hybrid 4) | Hybrid | 120β150 days | 24 bags/acre | Heat tolerant, partial MSV resistance, rainfed+irrigated | Ready |\n| PH1 (Pwani Hybrid 1) | Hybrid | 90β120 days | 18 bags/acre | Drought tolerant, excellent husk cover | Ready |\n| WE2111 | 3-way hybrid | 4.5β5 months | 4.7β8.7 t/ha | Drought tolerant, NLB/GLS/MSV resistant, white dent | Ready |\n| MTPEH0701 | 3-way hybrid | 120β150 days | 26 bags/acre | Large grain borer & weevil resistant | Ready |\n| MTPEH0702 | 3-way hybrid | 120β150 days | 26 bags/acre | Large grain borer & weevil resistant | Ready |\n| MTPEH0703 | 3-way hybrid | 4β5 months | 26 bags/acre | Spotted stem borer resistant | Ready |\n| MTPEH200804 (KH125-02-MDR) | 3-way hybrid | 120 days | 26 bags/acre | MSV resistant, GLS resistant | Ready |\n| MTPEH200805 (KH125-03-SG) | Stay-green 3-way hybrid | 120 days | 5β6.4 t/ha | Drought tolerant, stem borer resistant, GLS resistant | Ready |",
|
| 196 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 197 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 198 |
+
"section": "2.2.1 Coastal Lowlands (CL 2, 3 & 4)",
|
| 199 |
+
"page_type": "source-summary",
|
| 200 |
+
"layer": "wiki"
|
| 201 |
+
},
|
| 202 |
+
{
|
| 203 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.2.2 Medium Altitude β Dry (semi-arid, ~600β1200 m)]\n| TIMP Name | Type | Maturity | Yield potential | Key attributes | Status |\n|---|---|---|---|---|---|\n| KCB (Katumani Composite B) | OPV | 85β95 days | 16β21 bags/acre | Drought escaping, stem borer resistant | Ready |\n| KDH6 SBR | 3-way hybrid | 90β120 days | 5 t/ha | Drought tolerant, low-N tolerant, stem borer resistant | Ready |\n| KH414-03 SBR | 3-way hybrid | 90β120 days | 4 t/ha | Stem borer resistant | Ready |\n| KDH414-11 (Ukamez 6) | 3-way hybrid | 90β100 days | 4.6β7.5 t/ha | Drought tolerant, GLS/NLB/MSV resistant | Ready |\n| KDH414-12 (Ukamez 7) | Stay-green 3-way hybrid | 90β100 days | 4.3β7.8 t/ha | Drought tolerant, GLS/NLB/MSV resistant, good for livestock feed | Ready |\n| WE2109 | 3-way hybrid | 4.5β5 months | 4.8β9.2 t/ha | Drought tolerant, NLB/GLS/MSV resistant, white dent | Ready |",
|
| 204 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 205 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 206 |
+
"section": "2.2.2 Medium Altitude β Dry (semi-arid, ~600β1200 m)",
|
| 207 |
+
"page_type": "source-summary",
|
| 208 |
+
"layer": "wiki"
|
| 209 |
+
},
|
| 210 |
+
{
|
| 211 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.2.3 Medium Altitude β Moist (~1000β1800 m)]\n| TIMP Name | Type | Maturity | Yield potential | Key attributes | Status |\n|---|---|---|---|---|---|\n| WE2101 | 3-way hybrid | 4.5 months | 6.9 t/ha | Drought tolerant, NLB/MSV/GLS resistant, good husk cover | Ready |\n| WE2104 | 3-way hybrid | 4.5 months | 7.16 t/ha | Drought tolerant, NLB/MSV/GLS resistant | Ready |\n| WE2107 | 3-way hybrid | 4.5 months | 7 t/ha | NLB/MSV/GLS resistant, good husk cover | Ready |\n| WE2108 | 3-way hybrid | 4.5 months | 6.9 t/ha | NLB/MSV/GLS resistant, good husk cover | Ready |\n| WE5206 | 3-way hybrid | 105β130 days | 9 t/ha | Drought tolerant, NLB/MSV/GLS resistant | Ready |\n| WE5230 | 3-way hybrid | 105β130 days | 8 t/ha | Drought tolerant, NLB/MSV/GLS resistant | Ready |\n| EMB225 (KBEST) | 3-way hybrid | 90β120 days | 4.6 t/ha | NLB/MSV/leaf rust resistant, 1000β1800 m | Ready |\n| EMB226 (EMBU POA) | Stay-green 3-way hybrid | 90β120 days | 6.5 t/ha | NLB resistant, 1200β1800 m | Ready |\n| KH500-40E | 3-way hybrid | 120β130 days | 7 t/ha | Drought tolerant, low-N tolerant | Ready |\n| KH500-39E | 3-way hybrid | 120 days | 8β10 t/ha | Drought tolerant, GLS/NLB/MSV/foliar resistant | Ready |\n| KH500-56A (KM1101) | 3-way hybrid | 5β6 months | 6.5 t/ha | MSV resistant, GLS resistant, good husk cover | Ready |\n| KH500-Q | 3-way hybrid | 120 days | 8β10 t/ha | QPM, drought tolerant, GLS/NLB/MSV resistant | Ready |",
|
| 212 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 213 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 214 |
+
"section": "2.2.3 Medium Altitude β Moist (~1000β1800 m)",
|
| 215 |
+
"page_type": "source-summary",
|
| 216 |
+
"layer": "wiki"
|
| 217 |
+
},
|
| 218 |
+
{
|
| 219 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.2.4 Medium Altitude β Transitional]\n| TIMP Name | Type | Maturity | Yield potential | Key attributes | Status |\n|---|---|---|---|---|---|\n| WE2106 | 3-way hybrid | 4.5β5 months | 4.7β9.1 t/ha | Drought tolerant, NLB/GLS/MSV resistant, good husk cover | Ready |\n| WE3104 | 3-way hybrid | 4 months | 5.6 t/ha | NLB/MSV/GLS resistant, good husk cover | Ready |\n| WE3106 | 3-way hybrid | 4 months | 3.28 t/ha | NLB/MSV/GLS resistant, good husk cover | Ready |\n| WE5107 | 3-way hybrid | 105β130 days | 3.7β7.2 t/ha | Drought tolerant, NLB/GLS/MSV resistant | Ready |\n| WE5113 | 3-way hybrid | 105β130 days | 3.7β7.3 t/ha | Drought tolerant, NLB/GLS/MSV resistant | Ready |\n| WE5138 | 3-way hybrid | 105β130 days | 4β6.5 t/ha | Drought tolerant, NLB/GLS/MSV resistant | Ready |\n| WE5205 | 3-way hybrid | 105β130 days | 7.4β9.6 t/ha | Drought tolerant, NLB/GLS/MSV resistant | Ready |\n| WE5210 | 3-way hybrid | 105β130 days | 7.6β10.0 t/ha | Drought tolerant, NLB/GLS/MSV resistant, good husk cover | Ready |\n| WE5213 | 3-way hybrid | 105β120 days | 7.5β9.6 t/ha | Drought tolerant, NLB/GLS/MSV resistant, good husk cover | Ready |\n| WE5218 | 3-way hybrid | 105β125 days | 7.3β9.1 t/ha | Drought tolerant, NLB/GLS",
|
| 220 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 221 |
+
"page": 0,
|
| 222 |
+
"layer": "wiki",
|
| 223 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 224 |
+
"section": "2.2.4 Medium Altitude β Transitional",
|
| 225 |
+
"page_type": "source-summary"
|
| 226 |
+
},
|
| 227 |
+
{
|
| 228 |
+
"text": "/GLS/MSV resistant, good husk cover | Ready |\n| WE5218 | 3-way hybrid | 105β125 days | 7.3β9.1 t/ha | Drought tolerant, NLB/GLS/MSV resistant | Ready |\n| WE5227 | 3-way hybrid | 105β130 days | 7.5β9.5 t/ha | Drought tolerant, NLB/GLS/MSV resistant | Ready |\n| KH500-13E | 3-way hybrid | 120 days | 4.5β5.3 t/ha | Drought tolerant, ear rot resistant, NLB/GLS/MSV resistant | Ready |\n| KH500-51A (MU07-018) | 3-way hybrid | 150β170 days | 6.0β6.5 t/ha | NLB/GLS/MSV resistant, flint-like | Ready |\n| KH500-52A (MU08-005) | 3-way hybrid | 4β5 months | 4.39 t/ha | Drought tolerant, NLB/GLS/MSV resistant | Ready |\n| KH500-53A (MU10-010) | 3-way hybrid | 150β170 days | 4.9β5.0 t/ha | Drought tolerant, NLB/GLS/MSV resistant | Ready |\n| KH500-54A (CKH10778) | 3-way hybrid | 5β6 months | 8.5 t/ha | MSV resistant, GLS resistant, good husk cover | Ready |\n| KH500-55A (MU10-233) | 3-way hybrid | 120β160 days | 6.5 t/ha | Drought tolerant, MSV resistant, GLS resistant | Ready |",
|
| 229 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 230 |
+
"page": 0,
|
| 231 |
+
"layer": "wiki",
|
| 232 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 233 |
+
"section": "2.2.4 Medium Altitude β Transitional",
|
| 234 |
+
"page_type": "source-summary"
|
| 235 |
+
},
|
| 236 |
+
{
|
| 237 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.2.5 Highlands (1800β2500 m asl, 1000β2000 mm rainfall)]\n| TIMP Name | Type | Maturity | Yield potential | Key attributes | Status |\n|---|---|---|---|---|---|\n| KH600-11D | Varietal cross hybrid | 140β160 days | 32β42 bags/acre | GLS resistant, strong stalks, good husk cover (1999) | Ready |\n| KH600-23A | Top cross hybrid | 145β175 days | 43β68 bags/acre | GLS/rust resistant, strong stalks, good husk cover (2008) | Ready |\n| HAC (High Altitude Composite) | OPV | 140β160 days | 20β34 bags/acre | Early maturity, frost tolerant, GLS resistant, 2200β3000 m (2006) | Ready |\n| KH600-14E | Top cross hybrid | 150β165 days | 38β48 bags/acre | Drought tolerant, GLS/rust/TLB resistant (2004) | Ready |\n| KH600-15A | Top cross hybrid | 145β180 days | 33β47 bags/acre | GLS/rust/blight resistant, strong stalks (2001) | Ready |\n| KH600-16A | Top cross hybrid | 140β180 days | 35β48 bags/acre | MSV/GLS/rust/blight resistant (2001) | Ready |\n| KH600-17A | Varietal cross hybrid | 140β160 days | 37β51 bags/acre | GLS/blight resistant, strong stalks (2002) | Ready |\n| KH600-18A | Varietal hybrid | 155β170 days | 36β50 bags/acre | GLS/blight resistant, strong stalks (2004) | Ready |\n| KH600-19A | Double cross hybrid | 160β175 days | 38β53 bags/acre | GLS/blight resistant, strong stalks (2005) | Ready |\n| KH600-20A | Top cross hybrid | 160β180 days | 38β",
|
| 238 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 239 |
+
"page": 0,
|
| 240 |
+
"layer": "wiki",
|
| 241 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 242 |
+
"section": "2.2.5 Highlands (1800β2500 m asl, 1000β2000 mm rainfall)",
|
| 243 |
+
"page_type": "source-summary"
|
| 244 |
+
},
|
| 245 |
+
{
|
| 246 |
+
"text": " 160β175 days | 38β53 bags/acre | GLS/blight resistant, strong stalks (2005) | Ready |\n| KH600-20A | Top cross hybrid | 160β180 days | 38β55 bags/acre | GLS/rust/blight resistant, strong stalks, good husk cover (2005) | Ready |\n| KH600-21A | Top cross hybrid | 140β180 days | 38β62 bags/acre | GLS/rust/blight resistant, strong stalks, good husk cover (2006) | Ready |\n| KH600-22A | Top cross hybrid | 140β180 days | 40β66 bags/acre | GLS resistant, good husk cover, strong stalks (2006) | Ready |\n| KH600-24A | Top cross hybrid | 140β160 days | 47β69 bags/acre | GLS/rust/blight resistant, strong roots, good husk cover (2001) | Ready |\n| KH600-25A | Top cross hybrid | 140β165 days | 49β70 bags/acre | GLS/rust/blight resistant, good husk cover (2015) | Ready |\n| KH600-26A | Top cross hybrid | 142β170 days | 51β70 bags/acre | GLS/rust/blight resistant, good husk cover, strong stalks (2015) | Ready |\n| KH600-27A | Top cross hybrid | 145β175 days | 53β71 bags/acre | GLS/rust/blight resistant, good husk cover, strong stalks (2015) | Ready |\n| H614D | Top cross hybrid | 145β175 days | 30β35 bags/acre | Drought tolerant, GLS/rust/blight resistant (1986); Kenya Seed Co. | Ready |\n| H626 | Double cross hybrid | 160β180 days | 38β42 bags/acre | Rust/blight resistant, strong stalks, good husk cover (1989) | Ready |\n| H625 | Double cross hybrid | 155β180 days | 37β40 bags/acre | Rust/blight resistant, strong stalks, good husk cover (1981) | Ready |\n| H6213 | Double cross hybrid | 160β180 days",
|
| 247 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 248 |
+
"page": 0,
|
| 249 |
+
"layer": "wiki",
|
| 250 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 251 |
+
"section": "2.2.5 Highlands (1800β2500 m asl, 1000β2000 mm rainfall)",
|
| 252 |
+
"page_type": "source-summary"
|
| 253 |
+
},
|
| 254 |
+
{
|
| 255 |
+
"text": " hybrid | 155β180 days | 37β40 bags/acre | Rust/blight resistant, strong stalks, good husk cover (1981) | Ready |\n| H6213 | Double cross hybrid | 160β180 days | 52β56 bags/acre | GLS/rust/blight resistant, good husk cover (2002) | Ready |\n| H6218 | Double cross hybrid | 145β175 days | 56β71 bags/acre | GLS/rust/blight resistant, good husk cover (2004) | Ready |\n| H6210 | Double cross hybrid | 160β185 days | 50β53 bags/acre | GLS/rust/blight resistant, good husk cover (2004) | Ready |\n| H629 | Double cross hybrid | 160β175 days | 48β52 bags/acre | GLS/rust/blight resistant, good husk cover (2000) | Ready |\n| H628 | Double hybrid | 155β175 days | 46β50 bags/acre | GLS/rust/blight resistant, good husk cover (1999) | Ready |\n| H624 | Double cross hybrid | 135β150 days | 30β32 bags/acre | GLS/rust/blight resistant, early maturity (2004); 1600β2300 m | Ready |\n\n**Note:** H614D, H626, H625, H6213, H6218, H6210, H629, H628, H624 are licensed to **Kenya Seed Company** for basic and commercial seed production. KH600 series breeder seed is at KALRO-Kitale.",
|
| 256 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 257 |
+
"page": 0,
|
| 258 |
+
"layer": "wiki",
|
| 259 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 260 |
+
"section": "2.2.5 Highlands (1800β2500 m asl, 1000β2000 mm rainfall)",
|
| 261 |
+
"page_type": "source-summary"
|
| 262 |
+
},
|
| 263 |
+
{
|
| 264 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.2.6 Special Kit β MLN Tolerant Varieties]\n| TIMP Name | Type | Key attributes | Status |\n|---|---|---|---|\n| WE5135 | 3-way hybrid | MLN tolerant (MCMV+SCMV) | Ready |\n| WE5139 | 3-way hybrid | MLN tolerant | Ready |\n| WE5140 | 3-way hybrid | MLN tolerant | Ready |\n| KATEH16-02 | 3-way hybrid | MLN tolerant | Ready |\n| KATEH16-03 | 3-way hybrid | MLN tolerant | Ready |\n\n---",
|
| 265 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 266 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 267 |
+
"section": "2.2.6 Special Kit β MLN Tolerant Varieties",
|
| 268 |
+
"page_type": "source-summary",
|
| 269 |
+
"layer": "wiki"
|
| 270 |
+
},
|
| 271 |
+
{
|
| 272 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.3 Maize Seed System]\n| TIMP Name | Category | Status |\n|---|---|---|\n| Improved Farmer-Saved-Seed-System | Innovation | Requires validation |\n| Quality Declared Seed System (QDS) | Innovation | Requires validation |\n| Maize Formal Seed System | Innovation | Ready for upscaling |\n\n---",
|
| 273 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 274 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 275 |
+
"section": "2.3 Maize Seed System",
|
| 276 |
+
"page_type": "source-summary",
|
| 277 |
+
"layer": "wiki"
|
| 278 |
+
},
|
| 279 |
+
{
|
| 280 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.4 GAPs and Food Safety]\n| TIMP Name | Category | Status |\n|---|---|---|\n| Food Safety Management System (HACCP) | Management practice | Ready for upscaling |\n| Good Agricultural Practices (GAPs) for maize | Management practice | Ready for upscaling |\n| Aflasafe KE01β’ | Technology | Requires validation |\n\n**Aflasafe KE01β’**: Pre-harvest bio-control agent that reduces aflatoxin contamination in maize by 80β99% at harvest and in storage. Applied 2β3 weeks before flowering at 10 kg/ha. Manufactured at KALRO-Katumani, distributed by Koppert Biological Systems. Cost: KES 201/kg.\n\n---",
|
| 281 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 282 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 283 |
+
"section": "2.4 GAPs and Food Safety",
|
| 284 |
+
"page_type": "source-summary",
|
| 285 |
+
"layer": "wiki"
|
| 286 |
+
},
|
| 287 |
+
{
|
| 288 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.5 Agronomic Management Practices (all Ready for upscaling)]\n| TIMP | Key recommendation |\n|---|---|\n| Land preparation | One tractor plough + one harrow; or two animal draft ploughs |\n| Maize variety selection | Match variety to AEZ; use certified seed |\n| Planting spacing | Highland: 75Γ25 cm (1 plant); Medium: 75Γ30 cm; Dryland/coastal: 90Γ30 cm |\n| Intercropping | Maizeβlegume intercrop improves soil fertility and weed suppression |\n| Weeding | Hand weed 3 weeks after emergence; repeat 3 weeks later |\n| Basal fertilizer | 50 kg/acre DAP (neutral soils) or 100 kg/acre NPK 23:23:0 (acid soils) |\n| Top-dressing fertilizer | 50 kg/acre CAN at 8β10 leaf stage (45 cm height) |\n| Timely harvesting | Harvest at physiological maturity (black layer, leaves dried) |\n| Crop rotation | Rotate with legumes to replenish N; avoid same family consecutively |\n\n---",
|
| 289 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 290 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 291 |
+
"section": "2.5 Agronomic Management Practices (all Ready for upscaling)",
|
| 292 |
+
"page_type": "source-summary",
|
| 293 |
+
"layer": "wiki"
|
| 294 |
+
},
|
| 295 |
+
{
|
| 296 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β 2.6 Soil Fertility Management]\n| TIMP | Category | Status |\n|---|---|---|\n| Integrated Soil Fertility Management (ISFM) | Management practice | Requires validation |\n| Integrated Manure Management (IMM) | Management practice | Requires further research |\n| Rapid soil testing services (spectroscopy/Soil Cares) | Innovation | Requires validation |\n| Low-Cost Composting technology | Management practice | Requires validation |\n\n---",
|
| 297 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 298 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 299 |
+
"section": "2.6 Soil Fertility Management",
|
| 300 |
+
"page_type": "source-summary",
|
| 301 |
+
"layer": "wiki"
|
| 302 |
+
},
|
| 303 |
+
{
|
| 304 |
+
"text": "[\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\" β Key Cross-References]\n- Varieties for MLN-endemic areas β [[maize-lethal-necrosis]], section 2.2.6\n- Water harvesting in ASAL β [[water-harvesting-technologies]] (zai pits, contour bunds in sections 2.7)\n- KCSAP counties targeted β [[KCSAP]] (24 counties)\n- Seed system innovations β [[seed-systems]]\n- Lead station for highland varieties β KALRO-Kitale (FCRI, Centre Director D.O. Ligeyo)\n- Lead station for coastal varieties β KALRO-Mtwapa / KALRO-Katumani\n- Lead station for mid-altitude varieties β KALRO-Embu, KALRO-Katumani",
|
| 305 |
+
"source": "wiki/sources/maize-timps-volume1.md",
|
| 306 |
+
"title": "\"Inventory of CSA Technologies, Innovations and Management Practices for Maize Value Chain (KALRO/KCSAP, 2022)\"",
|
| 307 |
+
"section": "Key Cross-References",
|
| 308 |
+
"page_type": "source-summary",
|
| 309 |
+
"layer": "wiki"
|
| 310 |
+
},
|
| 311 |
{
|
| 312 |
"text": "[\"Tied Ridges, FYM, and Nitrogen on Soil Moisture and Maize Yield in Machakos (Ngie Mwende, 2019)\" β Tied Ridges, FYM, and Nitrogen on Soil Moisture and Maize Yield in Machakos]\n**Citation:** Ngie Mwende, M. (2019). *Effect of tied ridges, farmyard manure, nitrogen fertilizer, and cropping systems on soil moisture, soil properties, and maize yield in Machakos County.* PhD thesis, Kenyatta University.",
|
| 313 |
"source": "wiki/sources/tied-ridges-soil-moisture-machakos.md",
|
chatbot/extracted/MAIZE_TIMPS_Volume-1_for_Upload.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
chatbot/extracted/_extraction_summary.json
CHANGED
|
@@ -34,6 +34,11 @@
|
|
| 34 |
"status": "ok",
|
| 35 |
"pages": 10
|
| 36 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
{
|
| 38 |
"file": "Maize production systems farmers perception and current status of maize lethal necrosis in selected counties in Kenya.pdf",
|
| 39 |
"status": "ok",
|
|
|
|
| 34 |
"status": "ok",
|
| 35 |
"pages": 10
|
| 36 |
},
|
| 37 |
+
{
|
| 38 |
+
"file": "MAIZE_TIMPS_Volume-1_for_Upload.pdf",
|
| 39 |
+
"status": "ok",
|
| 40 |
+
"pages": 372
|
| 41 |
+
},
|
| 42 |
{
|
| 43 |
"file": "Maize production systems farmers perception and current status of maize lethal necrosis in selected counties in Kenya.pdf",
|
| 44 |
"status": "ok",
|
chatbot/pipeline/chunk_timps.py
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
TIMP-aware chunker for MAIZE_TIMPS_Volume-1_for_Upload.json.
|
| 3 |
+
|
| 4 |
+
Splits on numbered section boundaries (2.2.1.1, 2.3.2, etc.) and sub-splits
|
| 5 |
+
each TIMP at its A/B/C/D/E/F/G section labels when the block is too large.
|
| 6 |
+
Metadata headers are prepended so retrieval can filter by AEZ / category.
|
| 7 |
+
|
| 8 |
+
Run standalone or imported by chunk.py.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
import json
|
| 12 |
+
import re
|
| 13 |
+
import tiktoken
|
| 14 |
+
from pathlib import Path
|
| 15 |
+
|
| 16 |
+
EXTRACTED_DIR = Path(__file__).parent.parent / "extracted"
|
| 17 |
+
TIMPS_FILE = EXTRACTED_DIR / "MAIZE_TIMPS_Volume-1_for_Upload.json"
|
| 18 |
+
|
| 19 |
+
CHUNK_TOKENS = 500
|
| 20 |
+
OVERLAP_TOKENS = 50
|
| 21 |
+
enc = tiktoken.get_encoding("cl100k_base")
|
| 22 |
+
|
| 23 |
+
# ββ AEZ / theme mapping ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 24 |
+
|
| 25 |
+
AEZ_MAP = {
|
| 26 |
+
"2.2.1": "Coastal Lowlands",
|
| 27 |
+
"2.2.2": "Medium Altitude β Dry",
|
| 28 |
+
"2.2.3": "Medium Altitude β Moist",
|
| 29 |
+
"2.2.4": "Medium Altitude β Transitional",
|
| 30 |
+
"2.2.5": "Highlands",
|
| 31 |
+
"2.2.6": "MLN-Tolerant (Special Kit)",
|
| 32 |
+
"2.3": "Maize Seed System",
|
| 33 |
+
"2.4": "Good Agricultural Practices",
|
| 34 |
+
"2.5": "Agronomic Management Practices",
|
| 35 |
+
"2.6": "Soil Fertility Management",
|
| 36 |
+
"2.7": "Water Harvesting Technologies",
|
| 37 |
+
"2.8": "Pest and Disease Management",
|
| 38 |
+
"2.9": "Post-Harvest Management",
|
| 39 |
+
"2.10": "Market Linkages",
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
CATEGORY_MAP = {
|
| 43 |
+
"2.2": "Improved Maize Variety",
|
| 44 |
+
"2.3": "Seed System Innovation",
|
| 45 |
+
"2.4": "Good Agricultural Practice",
|
| 46 |
+
"2.5": "Agronomic Management Practice",
|
| 47 |
+
"2.6": "Soil Fertility Management",
|
| 48 |
+
"2.7": "Water Harvesting Technology",
|
| 49 |
+
"2.8": "Pest/Disease Management",
|
| 50 |
+
"2.9": "Post-Harvest Management",
|
| 51 |
+
"2.10": "Market Linkage",
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
SOURCE = "MAIZE_TIMPS_Volume-1_for_Upload.pdf"
|
| 55 |
+
TOC_CUTOFF = 15000 # characters β skip text before this as table-of-contents
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
# ββ helpers ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 59 |
+
|
| 60 |
+
def count_tokens(text: str) -> int:
|
| 61 |
+
return len(enc.encode(text))
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
def sliding_window(text: str, meta_header: str, chunk_size: int, overlap: int) -> list[str]:
|
| 65 |
+
"""Split text into overlapping token windows, each prefixed with meta_header."""
|
| 66 |
+
tokens = enc.encode(text)
|
| 67 |
+
results = []
|
| 68 |
+
start = 0
|
| 69 |
+
while start < len(tokens):
|
| 70 |
+
end = min(start + chunk_size, len(tokens))
|
| 71 |
+
results.append(meta_header + enc.decode(tokens[start:end]))
|
| 72 |
+
if end == len(tokens):
|
| 73 |
+
break
|
| 74 |
+
start += chunk_size - overlap
|
| 75 |
+
return results
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
def get_aez(section_code: str) -> str:
|
| 79 |
+
parts = section_code.split(".")
|
| 80 |
+
for depth in (4, 3, 2):
|
| 81 |
+
key = ".".join(parts[:depth])
|
| 82 |
+
if key in AEZ_MAP:
|
| 83 |
+
return AEZ_MAP[key]
|
| 84 |
+
return "Unknown"
|
| 85 |
+
|
| 86 |
+
|
| 87 |
+
def get_category(section_code: str) -> str:
|
| 88 |
+
parts = section_code.split(".")
|
| 89 |
+
for depth in (3, 2):
|
| 90 |
+
key = ".".join(parts[:depth])
|
| 91 |
+
if key in CATEGORY_MAP:
|
| 92 |
+
return CATEGORY_MAP[key]
|
| 93 |
+
return "TIMP"
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
def extract_timp_name(block_text: str) -> str:
|
| 97 |
+
"""Pull the value from the 'TIMP Name' row in a table block."""
|
| 98 |
+
m = re.search(r'TIMP [Nn]ame\s*\n(.+)', block_text)
|
| 99 |
+
if m:
|
| 100 |
+
return m.group(1).strip()
|
| 101 |
+
return ""
|
| 102 |
+
|
| 103 |
+
|
| 104 |
+
def split_at_sections(block_text: str) -> list[tuple[str, str]]:
|
| 105 |
+
"""
|
| 106 |
+
Split a TIMP block at its A:/B:/C:/D:/E:/F:/G: section boundaries.
|
| 107 |
+
Returns list of (label, text) pairs.
|
| 108 |
+
"""
|
| 109 |
+
pattern = re.compile(
|
| 110 |
+
r'(?:^|\n)([A-G][:\.])\s*(?:Description|Assessment|Current situation|Economic|Case stud|Status|Contacts)[^\n]*\n',
|
| 111 |
+
re.IGNORECASE
|
| 112 |
+
)
|
| 113 |
+
hits = list(pattern.finditer(block_text))
|
| 114 |
+
if not hits:
|
| 115 |
+
return [("", block_text)]
|
| 116 |
+
|
| 117 |
+
parts = []
|
| 118 |
+
# Text before first section label
|
| 119 |
+
pre = block_text[:hits[0].start()].strip()
|
| 120 |
+
if pre:
|
| 121 |
+
parts.append(("header", pre))
|
| 122 |
+
|
| 123 |
+
for i, m in enumerate(hits):
|
| 124 |
+
label = m.group(1).rstrip(":.")
|
| 125 |
+
start = m.start()
|
| 126 |
+
end = hits[i + 1].start() if i + 1 < len(hits) else len(block_text)
|
| 127 |
+
parts.append((label, block_text[start:end].strip()))
|
| 128 |
+
|
| 129 |
+
return parts
|
| 130 |
+
|
| 131 |
+
|
| 132 |
+
# ββ main chunker βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 133 |
+
|
| 134 |
+
def chunk_timps() -> list[dict]:
|
| 135 |
+
if not TIMPS_FILE.exists():
|
| 136 |
+
return []
|
| 137 |
+
|
| 138 |
+
data = json.loads(TIMPS_FILE.read_text(encoding="utf-8"))
|
| 139 |
+
full_text = "\n".join(p["text"] for p in sorted(data["pages"], key=lambda x: x["page"]))
|
| 140 |
+
|
| 141 |
+
# Find all section boundary positions (skip TOC area).
|
| 142 |
+
# Match only known theme prefixes (2.2β2.10), avoiding table row artifacts like 2.1.1.
|
| 143 |
+
sec_pattern = re.compile(
|
| 144 |
+
r"(?:^|\n)(2\.(?:[2-9]|10)(?:\.\d+){1,2})\s+([^\n.]{3,80})\n",
|
| 145 |
+
re.MULTILINE,
|
| 146 |
+
)
|
| 147 |
+
boundaries = [
|
| 148 |
+
(m.start(), m.group(1), m.group(2).strip())
|
| 149 |
+
for m in sec_pattern.finditer(full_text)
|
| 150 |
+
if m.start() > TOC_CUTOFF
|
| 151 |
+
]
|
| 152 |
+
|
| 153 |
+
if not boundaries:
|
| 154 |
+
return []
|
| 155 |
+
|
| 156 |
+
chunks: list[dict] = []
|
| 157 |
+
|
| 158 |
+
for idx, (pos, code, title) in enumerate(boundaries):
|
| 159 |
+
# Block text runs until the next boundary (or end of document)
|
| 160 |
+
next_pos = boundaries[idx + 1][0] if idx + 1 < len(boundaries) else len(full_text)
|
| 161 |
+
block = full_text[pos:next_pos].strip()
|
| 162 |
+
|
| 163 |
+
aez = get_aez(code)
|
| 164 |
+
category = get_category(code)
|
| 165 |
+
timp_name = extract_timp_name(block) or title
|
| 166 |
+
|
| 167 |
+
meta_header = (
|
| 168 |
+
f"[TIMP: {timp_name}]\n"
|
| 169 |
+
f"[Category: {category}]\n"
|
| 170 |
+
f"[AEZ/Theme: {aez}]\n"
|
| 171 |
+
f"[Section: {code}]\n\n"
|
| 172 |
+
)
|
| 173 |
+
|
| 174 |
+
# Sub-split at A-G section boundaries to keep chunks focused
|
| 175 |
+
section_parts = split_at_sections(block)
|
| 176 |
+
|
| 177 |
+
for label, part_text in section_parts:
|
| 178 |
+
if not part_text.strip():
|
| 179 |
+
continue
|
| 180 |
+
full_chunk = meta_header + (f"Section {label}:\n" if label else "") + part_text
|
| 181 |
+
if count_tokens(full_chunk) <= CHUNK_TOKENS * 1.5:
|
| 182 |
+
chunks.append({
|
| 183 |
+
"text": full_chunk,
|
| 184 |
+
"source": SOURCE,
|
| 185 |
+
"layer": "pdf",
|
| 186 |
+
"timp_name": timp_name,
|
| 187 |
+
"aez": aez,
|
| 188 |
+
"category": category,
|
| 189 |
+
"section_code": code,
|
| 190 |
+
"section_label": label,
|
| 191 |
+
})
|
| 192 |
+
else:
|
| 193 |
+
for window in sliding_window(part_text, meta_header, CHUNK_TOKENS, OVERLAP_TOKENS):
|
| 194 |
+
chunks.append({
|
| 195 |
+
"text": window,
|
| 196 |
+
"source": SOURCE,
|
| 197 |
+
"layer": "pdf",
|
| 198 |
+
"timp_name": timp_name,
|
| 199 |
+
"aez": aez,
|
| 200 |
+
"category": category,
|
| 201 |
+
"section_code": code,
|
| 202 |
+
"section_label": label,
|
| 203 |
+
})
|
| 204 |
+
|
| 205 |
+
return chunks
|
| 206 |
+
|
| 207 |
+
|
| 208 |
+
if __name__ == "__main__":
|
| 209 |
+
result = chunk_timps()
|
| 210 |
+
print(f"TIMP chunks: {len(result)}")
|
| 211 |
+
if result:
|
| 212 |
+
print(f"Sample chunk:\n{result[0]['text'][:300]}")
|