Terug naar Blog
Blog

Uw eerste RAG-systeem bouwen: AI slim maken over uw bedrijf

Aug 17, 2025·7 min read·Shranya Mahna
#AI knowledge base#business AI#contextual AI#RAG system#retrieval augmented generation
Uw eerste RAG-systeem bouwen: AI slim maken over uw bedrijf

Deel 2 van 5: Retrieval-Augmented Generation

Welkom terug! Vandaag duiken we in RAG-systemen — een van de meest praktische manieren om AI nuttig te maken voor uw specifieke zakelijke behoeften.

Wat is RAG precies?

Laat me RAG uitleggen met een simpele vergelijking. Stel je voor dat je een openboekexamen doet. In plaats van je alleen te verlaten op wat je hebt onthouden, kun je informatie opzoeken in je leerboeken om betere, nauwkeurigere antwoorden te geven. Dat is eigenlijk wat RAG doet voor AI-modellen.

RAG = AI-model + uw aangepaste kennisbank

Het AI-model levert de "intelligentie" om vragen te begrijpen en menselijke reacties te genereren, terwijl uw kennisbank de specifieke, actuele informatie over uw bedrijf levert.

Waarom zou u om RAG geven?

Hier is het ding met grote taalmodellen zoals ChatGPT — ze zijn ongelooflijk slim, maar ze weten niets over uw specifieke bedrijf. Ze kunnen klanten niet vertellen over uw nieuwste productfuncties, uw bedrijfsbeleid, of vragen beantwoorden met behulp van uw interne documentatie.

RAG lost dit op door:

  • AI-antwoorden nauwkeuriger en relevanter te maken voor uw bedrijf
  • Informatie actueel te houden (update gewoon uw documenten, geen hertraining nodig)
  • Transparantie te bieden (u kunt zien welke documenten de AI gebruikte om te antwoorden)
  • Kosteneffectief te zijn (veel goedkoper dan fine-tuning van grote modellen)

Laten we er samen een bouwen

Ik zal je laten zien hoe je een RAG-systeem bouwt met Google's Gemini AI. We zullen een systeem maken dat vragen kan beantwoorden over "MyNextDeveloper". Hier is het stap-voor-stap proces:

Stap 1: Installeer de vereiste tools

!pip install -q -U google-generativeai langchain-google-genai langchain faiss-cpu pypdf langchain-community

Deze bibliotheken zullen het zware werk voor ons doen:

  • google-generativeai: Toegang tot Google's Gemini-modellen
  • langchain-google-genai: Gemini-integratie met LangChain
  • LangChain: Framework voor het bouwen van AI-toepassingen
  • FAISS: Snelle gelijkeniszoeking (relevante documenten vinden)

Stap 2: Stel Google AI API in

import os

from google.colab import userdata

import google.generativeai as genai
GOOGLE_API_KEY = userdata.get('GOOGLE_API_KEY') genai.configure(api_key=GOOGLE_API_KEY)

U moet een gratis API-sleutel krijgen van Google AI Studio en deze aan uw omgeving toevoegen.

Stap 3: Bereid uw kennisbank voor

raw_text = """

MyNextDeveloper (MND) is a remote-first tech company founded in 2022 in Mumbai. They focus on supplying pre-vetted, highly skilled developers to startups. Their mission is to solve the trust gap between startups and engineers by emphasizing empathy, communication, and transparency.The company promotes agile practices, test-driven development, and POSH-compliant culture. MND offers services like staff augmentation, API and web development, UI/UX design, and AI/ML solutions. Their tech stack includes Angular, React, Next.js, Node.js, Django, Python, Docker, and AWS.

Clients appreciate their transparency and delivery quality. Project pricing starts at $10,000 with hourly rates between $25 and $49. MND claims startups can save up to 30% through their freelance model.

They operate globally, serving startups, Y Combinator and Techstars alumni. It is headquartered in Malabar Hill, Mumbai.

"""
# Converteer naar LangChain-document from langchain_core.documents import Document documents = [Document(page_content=raw_text)] print(f"Loaded {len(documents)} document(s).")

In een echte toepassing zou dit uw productdocumentatie, veelgestelde vragen, bedrijfsbeleid of alle tekstgebaseerde informatie over uw bedrijf zijn.

Stap 4: Verdeel de informatie in brokken

from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(

chunk_size=300,

chunk_overlap=50,

length_function=len,

add_start_index=True,

)
chunks = text_splitter.split_documents(documents)

print(f"Split into {len(chunks)} chunks.")

Waarom splitsen we de tekst? AI-modellen werken beter met kleinere, gerichte stukken informatie. De chunk_overlap=50 zorgt ervoor dat we geen context verliezen bij brokkelen grenzen, terwijl add_start_index=True ons helpt bij te houden waar informatie vandaan komt.

Stap 5: Maak inbeddingen en vectoropslag

from langchain_google_genai import GoogleGenerativeAIEmbeddings

from langchain_community.vectorstores import FAISS
embeddings = GoogleGenerativeAIEmbeddings(

model="models/embedding-001",

google_api_key=GOOGLE_API_KEY

)
print("Creating FAISS vector store...")

vector_store = FAISS.from_documents(chunks, embeddings)

print("FAISS vector store created.")

De belangrijkste stap. Elk stuk tekst wordt omgezet in een "vector" (numerieke representatie). Als iemand een vraag stelt, vinden we de brokken met vectoren die het meest lijken op de vector van de vraag.

Stap 6: Stel het vraag-antwoord-systeem in

from langchain_google_genai import ChatGoogleGenerativeAI

from langchain.chains import RetrievalQA

