Röviden:
- A hatékony SharePoint-alapú RAG pipeline kiindulópontja az indexelt Azure AI Search megoldás, amely gyors és jogosultságtudatos eredményeket ad.
- A sikerhez fontos a megfelelő chunking, a permission-modell folyamatos finomhangolása, és a rendszeres mérés, különösen a groundedness és a felhasználói elégedettség növelése érdekében.
A legjobb kiindulópont egy webhelyszintű, előre indexelt Azure AI Search alapú pipeline, permission-aware lekérdezéssel. Ez adja a leggyorsabb, mérhető eredményt anélkül, hogy a jogosultságkezelés vagy a frissesség azonnal bonyolult kompromisszumokat kényszerítene.
Mielőtt belevágnál a részletekbe, három dolog, amit érdemes fejben tartani:
- Ajánlott pilotméret: egy közepes nagyságú dokumentumállomány webhelyenként; ennél kisebb mintán a chunking-tuning nem ad megbízható visszajelzést, ennél nagyobbon a jogosultsági rések hamar elrejtőznek.
- Miért indexelt megközelítés? Jobb válaszidő, teljes kontroll a chunk metaadatok és a keresési relevancia felett, és a pilot alatt mérhetően javuló groundedness-mutató.
- Iterálj, ne tökéletesíts: az első két hétben a chunking és a permission-modell finomhangolása fontosabb, mint a modellcsere.
A RAG (Retrieval-Augmented Generation) kifejezés a visszakereséssel kiegészített szöveggenerálást jelöli: a rendszer először releváns dokumentumrészleteket keres, majd ezek alapján generál választ. SharePoint-környezetben ez azt jelenti, hogy a vállalati tudásbázis dokumentumai valóban elérhetővé válnak egy AI-asszisztens számára, a jogosultságok és a tartalom frissessége megőrzésével.
Tartalomjegyzék
- Hogyan épül fel egy SharePoint RAG pipeline rétegről rétegre?
- Hogyan csatlakoztasd a SharePoint-ot a pipeline-hoz?
- Indexelt tudásbázis vagy távoli lekérdezés: melyiket válaszd?
- Hogyan dolgozd fel a SharePoint dokumentumokat hatékonyan?
- Melyik embedding modellt és vektortárat válaszd?
- Hogyan tartsd szinkronban a SharePoint-ot és az indexet?
- Hogyan illeszd a retrieval-t a prompt pipeline-ba?
- Hogyan tervezd meg és mérd a pilotot?
- Hogyan kezeld a biztonságot és a megfelelőséget a pipeline-ban?
- Node.js walkthrough: fetch, chunk, embed, retrieve, generate
- Mik a következő lépések a pilot után?
- Fő tanulságok
- Amit a legtöbb implementáció elsőre elront
- Hogyan segít Stratify a SharePoint RAG bevezetésében?
- Ajánlott források és hivatalos dokumentáció
Hogyan épül fel egy SharePoint RAG pipeline rétegről rétegre?
A pipeline hat egymásra épülő rétegből áll. Mindegyik réteg meghibásodása a felette lévőket is érinti, ezért az architektúra megértése nem opcionális.
| Réteg | Komponens | Fő feladat |
|---|---|---|
| Forrás | Microsoft SharePoint | Dokumentumok, könyvtárak, metaadatok tárolása |
| Beolvasás (ingestion) | Microsoft Graph API / SharePoint REST / Logic Apps | Fájlok és metaadatok kinyerése, változáskövetés |
| Feldolgozás | Azure Document Intelligence, OCR | Szöveg kinyerése, chunking, metaadat-gazdagítás |
| Embedding és vektortár | Azure OpenAI embeddings, Azure AI Search, pgvector | Vektoros reprezentáció és indexelés |
| Retrieval | Azure AI Search, Copilot Retrieval API | Releváns chunkök visszakeresése, permission-szűrés |
| Generálás | Azure OpenAI GPT-modell | Kontextus alapú válasz előállítása, forráscitáció |
| Felhasználói alkalmazás | Teams bot, webalkalmazás, API | Végfelhasználói interfész, feedback-gyűjtés |

