6 min čtení
AI chatbot nad firemními dokumenty v SharePointu: jak funguje
AI chatbot nad dokumenty v SharePointu odpovídá s citací zdroje a přes Entra ID ukáže jen to, k čemu má uživatel přístup. Popisuji indexaci, tabulky i testy.
Napsal František Jánoš, konzultant pro AI a datovou analýzu
AI chatbot nad firemními dokumenty v SharePointu vyhledá k dotazu odpovídající úseky z vašich návodů, směrnic a technických listů a jazykový model z nich sestaví odpověď s odkazem na zdroj. Uživatel se přihlásí účtem Microsoft Entra ID a chatbot hledá jen v dokumentech, které by ten člověk otevřel i přímo v SharePointu. Kvalitu odpovědí hlídá sada testovacích otázek, kterou chatbot projde před každým nasazením.
Co je RAG a proč chatbot nečte celý SharePoint
RAG (retrieval-augmented generation) znamená, že program nejdřív vyhledá relevantní text a teprve ten předá jazykovému modelu. Model tedy odpovídá z několika úseků, které mu dodáte, a ne ze své paměti. Postup popsali Lewis a kolegové v roce 2020 a na stejném principu fungují i dnešní firemní chatboti.
Celou knihovnu do modelu poslat nemůžete. Je moc velká, stálo by to hodně peněz a model by se v ní ztratil. Proto se dokumenty předem rozdělí na úseky (chunky), každý úsek dostane číselný otisk (embedding) a uloží se do vyhledávacího indexu. Při dotazu chatbot vybere třeba deset nejbližších úseků a jen ty jdou do modelu.
Jak chatbot respektuje oprávnění z SharePointu
Oprávnění musí platit už při vyhledávání. Když chatbot najde úsek z tajné složky a teprve potom ho vyřadí, data už prošla aplikací a stačí jedna chyba v kódu, aby se dostala do odpovědi. OWASP vede únik citlivých informací mezi hlavními riziky aplikací s jazykovými modely.
Postup, který doporučuje i Microsoft:
- Načtení práv. Při indexaci si program přes Microsoft Graph přečte, kteří uživatelé a skupiny smí dokument číst, včetně práv zděděných ze složky nebo knihovny.
- Uložení k úseku. Každý úsek v indexu nese seznam ID uživatelů a skupin z Entra ID. ID, protože e-mail nebo jméno se může změnit.
- Filtr při dotazu. Chatbot z přihlašovacího tokenu zjistí, kdo se ptá a ve kterých skupinách je, a hledá jen v úsecích s jeho ID.
- Synchronizace. Změna práv v SharePointu se do indexu propíše při dalším běhu. Do té doby může chatbot ukazovat stav z minulé synchronizace.
| Způsob | Jak funguje | Kdy ho volit |
|---|---|---|
| Filtr v indexu podle ID z Entra ID | práva se uloží k úsekům, dotaz je filtruje | vlastní chatbot, vlastní index |
| Dotaz přímo do SharePointu za uživatele | vyhledávání běží s právy přihlášeného člověka | když nechcete udržovat vlastní kopii práv |
| Filtr až po vyhledání | aplikace vyřadí nepovolené výsledky dodatečně | nepoužívat |
Aplikace, která dokumenty indexuje, by neměla číst celý tenant. Microsoft Graph nabízí oprávnění Sites.Selected: správce aplikaci povolí jen konkrétní weby a knihovny. Pro chatbota nad technickou dokumentací tak stačí přístup k jedné knihovně a do personálních složek se aplikace nedostane.
Indexace: od souboru k úsekům textu
Indexace rozhoduje o kvalitě odpovědí víc než volba modelu. Program při ní projde knihovny, které jste určili, a každý soubor zpracuje v pěti krocích:
- Výběr obsahu. Určíte, které knihovny a typy souborů do indexu patří. Koncepty, archivy a osobní složky do něj obvykle nepatří.
- Převod na text. Z Wordu a PDF s textovou vrstvou program text přečte přímo. Sken nebo fotku musí nejdřív převést přes OCR.
- Dělení na úseky. Text se rozdělí podle nadpisů a odstavců. Úsek nese název dokumentu, kapitolu a číslo stránky, aby chatbot uměl citovat.
- Tabulky zvlášť. Tabulka zůstane pohromadě i se záhlavím sloupců (podrobněji níže).
- Uložení s právy a verzí. Úsek dostane embedding, seznam oprávněných ID a datum poslední změny dokumentu.
Vyhledávání pak kombinuje dva přístupy. Fulltext najde přesné shody, například typové označení výrobku nebo číslo normy. Vektorové vyhledávání najde úsek, který odpovídá významem, i když uživatel použil jiná slova. Hybridní vyhledávání spojí oba výsledky.
Tabulky, skeny a staré verze
U výrobních firem chatbot nejčastěji selže na třech místech.
Tabulky. Technický list má parametry v tabulce: model, výkon, rozměry, hmotnost. Když tabulku rozdělíte na řádky bez záhlaví, z úseku „12 | 450 | 38“ nikdo nepozná, co které číslo znamená. Tabulku proto indexuji jako samostatný celek s názvem dokumentu a záhlavím sloupců a vyhledávám v ní odděleně od běžného textu.
Skeny. Starší výkresy, protokoly a certifikáty bývají naskenované bez textové vrstvy. Pro index jsou prázdné, dokud neprojdou OCR. Před spuštěním si nechte vypsat, kolik dokumentů nemá žádný text. Ten seznam vám ukáže, kde chatbot nebude odpovídat.
Staré verze. Ve složce leží „Návod_v3.pdf“, „Návod_v4.pdf“ a „Návod_v4_final.pdf“. Chatbot nepozná, která verze platí, a klidně odcituje tu starou. Pomůže pravidlo, že do indexu jde jen schválená verze, nebo metadata v SharePointu, podle kterých program staré verze vynechá.
Citace a testovací sada před nasazením
Každá odpověď má mít odkaz na dokument a stránku, ze které vychází. Uživatel si odpověď ověří jedním kliknutím a vy poznáte, když chatbot cituje špatný dokument. Pokud chatbot k dotazu nic relevantního nenajde, má to říct. Odpověď bez zdroje si uživatel ověřit nemůže.
Kvalitu odpovědí měří testovací sada. Sestavíte ji ze skutečných otázek, které lidé kladou: „Jaký je maximální tlak u modelu X?“, „Kde najdu postup pro reklamaci dílu Y?“. Ke každé otázce zapíšete správnou odpověď a dokument, ve kterém leží. Chatbot sadu projde před každou změnou modelu, promptu nebo indexace. Když výsledek klesne, nová verze se nenasadí.
Bez testovací sady posuzujete chatbota podle dojmu z pár dotazů. Změna délky úseků pak může zlepšit jeden typ otázek a jiný zhoršit, a vy se to dozvíte až od uživatelů.
Z mé praxe
Pro distributora techniky jsem postavil AI asistenta nad technickou dokumentací. Index obsahuje 408 dokumentů rozdělených na 12 489 úseků, uložených v PostgreSQL s rozšířením pgvector. Vyhledávání je hybridní a tabulky prohledává zvlášť od textu, protože odpovědi na technické dotazy leží nejčastěji právě v tabulkách parametrů. Odpověď se zobrazuje průběžně, jak ji model píše, a nese citace zdrojových dokumentů. Regresní sada otázek je podmínkou každého nasazení: verze, která na sadě propadne, do provozu nejde. Podrobněji asistenta popisuji v případové studii.
Přihlášení přes Microsoft Entra ID používám i u dalších interních nástrojů. Nástroj na vytěžování faktur má jednotné přihlášení (SSO) přes Entra. Výpočetní jádro konfigurátoru pro dimenzování vytápění jsem zveřejnil jako vzdálený MCP server za Entra ID s OAuth 2.1, takže ho AI asistent může volat jen pro přihlášeného uživatele. Stejný princip popisuji v článku o napojení AI na ERP přes MCP.
Patnáct let jsem pracoval ve výrobě, v kvalitě a ve vývoji procesů (o mně, co umím). Pracovní postupy, specifikace a protokoly znám z pohledu člověka, který v nich hledá odpověď u linky. Proto při návrhu chatbota začínám testovací sadou z otázek, které lidé ve firmě opravdu kladou.
Vlastní chatbot, nebo Copilot
Copilot v SharePointu odpovídá na otázky k obsahu aktuální stránky, souboru nebo složky. Pokud vám stačí shrnout dokument nebo najít odpověď v jednom webu, zkuste nejdřív jeho.
Vlastní chatbot dává smysl, když potřebujete:
- rozhodnout, které knihovny a verze do indexu patří a které ne,
- zpracovat tabulky parametrů a skeny jinak než obecný nástroj,
- měřit kvalitu odpovědí na vlastní testovací sadě,
- napojit chatbota na další systémy, například na ERP nebo na zpracování objednávek z e-mailu.
Související řešení
- AI asistent pro technickou podporu
Odpovídá z vašich manuálů, norem a směrnic
Časté dotazy
- Uvidí zaměstnanec v odpovědi chatbota dokument, ke kterému nemá přístup?
- Nemá. Každý úsek textu v indexu nese seznam uživatelů a skupin, které ho smí číst. Chatbot při dotazu zjistí z přihlášení přes Entra ID, kdo se ptá, a vyhledává jen v úsecích s jeho oprávněním. Pozor na zpoždění: změnu práv v SharePointu chatbot převezme až při další synchronizaci.
- Co je RAG?
- RAG (retrieval-augmented generation) je postup, kdy program nejdřív vyhledá v dokumentech úseky textu k dotazu a teprve ty předá jazykovému modelu. Model odpovídá z dodaných úseků a uvede, ze kterého dokumentu čerpal.
- Odchází naše dokumenty k poskytovateli jazykového modelu?
- Do modelu odchází jen několik úseků textu, které chatbot k dotazu vyhledal, ne celá knihovna. Kam přesně a za jakých podmínek, záleží na zvoleném modelu a smlouvě s poskytovatelem. To je potřeba rozhodnout před začátkem projektu.
- Zvládne chatbot naskenované PDF a tabulky?
- Sken bez textové vrstvy musí nejdřív projít OCR, jinak ho chatbot nenajde. Tabulky je lepší indexovat jako samostatné celky i se záhlavím sloupců, protože rozsekaná tabulka ztratí význam čísel.
- Jak poznám, že chatbot odpovídá správně?
- Sestavte sadu skutečných otázek se správnými odpověďmi a zdrojovými dokumenty. Chatbot ji projde před každou změnou a nová verze se nasadí jen tehdy, když výsledky neklesnou.
- Kdy stačí Microsoft 365 Copilot a kdy dává smysl vlastní chatbot?
- Copilot v SharePointu odpovídá nad obsahem stránky, složky nebo webu. Vlastní chatbot se vyplatí, když potřebujete řídit, které knihovny a verze do indexu patří, jak se zpracují tabulky a jak se měří kvalita odpovědí.
Zdroje
- 01Document-Level Access Control, Azure AI Search (Microsoft Learn), navštíveno 23. 10. 2026
- 02Propagating SharePoint Document Permissions to AI Search and RAG Pipelines (Microsoft ISE Developer Blog), navštíveno 23. 10. 2026
- 03Overview of Selected Permissions in OneDrive and SharePoint (Microsoft Graph), navštíveno 23. 10. 2026
- 04OWASP LLM02:2025 Sensitive Information Disclosure, navštíveno 23. 10. 2026
- 05Lewis a kol.: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (arXiv 2005.11401), navštíveno 23. 10. 2026
O autorovi
František Jánoš
Stavím nástroje na vytěžování faktur a poptávek, AI asistenty nad technickou dokumentací a napojení AI na ERP. Několik z nich je v ostrém provozu.
Co umím