from langchain_core.prompts import PromptTemplate
retriever = vector_store.as_retriever(search_kwargs={"k": 3})
llm = ChatGoogleGenerativeAI(

model="gemini-1.5-flash",

temperature=0.3,

google_api_key=GOOGLE_API_KEY

)
prompt_template = """

You are an AI assistant that answers questions based on the provided context.

If the answer is not available in the context, politely state that you don't know.
Context:

{context}
Question:

{question}
Answer:

"""

RAG_PROMPT = PromptTemplate.from_template(prompt_template)
qa_chain = RetrievalQA.from_chain_type(

llm=llm,

chain_type="stuff",

retriever=retriever,

return_source_documents=True,

chain_type_kwargs={"prompt": RAG_PROMPT}

)

De temperature=0.3 houdt antwoorden gericht en feitelijk, terwijl search_kwargs={"k": 3} betekent dat we de 3 meest relevante brokken voor elke vraag ophalen.

Stap 7: Test het

questions = [

"What does MyNextDeveloper (MND) do?",

"Where is MND headquartered?",

"What services does MND offer?",

"What technologies does MND use?",

"How does MND help startups save money?",

"What is the capital of France?"  # This should trigger "I don't know"

]
for i, question in enumerate(questions):

print(f"nQuestion {i+1}: {question}")

response = qa_chain.invoke({"query": question})

print(f"Answer: {response['result']}")

if 'source_documents' in response:

print("Source Documents:")

for doc in response['source_documents']:

print(f"- Content (truncated): {doc.page_content[:150]}...")

Voorbeelduitvoer:

Question 1: What does MyNextDeveloper (MND) do?

Answer: MyNextDeveloper (MND) is a remote-first tech company that supplies pre-vetted, highly skilled developers to startups. They offer services such as staff augmentation, API and web development, UI/UX design, and AI/ML solutions. Their goal is to bridge the trust gap between startups and engineers through empathy, communication, and transparency.
Question 6: What is the capital of France?

Answer: I'm sorry, but I don't know the capital of France. The provided text is about a company called MND and doesn't contain information about France's capital.

Merk op hoe het systeem correct vragen over MND beantwoordt maar beleefd weigert vragen buiten zijn kennisbank te beantwoorden.

Google Colab

Hier is de Google Colab-link van dit artikel die in één klik kan worden uitgevoerd: link

Toepassingen in de echte wereld

Hier zijn enkele praktische manieren om RAG-systemen te gebruiken:

Klantensupport: Upload uw veelgestelde vragen, producthandleidingen en ondersteuningstickets. Laat de AI veelvoorkomende vragen 24/7 afhandelen.

Interne kennisbank: Upload bedrijfsbeleid, procedures en documentatie. Werknemers kunnen vragen stellen in natuurlijke taal in plaats van door bestanden te graven.

Verkoopsassistent: Upload productspecificaties, prijzen en case studies. Uw verkoopsteam krijgt direct toegang tot alle informatie die ze nodig hebben tijdens gesprekken.

Contentcreatie: Upload uw bestaande inhoud, blogposts en marketingmaterialen. Genereer nieuwe inhoud die consistent is met uw merkstem.

De beperkingen (laten we eerlijk zijn)

RAG is niet perfect:

  • De kwaliteit hangt af van uw gegevens: Rommel erin, rommel eruit
  • Kan hallucinaties veroorzaken: Soms kan de AI informatie verzinnen die plausibel klinkt
  • Vereist onderhoud: U moet uw kennisbank actueel houden
  • Kostenoverweging: API-aanroepen kunnen oplopen bij intensief gebruik

Belangrijkste implementatie-inzichten

Uit ons werkend voorbeeld zijn hier enkele belangrijke technische overwegingen:

Brokmaat is belangrijk: We gebruikten 300 tekens met 50-tekens overlap. Dit balanceert contextbehoud met retrieval-nauwkeurigheid.

Kwaliteit van inbeddingen: Google's embedding-001-model biedt goede inbeddingen voor algemeen gebruik, maar mogelijk hebt u domeinspecifieke inbeddingen nodig voor gespecialiseerde inhoud.

Ophaalstrategie: De k=3-parameter betekent dat we de 3 meest relevante brokken ophalen. U kunt dit aanpassen op basis van uw gebruiksscenario.

Prompt-engineering: Onze prompt vertelt de AI expliciet dat ze "Ik weet het niet" moet zeggen als informatie niet beschikbaar is. Dit voorkomt hallucinatie.

Tips voor succes

  1. Begin klein: Begin met één specifiek gebruiksscenario in plaats van alles proberen te bedekken
  2. Houd documenten bijgewerkt: Verouderde informatie leidt tot gefrustreerde gebruikers
  3. Test uitgebreid: Probeer veel verschillende vragen om te begrijpen waar uw systeem goed werkt en waar niet
  4. Controleer gebruik: Houd in de gaten welke vragen mensen stellen om uw kennisbank te verbeteren
  5. Experimenteer met brokmaat: Probeer verschillende brokmaten en overlap-waarden voor uw specifieke inhoud

Wat komt volgende

In ons volgende artikel zullen we fine-tuning verkennen — een bestaand AI-model nemen en het specifiek voor uw gebruiksscenario trainen. Terwijl RAG AI toegang geeft tot uw informatie, verandert fine-tuning daadwerkelijk hoe de AI over uw domein "denkt".

RAG is vaak het beste startpunt omdat het eenvoudiger, transparanter en gemakkelijker te onderhouden is. Maar soms hebt u dat extra niveau van aanpassing nodig dat alleen fine-tuning kan bieden.


Komende: Artikel 3 — "Fine-Tuning LLMs: Teaching AI to Speak Your Language"