Az architekturális gyakorlatok szerint a pipeline sikere az ingestion és a retrieval rétegeken múlik. A modellcsere viszonylag egyszerű, de egy rosszul tervezett chunking-stratégia vagy hiányos permission-modell az egész rendszert megbízhatatlanná teszi.
Skálázhatóság és monitoring. Már a pilot fázisban érdemes bevezetni egy alapszintű megfigyelési réteget: lekérdezési latencia, indexelési hibák és chunk-szintű relevancia-visszajelzés. Ezek nélkül a tuning vak kísérletezéssé válik. A hibakezelés szempontjából a leggyakoribb problémák a throttling a Graph API-nál, az OCR-hibák scannelt dokumentumoknál és a jogosultsági rések, amelyek csak éles tesztelésnél derülnek ki.

Hogyan csatlakoztasd a SharePoint-ot a pipeline-hoz?
Négy fő csatlakozási minta létezik, és a választás a frissességi igénytől, a csapat képességeitől és a licenckörnyezettől függ.
Microsoft Graph delta API a legmegbízhatóbb megközelítés inkrementális szinkronizáláshoz. A /sites/{siteId}/drive/root/delta endpoint visszaadja az utolsó szinkronizálás óta megváltozott fájlokat, beleértve az áthelyezéseket és törléseket is. Az Azure GPT-RAG projekt SharePoint connectorja erre épít: intelligens freshness-ellenőrzéssel, chunk ID-kkal és beállítható párhuzamossággal dolgozik.
Egy alap Graph hívás fájlok listázásához:
const { Client } = require('@microsoft/microsoft-graph-client');
const client = Client.initWithMiddleware({ authProvider });
const result = await client
.api(`/sites/${siteId}/drive/root/children`)
.select('id,name,lastModifiedDateTime,webUrl,file')
.get();
SharePoint REST API régebbi környezetekben vagy specifikus lista-adatoknál hasznos, de a Graph API-t érdemes preferálni az egységes hitelesítési modell miatt.
Azure Logic Apps / Power Automate alacsony kódigényű megközelítés: a SharePoint-connector triggereli az ingestion-folyamatot fájlmódosításkor. Kisebb pilotoknál gyors beindítást tesz lehetővé, de a finomhangolhatóság korlátozott.
A csatlakozási opciók összehasonlítása:
- Dedikált indexer (Azure GPT-RAG): — előre épített SharePoint-integráció, chunk ID-kezelés és párhuzamos feldolgozás; ajánlott, ha az Azure-ökoszisztémán belül maradsz.
Hitelesítés és jogosultságok. Az app registration során válaszd az alkalmazás-szintű (client credentials) hitelesítést szerver-oldali pipeline-hoz, delegált hitelesítést (on-behalf-of) pedig akkor, ha a felhasználói kontextust a lekérdezésig meg kell őrizni. A Microsoft Entra (korábban Azure AD) csoporttagságokat már az ingestion fázisban érdemes a chunk metaadatokhoz rendelni, nem utólag. A rate-limit hibákat exponenciális visszalépéssel (exponential backoff) kezeld: a 429-es válaszoknál a Retry-After fejléc értékét használd várakozási időként.
Indexelt tudásbázis vagy távoli lekérdezés: melyiket válaszd?
A SharePoint dokumentumok RAG-rendszerekbe történő integrációja két fő megközelítést használ: előre indexelt Azure AI Search és távoli lekérdezés a Copilot Retrieval API-n keresztül.
| Szempont | Indexelt (Azure AI Search) | Távoli (Copilot Retrieval API) |
|---|---|---|
| Lekérdezési latencia | Alacsony (előre indexelt) | Magasabb (valós idejű SharePoint-hívás) |
| Tartalom frissessége | Szinkronizálástól függ | Valós idejű |
| Jogosultságkezelés | Manuális permission-szűrés szükséges | Automatikus, SharePoint-natív |
| Chunk-kontroll | Teljes | Nincs |
| Implementációs komplexitás | Közepes–magas | Alacsony |
| Licenckövetelmény | Azure AI Search | Copilot licenc szükséges lehet |
| Költség | Index tárolás + lekérdezés | Copilot API-hívás díja |
A távoli SharePoint tudásbázis a Copilot Retrieval API-t használja, és lekérdezés időben érvényesíti a SharePoint jogosultságokat és Purview-címkéket; nincs szükség előzetes indexelésre. Ez vonzó egyszerűsége miatt, de a magasabb latencia és a Copilot-licencfüggőség valós korlátok.
Az indexelt megközelítésnél egy kritikus beállítás: az includeReferenceSourceData: true paraméter szükséges ahhoz, hogy a generált válaszokban a forrásdokumentum URL-je megjelenjen. Enélkül a felhasználó nem tudja ellenőrizni, honnan származik az információ, ami vállalati környezetben elfogadhatatlan.
Mikor melyiket? Ha a csapatnak nincs Copilot-licence, vagy ha a chunking és keresési relevancia finomhangolása prioritás, az indexelt megközelítés a jobb választás. Ha a jogosultságkezelés komplexitása a fő kockázat és a latencia elfogadható, a távoli megközelítés gyorsabb beindítást ad.
Hogyan dolgozd fel a SharePoint dokumentumokat hatékonyan?
A dokumentumfeldolgozás az a pont, ahol a legtöbb pilot megbotlik. Nem a modell, hanem a rossz chunking okozza az irreleváns válaszokat.
Formátumok és OCR:
.docx,.pptx: natív szövegkinyerés az Azure Document Intelligence-szel, a stílusok és fejlécek megőrzésével..pdf: ha digitálisan létrehozott, szövegkinyerés elegendő; scannelt PDF-eknél OCR szükséges, és az Azure Document Intelligence Layout modellje adja a legjobb eredményt táblázatoknál és többhasábos elrendezéseknél..aspx(SharePoint oldalak): a HTML-ből érdemes kiszűrni a navigációs elemeket és a boilerplate-tartalmat, csak a fő tartalmi zónát megtartva.
Chunking szabályok:
- Fejezet- és címsoralapú chunking az elsődleges stratégia: egy chunk egy logikai egységet fedjen le, ne egy fix karakterszámot.
- Az 1 000–1 500 token alapérték jó kiindulópont, de az optimum az embedding modell és a vektortár konfigurációjától függ; a pilotban mindkét végét teszteld.
- Táblázatokat és listákat ne vágj szét: egy táblázat egy chunk, még ha ez meghaladja az alapértéket.
- Átfedő (overlapping) chunking 10–15%-os átfedéssel csökkenti a kontextusvesztést a határon.
Metaadatok, amelyeket minden chunkhoz érdemes tárolni:
- Forrásút és webhely URL
- Könyvtár és fájlnév
- Szerző és
lastModifiedDateTime - Section heading lineage (az összes szülőcím a gyökértől a chunkig)
- Azure AD csoportazonosítók (permission-aware retrieval-hoz)
- Tartalom-hash (deduplikációhoz)
Profi tipp: A tartalom-hash (pl. SHA-256 a chunk szövegéből) tárolása lehetővé teszi, hogy dokumentummozgatásnál ne indexeld újra a tartalmat, csak a metaadatokat frissítsd. Ez különösen hasznos, ha a felhasználók rendszeresen átszervezik a SharePoint-könyvtárakat.
A deduplikáció a hash alapján működik: ha egy fájl tartalma nem változott, csak az útvonala, a chunk szövegét nem kell újra embeddingolni, csak a metaadatokat kell frissíteni a vektortárban.
Melyik embedding modellt és vektortárat válaszd?
Az embedding modell és a vektortár választása hosszú távú döntés: a pipeline többi részénél nehezebb cserélni, mert az összes vektort újra kell generálni.
Embedding modellek. Az Azure OpenAI text-embedding-3-large modell jelenleg a legjobb pontosságot adja angol és vegyes nyelvű vállalati tartalmakhoz. A text-embedding-3-small olcsóbb és gyorsabb, de a relevancia-különbség érezhető hosszabb dokumentumoknál. Nyílt modellek (pl. multilingual-e5-large) helyi üzemeltetésnél jönnek szóba, ha az adatvédelmi követelmények nem engedik a tartalom külső API-ra küldését.
Vektortárak:
- Azure AI Search — az ajánlott választás Azure-natív pipeline-hoz: beépített hibrid keresés (vektoros + full-text BM25), permission-szűrés metaadat-alapon és közvetlen integráció az Azure OpenAI-jal.
Magyarországi üzemeltetési szempontok. Ha a tartalom személyes adatokat vagy üzleti titkot tartalmaz, az adatrezidencia kérdése kritikus: az Azure West Europe (Amszterdam) és North Europe (Dublin) régiók EU-s adatkezelést biztosítanak, de a GDPR-megfelelőség a szerződéses kontrollokat is megköveteli. Helyi üzemeltetésnél a pgvector vagy Qdrant on-premises telepítése csökkenti a külső adatátvitelt, de növeli az üzemeltetési komplexitást.
Az operációs checklist: rendszeres backup a vektortárból, reindex-stratégia modellváltáskor (az összes vektor újragenerálása szükséges), és hibrid keresés bekapcsolása az Azure AI Search-ben a ritka kulcsszavak jobb lefedéséhez.
Hogyan tartsd szinkronban a SharePoint-ot és az indexet?
A szinkronizálás az a terület, ahol a legtöbb implementáció alulbecsüli a komplexitást. Egy dokumentum átnevezése, áthelyezése vagy törlése mind külön kezelést igényel.
Szinkronizálási minták:
- Delta endpoint (Graph API): a
/deltahívás visszaadja az összes változást az utolsó deltaLink token óta. Ez a legmegbízhatóbb módszer, mert a SharePoint maga követi a változásokat, nem a pipeline. - Webhook alapú push: a SharePoint értesíti a pipeline-t változáskor; azonnali frissítést ad, de a webhook-előfizetések lejárnak (max. 6 hónap), és megújításuk automatizálást igényel.
- Ütemezett batch indexelés: egyszerűbb, de a frissesség a batch-intervallumtól függ. Napi batch elfogadható, ha a tartalom nem változik percenként.
Intelligens inkrementális frissítés. A delta endpoint és a lastModifiedDateTime alapú intelligens inkrementális frissítés megakadályozza a felesleges újraindexelést. A gyakorlatban 1 másodperces tolerancia használata csökkenti a race condition jelenségeket: ha a tárolt és a SharePoint-bélyegző közötti különbség kisebb, mint 1 másodperc, a chunk nem kerül újraindexelésre.
Fájlmozgatás és törlés kezelése:
- Áthelyezésnél a Graph delta API
deletedésfilemezőit vizsgáld: az újidazonos marad, de aparentReferenceváltozik. - Törléskor a chunk-okat a vektortárból is törölni kell; a chunk ID-k tárolása (forrásút + fájl ID + chunk sorszám hash) teszi ezt megbízhatóvá.
- Átnevezésnél csak a metaadatokat kell frissíteni, ha a tartalom-hash nem változott.
Webhook vs batch: valós idejű frissítési igénynél (pl. jogi dokumentumok, szerződések) a webhook a jobb választás. Nagyobb dokumentumkönyvtáraknál, ahol a throughput fontosabb, a napi batch olcsóbb és egyszerűbben monitorozható.
Hogyan illeszd a retrieval-t a prompt pipeline-ba?
A retrieval és a prompt-összeállítás közötti illesztés határozza meg, hogy a felhasználó hasznos, idézhető választ kap-e, vagy egy magabiztosan téves állítást.
Retrieval scoring. Az Azure AI Search hibrid keresése vektoros hasonlóságot és full-text BM25 pontszámot kombinál. A reciprocal rank fusion (RRF) a két lista rangsorait összevonja: az RRF-pontszám 1/(k + rank) alakú, ahol k általában 60. Ez a módszer robusztusabb, mint a nyers vektoros hasonlóság, különösen rövidebb lekérdezéseknél.
Prompt-összeállítás. A bevált minta: a top-N chunk (általában 5–10) szövegét és metaadatait a rendszer-promptba illeszted, majd a felhasználói kérdést utána. A cite-inline technika azt jelenti, hogy minden chunkhoz egy [Forrás: {webUrl}] jelölőt adsz, és az LLM-et utasítod, hogy a válaszban hivatkozzon rájuk. Az includeReferenceSourceData: true beállítás az Azure AI Search oldalán gondoskodik arról, hogy a forrás URL-je visszakerüljön a retrieval válaszba.
Egy egyszerű prompt sablon:
Rendszer: Az alábbi dokumentumrészletek alapján válaszolj a kérdésre.
Minden állítást jelölj meg a forrás URL-jével [Forrás: URL].
Ha a válasz nem található a dokumentumokban, jelezd ezt.
Dokumentumok:
{chunks_with_sources}
Kérdés: {user_query}
Latencia és tokenköltség. A top-N limit kritikus: 10 chunknál több ritkán javít a válásminőségen, de jelentősen növeli a tokenköltséget. Reranking után (pl. cross-encoder modellel) csak a top-3–5 chunk kerüljön a modellhez. A chunk mérete és a modell kontextusablaka közötti egyensúly: GPT-4o esetén 128k token kontextus elegendő teret ad, de a tokenköltség lineárisan nő.
Hogyan tervezd meg és mérd a pilotot?
Egy jól tervezett pilot 4–8 hét alatt megbízható döntési alapot ad a skálázáshoz. A kulcs a mérhető metrikák előzetes definiálása.
- Scope meghatározása: egy SharePoint webhely, 500–2 000 dokumentum, egy jól körülhatárolt felhasználói csoport (pl. egy részleg).
- Baseline mérés: rögzítsd a jelenlegi SharePoint-keresés teljesítményét ugyanazon kérdéskészleten; ez lesz az összehasonlítási alap.
- Ingestion és chunking beállítása: az első héten az ingestion pipeline és a chunking-stratégia finomhangolása a prioritás.
- Retrieval tuning: a második héten a keresési relevancia mérése és a hibrid keresési súlyok beállítása.
- Felhasználói tesztelés: a harmadik–negyedik héten a célcsoport teszteli a rendszert előre definiált kérdésekkel és szabad kérdésekkel egyaránt.
- Iteráció: a visszajelzések alapján chunking- és retrieval-módosítások, majd újabb mérési kör.
- Skálázási döntés: a pilot végén a metrikák alapján döntés a kiterjesztésről.
Metrikák, amelyeket követni érdemes:
- Retrieval latencia: a lekérdezéstől a válasz megjelenéséig eltelt idő, amely optimálisan alacsony, a gyors felhasználói élmény biztosításához.
- Groundedness: az idézett forrásokra visszavezethető állítások aránya a válaszban.
- Relevancia (CTR on citations): a felhasználók hány százaléka kattint a forrásokra, jelezve, hogy a citáció hasznos volt.
- Hibaarány: sikertelen lekérdezések, üres válaszok, jogosultsági hibák aránya.
- Felhasználói elégedettség: egyszerű 1–5 skálás visszajelzés vagy NPS a tesztelő csoporttól.
A baseline összehasonlítás a legfontosabb: ha a RAG-rendszer nem teljesít szignifikánsan jobban a jelenlegi SharePoint-keresésnél a felhasználói elégedettségben és a groundedness-ben, a chunking vagy a retrieval tuning szorul javításra, nem a modell.
Hogyan kezeld a biztonságot és a megfelelőséget a pipeline-ban?
A permission-aware retrieval nem opcionális vállalati környezetben. Egy jogosultsági rés azt jelenti, hogy egy felhasználó olyan dokumentumból kap választ, amelyhez nincs hozzáférése, és ezt a rendszer nem jelzi.
Permission-aware retrieval megvalósítása. A permission-aware retrieval minta implementálása dokumentum-szintű hozzáférés-filterezéssel történik, ahol a lekérdezéskor a felhasználó Entra/Azure AD csoporttagságait használjuk filterként. A gyakorlatban ez azt jelenti, hogy minden chunkhoz tároljuk az engedélyezett Azure AD csoportazonosítókat, majd lekérdezéskor a felhasználó aktuális csoporttagságát lekérdezzük a Microsoft Graph-ból, és ezt WHERE feltételként alkalmazzuk a vektoros keresésnél.
Purview és bizalmassági címkék. Ha a szervezet Microsoft Purview-t használ, a dokumentumok bizalmassági címkéit (pl. Confidential, Highly Confidential) az ingestion során kell kinyerni és a chunk metaadatokhoz rendelni. A pipeline-nak tudnia kell, hogy bizonyos bizalmassági szintű tartalmakat kizárjon a retrieval-ből, vagy csak meghatározott felhasználói csoportoknak adjon vissza.
GDPR-szempontok magyarországi környezetben. Az adatminimalizálás elvét a pipeline-ra is alkalmazni kell: csak azokat a mezőket tárold a vektortárban, amelyek a retrieval-hez szükségesek. Az audit logok kötelezők: minden lekérdezést, a visszaadott chunkök forrásait és a felhasználói azonosítót naplózni kell. A harmadik féltől származó AI-szolgáltatásokkal (Azure OpenAI) szemben adatfeldolgozási szerződés (DPA) szükséges, és ellenőrizni kell, hogy a tartalom nem kerül modelltraining adatként felhasználásra. Az AI compliance kérdése különösen érzékeny, ha a SharePoint-könyvtárak személyes adatokat (HR-dokumentumok, szerződések) tartalmaznak.
Üzemeltetési javaslatok:
- Hozzáférési tokeneket ne tárold hosszabb ideig, mint szükséges; az on-behalf-of flow esetén a token élettartama legyen a minimálisan szükséges.
- Rendszeres jogosultsági felülvizsgálat: ha egy felhasználó csoporttagsága megváltozik a SharePoint-ban, a pipeline-nak ezt a következő lekérdezésnél már tükröznie kell.
- A vektortárban tárolt chunk metaadatokat ugyanolyan hozzáférési kontrollal védd, mint magát a SharePoint-könyvtárat.
Node.js walkthrough: fetch, chunk, embed, retrieve, generate
Ez a walkthrough egy minimális, de futtatható folyamatot mutat be. A cél nem a production-ready kód, hanem az, hogy az alapfolyam gyorsan kipróbálható legyen.
- Környezeti változók és konfiguráció
// .env
AZURE_TENANT_ID=...
AZURE_CLIENT_ID=...
AZURE_CLIENT_SECRET=...
SHAREPOINT_SITE_ID=...
AZURE_OPENAI_ENDPOINT=...
AZURE_OPENAI_EMBEDDING_DEPLOYMENT=text-embedding-3-small
AZURE_SEARCH_ENDPOINT=...
AZURE_SEARCH_INDEX=sharepoint-rag-pilot
AZURE_SEARCH_KEY=...
OPENAI_CHAT_DEPLOYMENT=gpt-4o
- Fájl letöltése és szövegkinyerés
const { Client } = require('@microsoft/microsoft-graph-client');
const { DocumentAnalysisClient, AzureKeyCredential } = require('@azure/ai-form-recognizer');
async function fetchAndExtract(fileId) {
// Graph-on keresztül letöltés
const stream = await graphClient
.api(`/sites/${process.env.SHAREPOINT_SITE_ID}/drive/items/${fileId}/content`)
.getStream();
// Azure Document Intelligence feldolgozás
const docClient = new DocumentAnalysisClient(
process.env.AZURE_DOC_INTEL_ENDPOINT,
new AzureKeyCredential(process.env.AZURE_DOC_INTEL_KEY)
);
const poller = await docClient.beginAnalyzeDocument('prebuilt-layout', stream);
const result = await poller.pollUntilDone();
return result.content; // teljes szöveg
}
- Chunking és metaadat-mentés
function chunkText(text, metadata, maxTokens = 1200) {
const paragraphs = text.split(/
{2,}/);
const chunks = [];
let current = '';
for (const para of paragraphs) {
if ((current + para).length > maxTokens * 4) { // ~4 karakter/token
if (current) chunks.push({ text: current.trim(), ...metadata });
current = para;
} else {
current += '
' + para;
}
}
if (current) chunks.push({ text: current.trim(), ...metadata });
return chunks;
}
- Embedding és feltöltés Azure AI Search-be
const { OpenAIClient } = require('@azure/openai');
const { SearchClient, SearchIndexClient } = require('@azure/search-documents');
async function embedAndIndex(chunks) {
const openai = new OpenAIClient(process.env.AZURE_OPENAI_ENDPOINT, ...);
const searchClient = new SearchClient(process.env.AZURE_SEARCH_ENDPOINT,
process.env.AZURE_SEARCH_INDEX, ...);
for (const chunk of chunks) {
const embeddingResult = await openai.getEmbeddings(
process.env.AZURE_OPENAI_EMBEDDING_DEPLOYMENT,
[chunk.text]
);
await searchClient.uploadDocuments([{
id: chunk.chunkId,
content: chunk.text,
contentVector: embeddingResult.data[0].embedding,
sourceUrl: chunk.webUrl,
allowedGroups: chunk.allowedGroups,
lastModified: chunk.lastModifiedDateTime
}]);
}
}
- Retrieve és generate
async function retrieveAndGenerate(userQuery, userGroups) {
// Vektoros keresés permission-szűréssel
const queryEmbedding = await getEmbedding(userQuery);
const results = await searchClient.search(userQuery, {
vectorSearchOptions: {
queries: [{ vector: queryEmbedding, fields: ['contentVector'], kNearestNeighborsCount: 10 }]
},
filter: `allowedGroups/any(g: search.in(g, '${userGroups.join(',')}'))`,
top: 5,
select: ['content', 'sourceUrl']
});
// Prompt összeállítás
let context = '';
for await (const result of results.results) {
context += `[Forrás: ${result.document.sourceUrl}]
${result.document.content}
`;
}
const response = await openaiClient.getChatCompletions(
process.env.OPENAI_CHAT_DEPLOYMENT,
[
{ role: 'system', content: `Válaszolj az alábbi dokumentumok alapján. Minden állítást jelölj meg forrással.
${context}` },
{ role: 'user', content: userQuery }
]
);
return response.choices[0].message.content;
}
- Smoke test és debug tippek
Lokális futtatáshoz: node index.js után tesztelj néhány ismert kérdéssel, amelyekre tudod a helyes választ. A leggyakoribb hibák:
- 401 Unauthorized: ellenőrizd az app registration jogosultságait (
Sites.Read.AllésFiles.Read.Allszükséges). - 429 Too Many Requests: adj hozzá exponenciális backoff-ot a Graph-hívásokhoz.
- Üres retrieval eredmény: ellenőrizd a permission-szűrőt; ha a
allowedGroupsmező üres a chunkban, a szűrő kizárja. - Irreleváns válasz: a chunking méretét csökkentsd, és ellenőrizd, hogy a section heading lineage benne van-e a chunk szövegében.
Mik a következő lépések a pilot után?
Három azonnali teendő, amellyel a legtöbb csapat el tudja indítani a pilotot:
- Scope definiálása: válassz egy SharePoint webhelyet, ahol a tartalom jól körülhatárolt és a felhasználói igény egyértelmű. Egy HR-tudásbázis vagy egy projekt-dokumentumtár jó kiindulópont.
- Pilot beállítása: az ingestion pipeline és a permission-modell felállítása az első két hét feladata; a chunking-stratégia finomhangolása a harmadik–negyedik héten kezdődik.
- Mérés és iteráció: a groundedness és a felhasználói elégedettség mérése után döntsd el, hogy a chunking, a retrieval tuning vagy a permission-modell szorul-e javításra, mielőtt skálázol.
Ha a governance, az üzemeltetés vagy a skálázás kérdései merülnek fel, érdemes konzultációt kérni: a jogosultsági modell és a GDPR-megfelelőség azok a területek, ahol egy külső szem a legtöbb értéket adja. Kezdj kicsiben, és ne próbálj egyszerre több SharePoint-webhelyet integrálni: a chunking és a jogosultságok finomhangolása webhelyenként eltérő lehet.
Fő tanulságok
A SharePoint RAG pipeline sikerének alapja az ingestion és a retrieval réteg gondos tervezése, mert a modell könnyen cserélhető, de egy rosszul épített pipeline nem.
| Pont | Részletek |
|---|---|
| Indulj webhelyszinten | Egy webhely, 500–2 000 dokumentum, egy felhasználói csoport: ez adja a leggyorsabb, kockázatmentes pilotot. |
| Permission-modell az első naptól | Az Azure AD csoportazonosítókat az ingestion során rendeld a chunkokhoz, ne utólag. |
| Chunking fontosabb, mint a modell | Az 1 000–1 500 tokenes, fejezet-alapú chunking és a tartalom-hash deduplikáció a retrieval relevancia alapja. |
| Mérj, mielőtt skálázol | Groundedness, retrieval latencia és felhasználói elégedettség: ezek döntik el, hogy érdemes-e kiterjeszteni a rendszert. |
| Stratify a pilot tervezésétől a termelésig | Stratify a pilot tervezésétől az ingestion-implementáción és a compliance-tanácsadáson át a skálázási tervekig végigkíséri a bevezetést. |
Amit a legtöbb implementáció elsőre elront
A SharePoint RAG bevezetéseknél visszatérően ugyanazok a hibák okozzák a legtöbb problémát, és ezek szinte soha nem a modellel kapcsolatosak.
A leggyakoribb csapda a jogosultsági rések figyelmen kívül hagyása. Fejlesztői környezetben, ahol mindenki adminisztrátor, a permission-szűrő hibátlanul működik. Éles környezetben, ahol a felhasználók különböző csoportokhoz tartoznak és a SharePoint-könyvtárak jogosultságai öröklődnek, a rések csak akkor derülnek ki, amikor egy felhasználó olyan információhoz fér hozzá, amelyhez nem kellene. Ez nem technikai hiba, hanem tervezési hiányosság: a permission-modellt az ingestion fázisban kell felépíteni, nem utólag hozzáadni.
A második visszatérő hiba a túl korai modelloptimalizáció. Sok csapat az első gyenge eredmények után azonnal modellt vált vagy finomhangolja a promptot, miközben a valódi probléma a chunking vagy a metaadatok hiánya. Egy egyszerű teszt: ha a releváns chunk benne van az indexben, de a retrieval nem adja vissza, a keresési súlyok vagy a szűrők a hibásak. Ha a chunk nincs benne, a chunking-stratégia szorul javításra.
A harmadik hiba a hiányzó monitoring. Egy SharePoint RAG rendszer nem statikus: a dokumentumok változnak, a jogosultságok módosulnak, és a felhasználói kérdések idővel eltolódnak. Monitoring nélkül a minőségromlás észrevétlen marad, amíg valaki panaszt nem tesz. Érdemes már a pilot fázisban bevezetni egy egyszerű visszajelzési mechanizmust (pl. „hasznos volt ez a válasz?“ gomb), és a lekérdezési logokat rendszeresen átnézni.
Magyarországi környezetben egy operatív szempont különösen fontos: a security és a legal csapat bevonása nem a projekt végén, hanem az architektúra tervezésekor szükséges. A GDPR-megfelelőség és a belső adatvédelmi szabályzatok utólagos beillesztése drágább és kockázatosabb, mint az előzetes tervezés.
Hogyan segít Stratify a SharePoint RAG bevezetésében?
A SharePoint RAG pipeline felépítése technikailag megoldható belső erőforrásokkal is, de a jogosultságkezelés, a GDPR-megfelelőség és a skálázási terv azok a területek, ahol a tapasztalat valódi időt és kockázatot takarít meg.
Stratify a pilot tervezésétől a termelésbe vitelig végigkíséri a bevezetést: ingestion és chunking implementáció, permission-aware retrieval megvalósítás, compliance-tanácsadás és mérésekkel alátámasztott skálázási terv. A megközelítés nem eszközcentrikus: először a vállalat konkrét dokumentumkezelési kihívásait és jogosultsági modelljét térképezzük fel, majd erre építjük a pipeline-t. Az AI compliance és governance integrált részét képezi minden megbízásnak, nem utólagos pótlás.
Az első lépés egy konzultáció vagy AI workshop, ahol a scope, a pilot dokumentumkör és a jogosultsági modell körvonalazódik. Ha már van konkrét elképzelés, közvetlenül árajánlatot is kérhetsz.
Ajánlott források és hivatalos dokumentáció
- SharePoint indexelt tudásbázis létrehozása (Microsoft Learn)
- Távoli SharePoint tudásbázis létrehozása (Microsoft Learn HU)
- Agentic retrieval áttekintés és includeReferenceSourceData beállítás (Microsoft Learn)
- Dokumentum-szintű hozzáférés az Azure AI Search-ben (Microsoft Learn)
- SharePoint RAG engedélyezése Logic Apps munkafolyamatokkal (Microsoft Tech Community)
- SharePoint dokumentum-szintű jogosultságok propagálása AI rendszerekbe (Microsoft ISE Dev Blog)
- Azure GPT-RAG SharePoint connector dokumentáció

