From c4b22fcaf4f0839d81510329d1d4875e1de8323b Mon Sep 17 00:00:00 2001 From: Andy Miles Date: Sat, 21 Mar 2026 13:02:25 -0700 Subject: [PATCH 1/2] multi rss, all run from vdb.py w/ persisted chroma --- data/all.txt | 50 +++ .../data_level0.bin | Bin 0 -> 167600 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 400 bytes .../link_lists.bin | 0 data/chroma/chroma.sqlite3 | Bin 0 -> 385024 bytes data/input/BUA302_WEEK4_HW_IRIS.pdf | Bin 42673 -> 0 bytes src/thomas/finma.py | 17 +- src/thomas/full_rag.py | 305 +++++++++++++----- src/thomas/vdb.py | 107 +++++- 10 files changed, 386 insertions(+), 93 deletions(-) create mode 100644 data/all.txt create mode 100644 data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/data_level0.bin create mode 100644 data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/header.bin create mode 100644 data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/length.bin create mode 100644 data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/link_lists.bin create mode 100644 data/chroma/chroma.sqlite3 delete mode 100644 data/input/BUA302_WEEK4_HW_IRIS.pdf diff --git a/data/all.txt b/data/all.txt new file mode 100644 index 0000000..29d012a --- /dev/null +++ b/data/all.txt @@ -0,0 +1,50 @@ +Aktualisierte Sanktionsmeldung: Taliban | Thu, 12 Mar 2026 14:28:55 +0100 | https://www.finma.ch/en/news/2026/03/20260312-sr-946-231-07/ +Aktualisierte Sanktionsmeldung: Islamische Republik Iran | Tue, 10 Mar 2026 16:28:45 +0100 | https://www.finma.ch/en/news/2026/03/20260310-sr-946-231-143-6/ +Aktualisierte Sanktionsmeldung: ISIL (Da'esh) / Al-Kaida | Tue, 03 Mar 2026 16:17:52 +0100 | https://www.finma.ch/en/news/2026/03/20260303-sr-946-231-08/ +FINMA proceedings: MBaer Merchant Bank AG in liquidation | Fri, 27 Feb 2026 15:00:00 +0100 | https://www.finma.ch/en/news/2026/02/20260227-mm-mbaer-liquidation/ +Measures at MBaer Merchant Bank AG | Thu, 26 Feb 2026 15:30:00 +0100 | https://www.finma.ch/en/news/2026/02/20260226-mm-mbaer/ +Sanktionen: Russland und Belarus | Thu, 26 Feb 2026 14:47:26 +0100 | https://www.finma.ch/en/news/2026/02/20260226-sanktionsmeldung-russland-belarus/ +Aktualisierte Sanktionsmeldung: Sudan | Thu, 26 Feb 2026 14:41:17 +0100 | https://www.finma.ch/en/news/2026/02/20260226-sr-946-231-18/ +Aktualisierte Sanktionsmeldung: Russland | Wed, 25 Feb 2026 14:24:33 +0100 | https://www.finma.ch/en/news/2026/02/20260225_sr-946-231-176-72/ +Aktualisierte Sanktionsmeldung: Sudan | Thu, 19 Feb 2026 08:22:44 +0100 | https://www.finma.ch/en/news/2026/02/20260219_sr-946-231-18/ +Aktualisierte Sanktionsmeldung | Thu, 19 Feb 2026 08:17:08 +0100 | https://www.finma.ch/en/news/2026/02/20260219_sr-946-231-09/ +Alain Girard to assume leadership of FINMA’s Banks division | Wed, 18 Feb 2026 09:59:00 +0100 | https://www.finma.ch/en/news/2026/02/20260218-mm-leitung-gb-b/ +FINMA to relocate its Zurich office from the city centre to Oerlikon | Fri, 06 Feb 2026 11:00:00 +0100 | https://www.finma.ch/en/news/2026/02/20260206-meldung-standort-zh/ +Aktualisierte Sanktionsmeldung: Russland | Fri, 30 Jan 2026 15:58:54 +0100 | https://www.finma.ch/en/news/2026/01/20260130-sr-946-231-176-72/ +Aktualisierte Sanktionsmeldung: Haiti | Thu, 29 Jan 2026 08:28:55 +0100 | https://www.finma.ch/en/news/2026/01/20260129-sr-946-231-139-4/ +Aktualisierte Sanktionsmeldung: Guatemala | Tue, 27 Jan 2026 13:21:43 +0100 | https://www.finma.ch/en/news/2026/01/20260127-sr-946-231-137-6/ +Aktualisierte Sanktionsmeldung: Demokratische Republik Kongo | Tue, 13 Jan 2026 12:13:38 +0100 | https://www.finma.ch/en/news/2026/01/20260113-sr-946-231-12/ +Aktualisierte Sanktionsmeldung: Venezuela | Tue, 13 Jan 2026 12:09:30 +0100 | https://www.finma.ch/en/news/2026/01/20260113-sr-946-231-178-5/ +Aktualisierte Sanktionsmeldung: Russland | Tue, 13 Jan 2026 12:03:42 +0100 | https://www.finma.ch/en/news/2026/01/20260113-sr-946-231-176-72/ +FINMA publishes guidance on risks associated with the custody of cryptobased assets | Mon, 12 Jan 2026 09:59:00 +0100 | https://www.finma.ch/en/news/2026/01/20260112-mm-am-01-26/ +New ordinance on the freezing of assets in the context of Venezuela of 5 January 2026 | Mon, 05 Jan 2026 13:45:00 +0100 | https://www.finma.ch/en/news/2026/01/20260105-sr-196-127-85/ +FINMA launches consultation on partially revised Circular 2016/7 “Video and online identification” | Tue, 16 Dec 2025 09:59:00 +0100 | https://www.finma.ch/en/news/2025/12/20251216-mm-video-online-id/ +Totalrevision der Verordnung über Massnahmen gegenüber der Islamischen Republik Iran | Mon, 15 Dec 2025 10:32:39 +0100 | https://www.finma.ch/en/news/2025/12/20251215-sr-946-231-143-6/ +Sanktionen: Die Schweiz weitet ihre Sanktionslisten betreffend Russland und Belarus aus | Fri, 12 Dec 2025 16:39:27 +0100 | https://www.finma.ch/en/news/2025/12/20251212-sanktionsmeldung-russland-belarus/ +Aktualisierte Sanktionsmeldung: Republik Irak | Thu, 11 Dec 2025 09:04:35 +0100 | https://www.finma.ch/en/news/2025/12/20251211-sr-946-206/ +Aktualisierte Sanktionsmeldung: Sudan | Tue, 09 Dec 2025 13:24:29 +0100 | https://www.finma.ch/en/news/2025/12/20251209-sr-946-231-18/ +Hedwig Ulmer Busenhart joins FINMA’s Executive Board | Tue, 09 Dec 2025 09:00:00 +0100 | https://www.finma.ch/en/news/2025/12/20251209-mm-leitung-gb-v/ +Swiss Takeover Board: Beat Fellmann’s term of office extended by one year | Fri, 28 Nov 2025 09:58:00 +0100 | https://www.finma.ch/en/news/2025/11/20251128-mm-uek-verlaengerung/ +Ex-post evaluation of Circular 2019/2 “Interest rate risks – banks” | Wed, 26 Nov 2025 09:58:00 +0100 | https://www.finma.ch/en/news/2025/11/20251126-mm-expost-rs-19-2-zinsrisiken/ +Federal Council appoints new member to FINMA’s Board of Directors | Wed, 19 Nov 2025 06:58:10 +0100 | https://www.finma.ch/en/news/2025/11/20251119-mm-change-vr/ +FINMA Risk Monitor 2025: accentuated geopolitical risks – cyber and real estate risks continue to grow | Mon, 17 Nov 2025 09:00:00 +0100 | https://www.finma.ch/en/news/2025/11/20251117-mm-risikomonitor/ +Insurance intermediary certificates unlawfully obtained due to manipulation | Tue, 11 Nov 2025 08:59:00 +0100 | https://www.finma.ch/en/news/2025/11/20251111-mm-vbv/ +Aktualisierte Sanktionsmeldung: ISIL (Da'esh) / Al-Kaida | Fri, 07 Nov 2025 16:05:45 +0100 | https://www.finma.ch/en/news/2025/11/20251107-sr-946-231-08/ +Aktualisierte Sanktionsmeldung: Belarus | Fri, 31 Oct 2025 08:42:14 +0100 | https://www.finma.ch/en/news/2025/10/20251031-sr-946-231-116-9/ +Aktualisierte Sanktionsmeldung: Russland | Thu, 30 Oct 2025 14:03:08 +0100 | https://www.finma.ch/en/news/2025/10/20251030-sr-946-231-176-72/ +Aktualisierte Sanktionsmeldung: ISIL (Da'esh) / Al-Kaida | Wed, 22 Oct 2025 15:44:04 +0200 | https://www.finma.ch/en/news/2025/10/20251022-sr-946-231-08/ +Aktualisierte Sanktionsmeldung: Haiti | Tue, 21 Oct 2025 17:28:13 +0200 | https://www.finma.ch/en/news/2025/10/20251021-sr-946-231-139-4/ +Aktualisierte Sanktionsmeldung: Nicaragua | Tue, 21 Oct 2025 15:09:42 +0200 | https://www.finma.ch/en/news/2025/10/20251021-sr-946-231-158-5/ +Aktualisierte Sanktionsmeldung: Islamischen Republik Iran | Tue, 21 Oct 2025 15:02:15 +0200 | https://www.finma.ch/en/news/2025/10/20251021-sr-946-231-143-6/ +Aktualisierte Sanktionsmeldung: ISIL (Da'esh) / Al-Kaida | Fri, 17 Oct 2025 14:34:19 +0200 | https://www.finma.ch/en/news/2025/10/20251710-sr-946-231-08/ +FINMA to appeal partial decision of the Federal Administrative Court concerning AT1 | Wed, 15 Oct 2025 09:59:00 +0200 | https://www.finma.ch/en/news/2025/10/20251015-meldung-bvger-at1/ +Aktualisierte Sanktionsmeldung: ISIL (Da'esh) / Al-Kaida | Fri, 10 Oct 2025 12:08:58 +0200 | https://www.finma.ch/en/news/2025/10/20251010-sr-946-231-08/ +FINMA publishes guidance on the extension of the transitional period for exchange of collateral in certain OTC derivatives transactions | Thu, 09 Oct 2025 09:55:00 +0200 | https://www.finma.ch/en/news/2025/10/20251009-meldung-am-04-25/ +Aktualisierte Sanktionsmeldung: Burundi | Tue, 07 Oct 2025 14:16:00 +0200 | https://www.finma.ch/en/news/2025/10/20251007-sr-946-231-121-8/ +Sanktionsmeldung: Guinea-Bissau | Tue, 07 Oct 2025 14:10:54 +0200 | https://www.finma.ch/en/news/2025/10/20251007-sr-946-231-138-3/ +Aktualisierte Sanktionsmeldung: Syrien | Tue, 07 Oct 2025 14:04:54 +0200 | https://www.finma.ch/en/news/2025/10/20251007-rs-946-231-172-7/ +Aktualisierte Sanktionsmeldung: Russland | Wed, 01 Oct 2025 06:11:24 +0200 | https://www.finma.ch/en/news/2025/10/20251001-sr-946-231-176-72/ +UBS resolution report | Thu, 25 Sep 2025 08:00:00 +0200 | https://www.finma.ch/en/news/2025/09/20250925-mm-resolution-bericht-ubs/ +FINMA and the UK supervisory authorities strengthen cooperation in financial services | Mon, 22 Sep 2025 12:14:00 +0200 | https://www.finma.ch/en/news/2025/09/20250922-meldung-mou-london/ +FINMA publishes guidance on the disclosure of cryptobased assets in the annual financial statements of banks and securities firms | Fri, 05 Sep 2025 09:59:00 +0200 | https://www.finma.ch/en/news/2025/09/20250905-meldung-am-kryptovermoegenswerte/ +FINMA publishes consolidated ordinance covering the insolvency proceedings at financial market institutions | Thu, 04 Sep 2025 09:58:00 +0200 | https://www.finma.ch/en/news/2025/09/20250904-mm-insolvenzverordnung/ diff --git a/data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/data_level0.bin b/data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..5efb1b9f398d64303b911a57992cc0b9721a21dc GIT binary patch literal 167600 zcmeIuF#!Mo0K%a4Pi+kkh(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj ZFkrxd0RsjM7%*VKfB^#r3>Yx*JTQ*V00961 literal 0 HcmV?d00001 diff --git a/data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/header.bin b/data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/header.bin new file mode 100644 index 0000000000000000000000000000000000000000..bb54792626c8e16cb8f8a2b989bd1998268ad65c GIT binary patch literal 100 rcmZQ%K!6kk6U^#ig9x<1XsG;uC=h`16`(YX|F20q)m`+uJ9*X0`p;XI|CGyK*X7$To?_LJ}kIFN_NNdjdzdB@|4-KRWdL^ zWVE3Q9ANZ9wg!-WFn$9gL_z^-K8#-vRX<@OQx8ZzjK858zdMfLaEA`eeki?QHFkGg ifSM0;M;laqgDb=xFn&Taes>(j;SOCicQ9;2bq4^YHbF=L literal 0 HcmV?d00001 diff --git a/data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/link_lists.bin b/data/chroma/4e62d272-4649-4357-b7ab-0c5c9ee7a654/link_lists.bin new file mode 100644 index 0000000..e69de29 diff --git a/data/chroma/chroma.sqlite3 b/data/chroma/chroma.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..36d7bb4bf767ae55e8e31f4e456b4bca57db9589 GIT binary patch literal 385024 zcmeEv2VfkgU%@)V-^Apmu4^3;w(PyZjy1cUBu!AF0}1 zd0yozpFqAu?j_d|-ypgxKI+y#K7XmdSy71b%}Gszgvr>tX6Jub@RrhL`67iT6+__B4AHLS}GZHe-DjndxsL%F3`>plRrOx z_acAu(xt?>+eYj<0Us!AvG>zUQM>QbV{8F^8rt7*8xjKobXMmH?f->dvH^E#gGo0nXu88_cc4g*rIwz4+lCEJmhmdyYk>Ge_z zte$e!4Q;j7wQ>s%r{}zk1&}3<+dq50tLOu}ilIv6%Qu&YCUGbv1%hRITVe#oSmc_> z8A)-zXO_hl;?--!EiGx8LqLfGJ)67x2f8+I%NY^1zI#L0VDA96Zmte zn^shd8rD!GHjGH3D4}|M?p%NKs#U}|cq0&hNp{K4sv;mtGF>!04=bgMWO&p{B(>2o z(;rZ=UBL+&3#UkZm zi-N(rcr5gyiSC-}<}gY1u}3K zmKI`vy^EJ->`H~>*3h0fMD0aCDvK~G%F3XF zqVVjeAZ{(tyJtz+GU$lrD!|uTGL^^<6S>jW^}%f6R*pPev^g3c_C{q0lJe)i{q2Ms zZ60iOdza72pOHoV%BPpDcfDR8CQHwf_Iu8@5auHb; z7jy(d9XV2&0xeK0pd)QmM%30^i!iOGW}&$`8F&Rvv0DSL2VSXqy>hm12N|e{prpU= z=KxjfZzinE7H&@LOPG2s4Id?#;jLiaT!YbAG8lzv{c3MEi4HKh42*;m)Tp-8N@OR0 ziPiawsAw$eUW9_g)pbQ$&Qjx0(t-%jn?Gh9x&SCoz5kGyxU;UVXG?!~-vIK0t-1bq z0`^1jvu=P|Np0xcx;dBES+~A#>$c1kJ=>$sx~|>4CL8Z2K1DR;`1SNg3=&5fXERoH(BQDI?!rYl0v~Z6|*UK)&&71tid2vyDm(@ zi5onm5|&9NV^rL2j@qpmsnlpe)g>w~Xdg{0T%~&?^>+yU0Y{CtBun8KhS6w7k`>J~ zZIM?*#t<1+GR74cmWb2GH4jHW!ci(TaW9}PMzTK{i-U0&*tAzFm6?E;VRz=G#lu!& zb&=xpmn5jJ_3Np1TYCpLZz&r!ch)h61j^TSjpId)XEjFFMNOA%#!zGhR@Dwz)yPdR zKhcxD8p$pe%AWPuZ17Xk3vWfyj6qkxk*P##Y%CUsc+g$0qab95a zf%U=mKLR4w+9?kqtVqsH5R3fjYYzSH}!LeM`V4dcF!)O zmIX!+Niga0VqULZPuQe23?u5k$+VPT=%v10q&91jANiwqUeqU?BV)Jfo^+O?;xx#uV~3s1VICu zuD7&yA`B4&mb3uFCk)1=#ip90*f*Sq6HvWZM8`T0G5ihQu(m#q%5|D9pIuSKUnP z*yoJ^J|r<$IMU}JDB#CQ#3&rea+hW2c%5~Ki&>KvB;MqJnHj}kQ3z#=tY9ddrXAQw z0#C2GJm85!B2n1v++b3A&IY`PVNcJUr@PLb_kV9vkVn-cg|f>4Xx+Q6wUo&+GUkWv z^7pU)1(tGLs0!vo<(6$a>sW>142T#7nxkPVp$JHaJTKFnWXTG{9#{o)@Y?Rn`aMk| zMKT38HK{K15Fc@XoopVR*ILO$ypUAOs3_lbsg??IvJ=L#s{co?03E8TB1yBWJ)L!& z%n7V1v4UnY1|!lEZ)*k*^ZNQ3@Ksk^2j4RTiz)(qU{TB4^I64Avf!Jfop$Of*-!df*)i^0gM1f03(1AzzDpJ5kSxX^0gM1f z03(1A00hwee=^{!2wVhT6&2`pfcS$EzzARjFaj6>i~vReBY+XW2w(&-0vLg}BLaKK zs=?D24KnavWJ`kAj*6nm1bKKzW>BVOGsv@wrppWuJKb2Rc(lV9f%hG29huiUwr5|0 z-R`}seslLg*ZQu3F4-0}o8{%8sEAsS=io*6GQ*ldNz~C>!fl2YlyQQn8Vt`LAZ|$3k4EXu~x1&kpK4Anf0vG{|07d{KfDyn5U<5D%7y*m`MxYo0{QQ409{3kV z03(1AzzARjFaj6>i~vReBY+XW2w()>jtHRp|Fsp7il)AXE9?JO{qw5VD`)$5kO4^g zyMGQ)wP<7U%NBY&L)N0LA(iYNp9Nb)24UOqU^Eqp6zn?cZb=K<&yH$4VPEm=zMre} zyB@+`<5Bk_O^;Y5o55#`!xp!P-8}f{_6jYK!QBtK>;{o&Z_wPPl

