top of page

Vytváříte si znalostní bázi, ale nejste příliš spokojeni s výsledky?

Obrázek autora: Petr AdamekPetr Adamek

Začali jste si vytvářet na RAG založenou znalostní bázi, případně chatbot nad vlastními dokumenty, ale výsledky nejsou úplně ono. Při komunikaci chatbot často požadovanou informaci nenajde? Úskalí těchto projektů je několik, ale jedny z nejčastějších příčin jsou v oblasti zpracování dokumentů, kterým RAG "krmíte". Využíváte li nástroj typu AnythingLLM, který používám třeba já a mohu klidně doporučit všem, včetně menších firem, které si jednoduchým způsobem chtějí vybudovat znalostní bázi. Není nic snazšího než využít vhodný jazykový model, já používám Claude 3.5 Haiku, ale stejně tak můžete použít ChatGPT 4.o mini, Gemini 1.5 Flash nebo Mistral. K tomu vhodný embedder. Pro Anthropic použijete ideálně voyage-3, k ostatním zmíněným jejich vlastní embedding modely. Podobně s vektorovou databází, kde já používám Pinecone. Kromě zadání API klíče nic složité.


Pak ale přijdou tři úskalí, které rozhodují o výsledku. Prvním z nich je zadat dobrý systémový prompt, druhým nastavit vhodně chunking, tedy rozsekávání textu na kousky pro vektorizaci a tím, kde můžete hodně ztratit, v jakém formátu soubory do nástroje vůbec nahrávat. Tool jako AnythingLLM podporuje od MS formátů, PDF, video/audio formáty, HTML atd. Bohužel ale to, že tool umí dokument nahrát a vektorizovat neznamená, že bude dobře zpracován a to pak poznáte na výsledku při komunikaci s chatbotem. Nebudete dostávat informace, které chcete.


Jak z toho ven. Já používám pro nahrání pouze jeden formát a tím je Markdown. Markdown je lehký "lidsky" čitelný mark-up jazyk, který umí embeddery dobře zpracovat. Jak, ale dokumenty v MD získat? Naštěstí existuje řada velmi jednoduchých toolů, které jste schopni nahrát do počítače a pomocí Python scriptu spustit. Nástroj pak zkonvertuje všechny jiné zmíněné formáty do MD. Teď si říkáte, neumím Python ani programovat, tak jak to mám udělat. Na to, abyste to byli schopni udělat, kromě schopnosti ovládat rozumně počítač, nic jiného umět nemusíte. Vytvořil jsem několik scriptů, které vám umožní konverzi pouze s tím, že umíte spustit terminálové okno a máte připravený API klíč od jazykového modelu, který budete používat.


Nejproblematičtější z hlediska přípravy jsou PDF dokumenty, přitom se jedná o nejběžnější formát. PDF dokumenty jsou často v komplexní struktuře s více sloupci, vloženými obrázky, tabulkami, grafy atd. A navíc někdy vznikly skenováním. Jednoduchý script, který jsem nazval pdf2md, kde je obsažen komplexní systémový prompt jsem odladil tak, aby si poradil i s tímto typem PDF s využitím jazykových modelů od Google. Nyní absolutní špička v oblasti vision schopností, které jsou potřeba, abychom se vyhnuli použití OCR, když je dokument naskenován. Script nevyžaduje instalaci, pouze si ho nahrajete dle postupu popsaného na Github do vytvořeného adresáře. Script umožňuje dávkové zpracování velkého množství souborů naráz, s volbou modelu, který chcete použít. Pro běžné PDF doporučuji Flash a pro opravdu složité Pro.


Originální stránka v PDF formátu
Originální stránka v PDF formátu
Markdown konverze pomocí Gemini Pro
konverze do Markdown pomocí Gemini Pro
Markdown konverze pomocí Markitdown
konverze do Markdown pomocí Markitdown

Na obrázcích je vidět perfektní konverze pomocí Gemini, kde si model poradil se sloupcovou strukturou na rozdíl od nástroje Markitdown. Popsal také obrázek tabulky (Figure 1.)


Řeknete si, proč dokument nenahraji přímo do modelu přes chatovací okno ze svého účtu. To samozřejmě možné je a použijete li tentýž prompt, můžete postupně získat požadované dokumenty. Problémem je pouze, že PDFka budete muset nahrávat postupně. Využití API je jednoduché, naučíte se něco užitečného a Google nabízí tier zdarma, kterým jste schopni se vyhnout placení i pouze jen za účet. Musíte ovšem sledovat čerpání neboť je omezeno nejen počtem tokenů za den, ale také za minutu a množstvím tokenů v dotazu. V podstatě musíte zpracování dokumentů rozložit trochu v čase, ale desítky dokumentů se takto dají zdarma zpracovat.


Druhou oblastí, které je z hlediska zpracování vstupů problematická jsou obrázky. A nemyslím obecné obrázky, ale vývojové diagramy, technické výkresy, designové skicy, složité tabulky nebo grafy. Pro tyto potřeby využívám jiný tool, který jsem nazval image2md. Opět nejedná se o nic jiného než o Python script, se sofistikovaným systémovým promptem, který dokáže nyní ovšem s využitím modelů od Anthropic dávkovým způsobem zpracovat libovolné množství "obrázků" a vytvořit dobře strojově čitelný markdown. Proč modely od Anthropic? Protože jsou na tuto činnost nejlepší. Důležité je využít model Claude 3.5 Sonnet a kvůli optimalizaci nákladů velké obrázky downscalovat do rozlišení ~ 1000 x 1000 px maximálně (náklad ~ $0,01) . Opět jsem použití popsal také pro méně zkušené na Github a přidal také html apku pro hromadný downscaling obrázků. Jediné co musí člověk nainstalovat, jednoduše, jsou knihovny od Anthropic. Stejně jako u pdf2md od Google.


Posledním nástrojem, který chci popsat je Markitdown od Microsoft. Opět se jedná o v Python napsaný tool, který ideálním způsobem zpracuje všechny MS formáty Docx, Pptx, Xlsx a to zcela zdarma. Umí všemožné jiné, ale tam bych ho nedoporučil, zvláště ne na složitěji strukturovaná PDFka a obrázky. Pdf konvertuje bez LLM a na obrázky využívá ChatGPT 4o, který není zdaleka na tuto činnost tak dobrý jako Claude Sonnet. Nezapomeňte si stáhnout také můj příspěvek k tomuto projektu, script pro dávkové zpracování souborů, abyste nemuseli soubory konvertovat po jednom.


Budete li přes jednoduchost cítit, že je něco nad vaše síly nebo chcete li poradit s budováním rozsáhlejší znalostní báze pro vaši firmu, naše služby jsou vám vždy k dispozici.

4 zobrazení

Nejnovější příspěvky

Zobrazit vše

Comments


Ing. Petr Adámek - AP Consulting

©2021-2024 by AP Consulting

bottom of page