>nLT=YwhU~| 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

Ro(p!vVZ$tl<%AumdN_rY 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 literal 0 HcmV?d00001 diff --git a/data/input/BUA302_WEEK4_HW_IRIS.pdf b/data/input/BUA302_WEEK4_HW_IRIS.pdf deleted file mode 100644 index f118ffb2956c603b03a3190c314b3ef1a2143bee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42673 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 diff --git a/src/thomas/finma.py b/src/thomas/finma.py index 5493407..5b33a81 100644 --- a/src/thomas/finma.py +++ b/src/thomas/finma.py @@ -22,13 +22,15 @@ class RssItem: description: Optional[str] -def fetch_rss(url: str = RSS_URL, timeout: float = 20.0) -> bytes: +def fetch_rss(url: str = RSS_URL, timeout: float = 30.0) -> bytes: # Create SSL context that doesn't verify certificates (for macOS certificate issues) ssl_context = ssl.create_default_context() ssl_context.check_hostname = False ssl_context.verify_mode = ssl.CERT_NONE - with urllib.request.urlopen(url, timeout=timeout, context=ssl_context) as resp: + with urllib.request.urlopen( + url, timeout=timeout, context=ssl_context + ) as resp: return resp.read() @@ -46,7 +48,8 @@ def parse_rss(xml_bytes: bytes) -> List[RssItem]: RssItem( title=_text(item.find("title")), link=_text(item.find("link")), - pubDate=_text(item.find("pubDate")) or _text(item.find("dc:date")), + pubDate=_text(item.find("pubDate")) + or _text(item.find("dc:date")), description=_text(item.find("description")), ) ) @@ -99,7 +102,9 @@ def _item_key(item: RssItem) -> str: ) if concat: return f"raw::{concat}" - return "json::" + json.dumps(asdict(item), sort_keys=True, ensure_ascii=False) + return "json::" + json.dumps( + asdict(item), sort_keys=True, ensure_ascii=False + ) def _load_existing_keys(path: Path) -> set[str]: @@ -171,7 +176,9 @@ def main(argv: Optional[List[str]] = None) -> int: help="Output file path (default: data/finma.txt)", ) parser.add_argument( - "--url", default=RSS_URL, help="RSS URL to fetch (default: FINMA news RSS)" + "--url", + default=RSS_URL, + help="RSS URL to fetch (default: FINMA news RSS)", ) args = parser.parse_args(argv) diff --git a/src/thomas/full_rag.py b/src/thomas/full_rag.py index 62e2562..7c6a39c 100644 --- a/src/thomas/full_rag.py +++ b/src/thomas/full_rag.py @@ -6,14 +6,16 @@ import http.client from urllib.parse import urlparse import http.client -from urllib.parse import urlparse # ---------------- ChromaDB configuration (persistent by default) ---------------- # Defaults align to project root data/chroma, with optional env overrides. _PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent -CHROMA_PERSIST_DIR = os.getenv("CHROMA_PATH", str((_PROJECT_ROOT / "data" / "chroma").resolve())) +CHROMA_PERSIST_DIR = os.getenv( + "CHROMA_PATH", str((_PROJECT_ROOT / "data" / "chroma").resolve()) +) CHROMA_COLLECTION_NAME = os.getenv("CHROMA_COLLECTION", "documents") + def _get_chroma_client_and_collection(): """ Initialize a persistent Chroma client and return (client, collection). @@ -30,28 +32,35 @@ def _get_chroma_client_and_collection(): Path(CHROMA_PERSIST_DIR).mkdir(parents=True, exist_ok=True) client = chromadb.PersistentClient( - path=CHROMA_PERSIST_DIR, - settings=Settings(anonymized_telemetry=False) + path=CHROMA_PERSIST_DIR, settings=Settings(anonymized_telemetry=False) ) # Prefer get_or_create_collection when available for robustness try: get_or_create = getattr(client, "get_or_create_collection") - collection = get_or_create(name=CHROMA_COLLECTION_NAME, metadata={"hnsw:space": "cosine"}) + collection = get_or_create( + name=CHROMA_COLLECTION_NAME, metadata={"hnsw:space": "cosine"} + ) except Exception: try: collection = client.get_collection(CHROMA_COLLECTION_NAME) except Exception: - collection = client.create_collection(name=CHROMA_COLLECTION_NAME, metadata={"hnsw:space": "cosine"}) + collection = client.create_collection( + name=CHROMA_COLLECTION_NAME, metadata={"hnsw:space": "cosine"} + ) return client, collection + # ---------------- Ollama configuration (no env vars) ---------------- OLLAMA_BASE_URL = "http://127.0.0.1:11434" # Use a valid published model tag. Common options: "llama3.1", "llama3.1:8b", "llama3.1:latest", # "mistral:7b", "qwen2.5:7b", "phi3:3.8b". -OLLAMA_MODEL = "llama3.1" # changed from "llama3.1:8b-instruct" which does not exist +OLLAMA_MODEL = ( + "llama3.1" # changed from "llama3.1:8b-instruct" which does not exist +) OLLAMA_ENABLED = False OLLAMA_TIMEOUT_SECONDS = 600 + def discover_source_files(root_path: str) -> List[str]: allowed_exts = {".doc", ".docx", ".pdf", ".txt", ".rtf"} @@ -129,9 +138,15 @@ def _default_input_dir() -> Path: project_root = module_dir.parent.parent return (project_root / "data" / "input").resolve() + def _clean_extracted_text(text: str, keep_punctuation: bool = True) -> str: t = text.replace("\r\n", "\n").replace("\r", "\n") - t = t.replace("\u00AD", "").replace("\u200B", "").replace("\u200C", "").replace("\u200D", "") + t = ( + t.replace("\u00ad", "") + .replace("\u200b", "") + .replace("\u200c", "") + .replace("\u200d", "") + ) t = re.sub(r"-\s*\n\s*", "", t) t = t.replace("\n\n", "

") t = re.sub(r"[ \t]*\n[ \t]*", " ", t) @@ -139,10 +154,24 @@ def _clean_extracted_text(text: str, keep_punctuation: bool = True) -> str: def _collapse_spaces(m: re.Match) -> str: return re.sub(r"\s+", "", m.group(0)) - t = re.sub(r"(h\s*t\s*t\s*p\s*s?\s*:\s*/\s*/[^ \t<>)]+)", _collapse_spaces, t, flags=re.IGNORECASE) - t = re.sub(r"(d\s*o\s*i\s*[:.]?\s*10\.[^ \t<>)]+)", _collapse_spaces, t, flags=re.IGNORECASE) + t = re.sub( + r"(h\s*t\s*t\s*p\s*s?\s*:\s*/\s*/[^ \t<>)]+)", + _collapse_spaces, + t, + flags=re.IGNORECASE, + ) + t = re.sub( + r"(d\s*o\s*i\s*[:.]?\s*10\.[^ \t<>)]+)", + _collapse_spaces, + t, + flags=re.IGNORECASE, + ) t = re.sub(r"(10\.\d{4,}/[^ \t<>)]+)", _collapse_spaces, t) - t = re.sub(r"([A-Za-z0-9-]+\s*\.\s*[A-Za-z0-9.-]+\s*/[^ \t<>)]*)", _collapse_spaces, t) + t = re.sub( + r"([A-Za-z0-9-]+\s*\.\s*[A-Za-z0-9.-]+\s*/[^ \t<>)]*)", + _collapse_spaces, + t, + ) t = re.sub(r"[ \t]+", " ", t).strip() # Replace preserved paragraph markers with a single space to remove all newlines @@ -156,12 +185,21 @@ def _collapse_spaces(m: re.Match) -> str: return t - -def _ollama_request(method: str, path: str, body: Optional[dict] = None) -> Tuple[int, str]: +def _ollama_request( + method: str, path: str, body: Optional[dict] = None +) -> Tuple[int, str]: """Minimal HTTP client for Ollama without external deps.""" url = urlparse(OLLAMA_BASE_URL) - conn_cls = http.client.HTTPSConnection if url.scheme == "https" else http.client.HTTPConnection - conn = conn_cls(url.hostname, url.port or (443 if url.scheme == "https" else 80), timeout=OLLAMA_TIMEOUT_SECONDS) + conn_cls = ( + http.client.HTTPSConnection + if url.scheme == "https" + else http.client.HTTPConnection + ) + conn = conn_cls( + url.hostname, + url.port or (443 if url.scheme == "https" else 80), + timeout=OLLAMA_TIMEOUT_SECONDS, + ) try: payload = None headers = {"Content-Type": "application/json"} @@ -174,11 +212,20 @@ def _ollama_request(method: str, path: str, body: Optional[dict] = None) -> Tupl finally: conn.close() + # Streamed pull to avoid timeouts on large downloads def _ollama_pull_stream(model: str) -> bool: url = urlparse(OLLAMA_BASE_URL) - conn_cls = http.client.HTTPSConnection if url.scheme == "https" else http.client.HTTPConnection - conn = conn_cls(url.hostname, url.port or (443 if url.scheme == "https" else 80), timeout=OLLAMA_TIMEOUT_SECONDS) + conn_cls = ( + http.client.HTTPSConnection + if url.scheme == "https" + else http.client.HTTPConnection + ) + conn = conn_cls( + url.hostname, + url.port or (443 if url.scheme == "https" else 80), + timeout=OLLAMA_TIMEOUT_SECONDS, + ) try: payload = json.dumps({"name": model, "stream": True}).encode("utf-8") headers = {"Content-Type": "application/json"} @@ -186,7 +233,9 @@ def _ollama_pull_stream(model: str) -> bool: resp = conn.getresponse() if resp.status not in (200, 206): data = resp.read().decode("utf-8", errors="replace") - print(f"[prepare_data] Ollama pull failed ({resp.status}): {data[:200]}") + print( + f"[prepare_data] Ollama pull failed ({resp.status}): {data[:200]}" + ) return False # Read streaming JSONL chunks until 'status'=='success' or 'completed' buf = b"" @@ -223,10 +272,13 @@ def _ollama_pull_stream(model: str) -> bool: finally: conn.close() + def _ollama_model_available(model: str) -> bool: status, data = _ollama_request("GET", "/api/tags") if status != 200: - print(f"[prepare_data] Ollama /api/tags returned {status}; response: {data[:200]}") + print( + f"[prepare_data] Ollama /api/tags returned {status}; response: {data[:200]}" + ) return False try: obj = json.loads(data) @@ -237,6 +289,7 @@ def _ollama_model_available(model: str) -> bool: print(f"[prepare_data] Failed to parse /api/tags: {ex}") return False + def _ollama_generate(prompt: str, model: str) -> str: """Call Ollama /api/generate with stream disabled and parse the response. @@ -272,16 +325,20 @@ def _ollama_generate(prompt: str, model: str) -> str: # As a last resort, return raw data return data + # Try pull with stream first, then non-stream as fallback def _ollama_try_pull_model(model: str) -> bool: if _ollama_pull_stream(model): return True - status, data = _ollama_request("POST", "/api/pull", {"name": model, "stream": False}) + status, data = _ollama_request( + "POST", "/api/pull", {"name": model, "stream": False} + ) if status == 200: return True print(f"[prepare_data] Ollama pull failed ({status}): {data[:200]}") return False + def _ollama_clean_text(raw_text: str) -> str: if not OLLAMA_ENABLED: return raw_text @@ -309,7 +366,10 @@ def _ollama_clean_text(raw_text: str) -> str: return raw_text -def load_source_data(data_files: Optional[List[str]] = None) -> List[Tuple[str, str]]: + +def load_source_data( + data_files: Optional[List[str]] = None, +) -> List[Tuple[str, str]]: """Load and parse source data files. - If data_files is None, discover files under default input dir. @@ -321,7 +381,9 @@ def load_source_data(data_files: Optional[List[str]] = None) -> List[Tuple[str, if data_files is None: input_dir = _default_input_dir() discovered = discover_source_files(str(input_dir)) - data_files = [p for p in discovered if Path(p).suffix.lower() in _supported] + data_files = [ + p for p in discovered if Path(p).suffix.lower() in _supported + ] results: List[Tuple[str, str]] = [] for file_path in data_files: @@ -343,7 +405,6 @@ def load_source_data(data_files: Optional[List[str]] = None) -> List[Tuple[str, return results - def _estimate_tokens(text: str) -> int: # Rough heuristic: ~4 chars per token for English return max(1, (len(text) + 3) // 4) @@ -352,10 +413,27 @@ def _estimate_tokens(text: str) -> int: def _split_into_sentences(text: str) -> List[str]: # Hint section headers to become boundaries section_words = [ - "ABSTRACT", "Abstract", "INTRODUCTION", "Introduction", "BACKGROUND", "Background", - "METHODS", "Methods", "MATERIALS", "Materials", "RESULTS", "Results", - "DISCUSSION", "Discussion", "CONCLUSION", "Conclusions", "Conclusion", - "ACKNOWLEDGEMENTS", "Acknowledgements", "REFERENCES", "References" + "ABSTRACT", + "Abstract", + "INTRODUCTION", + "Introduction", + "BACKGROUND", + "Background", + "METHODS", + "Methods", + "MATERIALS", + "Materials", + "RESULTS", + "Results", + "DISCUSSION", + "Discussion", + "CONCLUSION", + "Conclusions", + "Conclusion", + "ACKNOWLEDGEMENTS", + "Acknowledgements", + "REFERENCES", + "References", ] for w in section_words: text = re.sub(rf"\b{re.escape(w)}\b\s*:?\s*", f"{w}. ", text) @@ -368,8 +446,17 @@ def _split_into_sentences(text: str) -> List[str]: essential_section_titles = { - "abstract", "introduction", "background", "methods", "materials", "results", - "discussion", "conclusion", "conclusions", "acknowledgements", "references" + "abstract", + "introduction", + "background", + "methods", + "materials", + "results", + "discussion", + "conclusion", + "conclusions", + "acknowledgements", + "references", } @@ -408,13 +495,15 @@ def flush_current(): if s_tok >= max_tokens: # Split this long sentence by words words = s.split() - approx_words_per_chunk = max_tokens * 4 // 5 # ~80% of max in words heuristically + approx_words_per_chunk = ( + max_tokens * 4 // 5 + ) # ~80% of max in words heuristically if approx_words_per_chunk <= 0: approx_words_per_chunk = len(words) step = max(1, approx_words_per_chunk - max(5, overlap_tokens)) i = 0 while i < len(words): - piece_words = words[i:i + approx_words_per_chunk] + piece_words = words[i : i + approx_words_per_chunk] piece = " ".join(piece_words) if current_tok + _estimate_tokens(piece) > max_tokens: flush_current() @@ -436,8 +525,12 @@ def flush_current(): if _estimate_tokens(s) > max_tokens: # already handled by branch above, but keep guard words = s.split() - for i in range(0, len(words), max(1, max_tokens - overlap_tokens)): - piece = " ".join(words[i:i + max(1, max_tokens - overlap_tokens)]) + for i in range( + 0, len(words), max(1, max_tokens - overlap_tokens) + ): + piece = " ".join( + words[i : i + max(1, max_tokens - overlap_tokens)] + ) current.append(piece) current_tok += _estimate_tokens(piece) + 1 if current_tok >= target_tokens: @@ -491,7 +584,9 @@ def chunk_data() -> bool: except ValueError as e: print(f"[prepare_data] {e}") return False - source_files = [p for p in files if Path(p).suffix.lower() in {".pdf", ".txt"}] + source_files = [ + p for p in files if Path(p).suffix.lower() in {".pdf", ".txt"} + ] items = load_source_data(source_files) # Semantic chunking parameters (token heuristics) @@ -531,13 +626,15 @@ def chunk_data() -> bool: next_id_int += 1 ids.append(doc_id) documents.append(chunk_text) - metadatas.append({ - "source": path_str, - "chunk_index": chunk_idx, - "doc_index": doc_index, - "tokens": _estimate_tokens(chunk_text), - "filename": str(Path(path_str).name), - }) + metadatas.append( + { + "source": path_str, + "chunk_index": chunk_idx, + "doc_index": doc_index, + "tokens": _estimate_tokens(chunk_text), + "filename": str(Path(path_str).name), + } + ) # Write chunks to JSONL for downstream steps (e.g., generate_metadatas) try: @@ -567,10 +664,19 @@ def chunk_data() -> bool: client, collection = _get_chroma_client_and_collection() sentinel_id = "__init__" sentinel_doc = "chroma-initialization-sentinel" - sentinel_meta = {"type": "init", "note": "created from chunk_data when no documents"} + sentinel_meta = { + "type": "init", + "note": "created from chunk_data when no documents", + } try: - collection.add(ids=[sentinel_id], documents=[sentinel_doc], metadatas=[sentinel_meta]) - print(f"[prepare_data] Wrote sentinel to Chroma to force DB creation at {CHROMA_PERSIST_DIR}.") + collection.add( + ids=[sentinel_id], + documents=[sentinel_doc], + metadatas=[sentinel_meta], + ) + print( + f"[prepare_data] Wrote sentinel to Chroma to force DB creation at {CHROMA_PERSIST_DIR}." + ) except Exception as ex2: if "embedding" in str(ex2).lower(): collection.add( @@ -579,14 +685,20 @@ def chunk_data() -> bool: metadatas=[sentinel_meta], embeddings=[_cheap_embedding(sentinel_doc)], ) - print("[prepare_data] Wrote sentinel with fallback embedding to initialize DB.") + print( + "[prepare_data] Wrote sentinel with fallback embedding to initialize DB." + ) else: - print(f"[prepare_data] Failed to write sentinel to Chroma: {ex2}") + print( + f"[prepare_data] Failed to write sentinel to Chroma: {ex2}" + ) try: persist_fn = getattr(client, "persist", None) if callable(persist_fn): persist_fn() - print(f"[prepare_data] Chroma client.persist() called for path: {CHROMA_PERSIST_DIR}") + print( + f"[prepare_data] Chroma client.persist() called for path: {CHROMA_PERSIST_DIR}" + ) except Exception: pass except Exception: @@ -604,30 +716,38 @@ def chunk_data() -> bool: for i in range(0, len(documents), BATCH): try: collection.upsert( - ids=ids[i:i+BATCH], - documents=documents[i:i+BATCH], - metadatas=metadatas[i:i+BATCH], + ids=ids[i : i + BATCH], + documents=documents[i : i + BATCH], + metadatas=metadatas[i : i + BATCH], ) except Exception as batch_ex: # Provide fallback embeddings if Chroma requires them if "embedding" in str(batch_ex).lower(): - print("[prepare_data] Chroma requires embeddings for upsert; using fallback vectors.") - embeddings = [_cheap_embedding(t) for t in documents[i:i+BATCH]] + print( + "[prepare_data] Chroma requires embeddings for upsert; using fallback vectors." + ) + embeddings = [ + _cheap_embedding(t) for t in documents[i : i + BATCH] + ] collection.upsert( - ids=ids[i:i+BATCH], - documents=documents[i:i+BATCH], - metadatas=metadatas[i:i+BATCH], + ids=ids[i : i + BATCH], + documents=documents[i : i + BATCH], + metadatas=metadatas[i : i + BATCH], embeddings=embeddings, ) else: raise - print(f"[prepare_data] Persisted {len(documents)} semantic chunks to Chroma collection '{CHROMA_COLLECTION_NAME}' at {CHROMA_PERSIST_DIR}") + print( + f"[prepare_data] Persisted {len(documents)} semantic chunks to Chroma collection '{CHROMA_COLLECTION_NAME}' at {CHROMA_PERSIST_DIR}" + ) # Ensure persistence is flushed to disk if the client supports it try: persist_fn = getattr(client, "persist", None) if callable(persist_fn): persist_fn() - print(f"[prepare_data] Chroma client.persist() called for path: {CHROMA_PERSIST_DIR}") + print( + f"[prepare_data] Chroma client.persist() called for path: {CHROMA_PERSIST_DIR}" + ) except Exception: pass return True @@ -635,6 +755,7 @@ def chunk_data() -> bool: print(f"[prepare_data] Failed to upsert chunks to Chroma: {ex}") return False + def _ensure_chunks_file() -> Path: """Ensure chunks.jsonl exists by running chunk_data() if needed. @@ -651,12 +772,16 @@ def _ensure_chunks_file() -> Path: try: chunk_data() except Exception as ex: - print(f"[prepare_data] chunk_data failed while ensuring chunks file: {ex}") + print( + f"[prepare_data] chunk_data failed while ensuring chunks file: {ex}" + ) # Even if chunk_data failed, return the path; caller will handle absence return out_path -def _load_chunks_from_jsonl(chunks_path: Path) -> Tuple[List[str], List[str], List[dict]]: +def _load_chunks_from_jsonl( + chunks_path: Path, +) -> Tuple[List[str], List[str], List[dict]]: """Load chunk rows from JSONL and produce ids, documents, metadatas. Each JSONL line is expected to have: id, source, doc_index, chunk_index, text, tokens. @@ -681,18 +806,24 @@ def _load_chunks_from_jsonl(chunks_path: Path) -> Tuple[List[str], List[str], Li di = int(obj.get("doc_index", 0)) ci = int(obj.get("chunk_index", 0)) tok = int(obj.get("tokens", _estimate_tokens(text))) - cid = str(obj.get("id")) if obj.get("id") is not None else f"doc{di}_chunk{ci}" + cid = ( + str(obj.get("id")) + if obj.get("id") is not None + else f"doc{di}_chunk{ci}" + ) ids.append(cid) documents.append(text) # Minimal, Chroma-friendly metadata - metadatas.append({ - "source": src, - "doc_index": di, - "chunk_index": ci, - "tokens": tok, - # Shallow filename for convenience - "filename": str(Path(src).name) if src else "", - }) + metadatas.append( + { + "source": src, + "doc_index": di, + "chunk_index": ci, + "tokens": tok, + # Shallow filename for convenience + "filename": str(Path(src).name) if src else "", + } + ) return ids, documents, metadatas @@ -727,9 +858,13 @@ def generate_metadatas() -> bool: chunks_path = _ensure_chunks_file() ids, documents, metadatas = _load_chunks_from_jsonl(chunks_path) if not ids: - print("[prepare_data] No chunks found in JSONL. Run chunk_data() to generate.") + print( + "[prepare_data] No chunks found in JSONL. Run chunk_data() to generate." + ) else: - print(f"[prepare_data] Loaded {len(ids)} chunks from {chunks_path} (metadata only, no DB writes).") + print( + f"[prepare_data] Loaded {len(ids)} chunks from {chunks_path} (metadata only, no DB writes)." + ) return True except Exception as ex: print(f"[prepare_data] generate_metadatas failed: {ex}") @@ -743,6 +878,7 @@ def apply_embedding() -> bool: """ return True + def apply_retrieval(query: str) -> bool: """ Basic retrieval from persisted Chroma collection. @@ -791,12 +927,20 @@ def interactive_qa(top_k: int = 5, max_context_chars: int = 8000) -> None: # Query Chroma first; try text-based, then fallback to cheap embedding. try: - res = collection.query(query_texts=[question], n_results=top_k, include=["documents", "metadatas", "distances"]) # type: ignore + res = collection.query( + query_texts=[question], + n_results=top_k, + include=["documents", "metadatas", "distances"], + ) # type: ignore except Exception as ex: if "embedding" in str(ex).lower(): try: q_emb = [_cheap_embedding(question)] - res = collection.query(query_embeddings=q_emb, n_results=top_k, include=["documents", "metadatas", "distances"]) # type: ignore + res = collection.query( + query_embeddings=q_emb, + n_results=top_k, + include=["documents", "metadatas", "distances"], + ) # type: ignore except Exception as ex2: print(f"[qa] Retrieval failed: {ex2}") continue @@ -819,14 +963,18 @@ def interactive_qa(top_k: int = 5, max_context_chars: int = 8000) -> None: total = 0 for i in range(len(ids)): meta = metas[i] if i < len(metas) else {} - filename = (meta or {}).get("filename") or (meta or {}).get("source") or "" + filename = ( + (meta or {}).get("filename") + or (meta or {}).get("source") + or "" + ) chunk_index = (meta or {}).get("chunk_index") - doc_text = (docs[i] or "") + doc_text = docs[i] or "" snippet = doc_text.replace("\n", " ") # Truncate overly long snippets to keep prompt size reasonable if len(snippet) > 1200: snippet = snippet[:1200] + "..." - item = f"[#{i+1}] source={filename} chunk={chunk_index}\n{snippet}\n" + item = f"[#{i + 1}] source={filename} chunk={chunk_index}\n{snippet}\n" if total + len(item) <= max_context_chars: context_parts.append(item) total += len(item) @@ -868,9 +1016,11 @@ def interactive_qa(top_k: int = 5, max_context_chars: int = 8000) -> None: print("[qa] Bye.") + def send_to_llm() -> bool: return True + def cleanup_with_llm() -> bool: """Placeholder for future LLM-based cleanup. Currently a no-op for tests.""" return True @@ -880,6 +1030,7 @@ def apply_sentence_transformers() -> bool: """Placeholder for Sentence-Transformers embedding step. Currently a no-op for tests.""" return True + if __name__ == "__main__": input_dir = _default_input_dir() try: @@ -904,6 +1055,8 @@ def apply_sentence_transformers() -> bool: overlap_tokens=50, ) for idx, ch in enumerate(chunks): - print(f"[chunk {idx}] tokens={_estimate_tokens(ch)}\n{ch}\n---") + print( + f"[chunk {idx}] tokens={_estimate_tokens(ch)}\n{ch}\n---" + ) except Exception as ex: print(f"[prepare_data] Failed to generate/print semantic chunks: {ex}") diff --git a/src/thomas/vdb.py b/src/thomas/vdb.py index fdd6b09..c5ac731 100644 --- a/src/thomas/vdb.py +++ b/src/thomas/vdb.py @@ -1,21 +1,43 @@ import chromadb from chromadb.config import Settings +import argparse import json import os import http.client +import importlib +import sys +import hashlib from urllib.parse import urlparse from pathlib import Path -def add_sentences_to_chromadb(sentences, collection_name="sentences_collection"): - client = chromadb.Client( - Settings( +def _make_ids(sentences): + counts = {} + ids = [] + for sentence in sentences: + base = hashlib.sha256( + sentence.encode("utf-8", errors="ignore") + ).hexdigest() + n = counts.get(base, 0) + counts[base] = n + 1 + ids.append(base if n == 0 else f"{base}-{n}") + return ids + + +def add_sentences_to_chromadb( + sentences, + persist_path, + collection_name="sentences_collection", +): + client = chromadb.PersistentClient( + path=str(persist_path), + settings=Settings( anonymized_telemetry=False, - ) + ), ) collection = client.get_or_create_collection(name=collection_name) - ids = [f"sentence-{i}" for i in range(len(sentences))] - collection.add( + ids = _make_ids(sentences) + collection.upsert( documents=sentences, ids=ids, ) @@ -26,6 +48,13 @@ def add_sentences_to_chromadb(sentences, collection_name="sentences_collection") OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434") OLLAMA_MODEL = os.getenv("OLLAMA_MODEL", "llama3.1") +# Add or remove RSS feeds here. +# Each URL in this list is fetched during refresh and appended into data/all.txt. +RSS_FEED_URLS = [ + "https://www.finma.ch/en/rss/news/", + # "https://example.org/feed.xml", +] + def _ollama_generate(prompt: str, model: str = OLLAMA_MODEL) -> str: url = urlparse(OLLAMA_BASE_URL) @@ -60,7 +89,9 @@ def _ollama_generate(prompt: str, model: str = OLLAMA_MODEL) -> str: resp = conn.getresponse() data = resp.read().decode("utf-8", errors="replace") if resp.status != 200: - raise RuntimeError(f"Ollama generate failed ({resp.status}): {data[:200]}") + raise RuntimeError( + f"Ollama generate failed ({resp.status}): {data[:200]}" + ) # Try parse single JSON first try: obj = json.loads(data) @@ -87,14 +118,61 @@ def _ollama_generate(prompt: str, model: str = OLLAMA_MODEL) -> str: if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Run vdb demo with optional RSS refresh." + ) + parser.add_argument( + "--no-refresh", + action="store_true", + help="Skip downloading RSS feeds before loading data/all.txt", + ) + args = parser.parse_args() + # Use project-root relative path so running from any cwd works project_root = Path(__file__).resolve().parent.parent.parent + src_root = project_root / "src" + if str(src_root) not in sys.path: + sys.path.insert(0, str(src_root)) + + try: + finma_module = importlib.import_module("thomas.finma") + fetch_rss = finma_module.fetch_rss + parse_rss = finma_module.parse_rss + write_ndjson = finma_module.write_ndjson + except Exception as ex: + raise RuntimeError(f"Failed to import thomas.finma: {ex}") from ex + finma_path = project_root / "data" / "finma.txt" - if not finma_path.exists(): + all_path = finma_path.with_name("all.txt") + chroma_path = project_root / "data" / "chroma" + chroma_path.mkdir(parents=True, exist_ok=True) + + if args.no_refresh: + print("Skipping RSS refresh (--no-refresh)") + else: + total_appended = 0 + failures = 0 + for url in RSS_FEED_URLS: + try: + xml_bytes = fetch_rss(url=url) + rss_items = parse_rss(xml_bytes) + appended = write_ndjson(rss_items, all_path) + total_appended += appended + print(f"Feed refreshed: {url} (appended {appended} item(s))") + except Exception as ex: + failures += 1 + print(f"Feed refresh failed: {url} ({ex})") + print( + "RSS refresh complete: " + f"{len(RSS_FEED_URLS) - failures}/{len(RSS_FEED_URLS)} feeds succeeded, " + f"{total_appended} total new item(s) appended to {all_path}" + ) + + if not all_path.exists(): raise FileNotFoundError( - f"{finma_path} not found. Expected file at project root: {finma_path}" + f"{all_path} not found. Expected file at project root: {all_path}" ) - with finma_path.open("r", encoding="utf-8") as f: + with all_path.open("r", encoding="utf-8") as f: contents = f.read() contents = contents.split("\n") @@ -118,7 +196,8 @@ def _ollama_generate(prompt: str, model: str = OLLAMA_MODEL) -> str: sentence = " ".join(filter(None, (title, link, pubDate, description))) sentences.append(sentence) - collection = add_sentences_to_chromadb(sentences) + collection = add_sentences_to_chromadb(sentences, persist_path=chroma_path) + print(f"Chroma DB path: {chroma_path}") question = input("Ask a question: ") results = collection.query( query_texts=[question], @@ -128,7 +207,11 @@ def _ollama_generate(prompt: str, model: str = OLLAMA_MODEL) -> str: # Pick the highest-score item (first result for the single query) top_doc = None - if results and isinstance(results.get("documents"), list) and results["documents"]: + if ( + results + and isinstance(results.get("documents"), list) + and results["documents"] + ): # documents is List[List[str]] per query docs_for_query = results["documents"][0] if docs_for_query: From 7e5ead5519494859699de22f3a03c28b58cda9be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 18:28:19 +0000 Subject: [PATCH 2/2] Bump urllib3 from 2.6.3 to 2.7.0 Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.7.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- uv.lock | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/uv.lock b/uv.lock index e2e5f2c..66585ed 100644 --- a/uv.lock +++ b/uv.lock @@ -1850,7 +1850,11 @@ dependencies = [ { name = "typing-extensions" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/1b/af5fccb50c341bd69dc016769503cb0857c1423fbe9343410dfeb65240f2/torch-2.10.0-1-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:7350f6652dfd761f11f9ecb590bfe95b573e2961f7a242eccb3c8e78348d26fe", size = 79498248, upload-time = "2026-02-06T17:37:31.982Z" }, + { url = "https://files.pythonhosted.org/packages/ec/23/2c9fe0c9c27f7f6cb865abcea8a4568f29f00acaeadfc6a37f6801f84cb4/torch-2.10.0-2-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:e521c9f030a3774ed770a9c011751fb47c4d12029a3d6522116e48431f2ff89e", size = 79498254, upload-time = "2026-02-10T21:44:44.095Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c6/4dfe238342ffdcec5aef1c96c457548762d33c40b45a1ab7033bb26d2ff2/torch-2.10.0-3-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:80b1b5bfe38eb0e9f5ff09f206dcac0a87aadd084230d4a36eea5ec5232c115b", size = 915627275, upload-time = "2026-03-11T14:16:11.325Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f0/72bf18847f58f877a6a8acf60614b14935e2f156d942483af1ffc081aea0/torch-2.10.0-3-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:46b3574d93a2a8134b3f5475cfb98e2eb46771794c57015f6ad1fb795ec25e49", size = 915523474, upload-time = "2026-03-11T14:17:44.422Z" }, + { url = "https://files.pythonhosted.org/packages/f4/39/590742415c3030551944edc2ddc273ea1fdfe8ffb2780992e824f1ebee98/torch-2.10.0-3-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:b1d5e2aba4eb7f8e87fbe04f86442887f9167a35f092afe4c237dfcaaef6e328", size = 915632474, upload-time = "2026-03-11T14:15:13.666Z" }, + { url = "https://files.pythonhosted.org/packages/b6/8e/34949484f764dde5b222b7fe3fede43e4a6f0da9d7f8c370bb617d629ee2/torch-2.10.0-3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:0228d20b06701c05a8f978357f657817a4a63984b0c90745def81c18aedfa591", size = 915523882, upload-time = "2026-03-11T14:14:46.311Z" }, { url = "https://files.pythonhosted.org/packages/c9/6f/f2e91e34e3fcba2e3fc8d8f74e7d6c22e74e480bbd1db7bc8900fdf3e95c/torch-2.10.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:5c4d217b14741e40776dd7074d9006fd28b8a97ef5654db959d8635b2fe5f29b", size = 146004247, upload-time = "2026-01-21T16:24:29.335Z" }, { url = "https://files.pythonhosted.org/packages/98/fb/5160261aeb5e1ee12ee95fe599d0541f7c976c3701d607d8fc29e623229f/torch-2.10.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6b71486353fce0f9714ca0c9ef1c850a2ae766b409808acd58e9678a3edb7738", size = 915716445, upload-time = "2026-01-21T16:22:45.353Z" }, { url = "https://files.pythonhosted.org/packages/6a/16/502fb1b41e6d868e8deb5b0e3ae926bbb36dab8ceb0d1b769b266ad7b0c3/torch-2.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:c2ee399c644dc92ef7bc0d4f7e74b5360c37cdbe7c5ba11318dda49ffac2bc57", size = 113757050, upload-time = "2026-01-21T16:24:19.204Z" }, @@ -1943,11 +1947,11 @@ wheels = [ [[package]] name = "urllib3" -version = "2.6.3" +version = "2.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, ] [[package]]