Natrag na Blog
Blog

Izgradnja vašeg prvog RAG sustava: Kako učiniti AI pametnim za vašu tvrtku

Aug 17, 2025·7 min read·Shranya Mahna
#AI knowledge base#business AI#contextual AI#RAG system#retrieval augmented generation
Izgradnja vašeg prvog RAG sustava: Kako učiniti AI pametnim za vašu tvrtku

2. dio od 5: Pronalaženje s povećanjem (RAG)

Dobrodošli nazad! Danas se udubljujemo u RAG sustave — jedan od najpraktičnijih načina da učinite AI korisnim za svoje specifične poslovne potrebe.

Što točno je RAG?

Objasniću vam RAG s jednostavnom analogijom. Zamislite da pišete ispit sa otvorenim knjigama. Umjesto da se oslanjate samo na ono što ste zapamtili, možete pogledati informacije u udžbenicima kako biste dali bolje, točnije odgovore. To je u osnovi ono što RAG čini za AI modele.

RAG = AI Model + Vaša Prilagođena Baza Znanja

AI model pruža "inteligenciju" da razumije pitanja i generiše odgovore slične ljudskim, dok vaša baza znanja pruža specifične, ažurirane informacije o vašem poslovanju.

Zašto Bi Vam RAG Bio Važan?

Evo činjenice o velikim jezičnim modelima kao što je ChatGPT — oni su nevjerojatno pametni, ali ne znaju ništa o vašem specifičnom poslovanju. Ne mogu obavijestiti kupce o vašim najnovijim značajkama proizvoda, vašim poslovnim politikama ili odgovoriti na pitanja koristeći vašu internu dokumentaciju.

RAG rješava ovo:

  • Čineći AI odgovore preciznijima i relevantnijima za vaše poslovanje
  • Održavajući informacije ažuriranima (samo ažurirajte svoje dokumente, nema potrebe za retrainingom)
  • Pružajući transparentnost (možete vidjeti koje je dokumente AI koristio za odgovor)
  • Budući ekonomičan (mnogo jeftiniji od fine-tuninga velikih modela)

Gradimo Jedan Zajedno

Pokazat ću vam kako graditi RAG sustav koristeći Googleov Gemini AI. Kreirat ćemo sustav koji može odgovoriti na pitanja o "MyNextDeveloper". Evo korak-po-korak procesa:

Korak 1: Instalirajte Potrebne Alate

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

Ove biblioteke će obaviti teške poslove za nas:

  • google-generativeai: Pristup Googleovim Gemini modelima
  • langchain-google-genai: Gemini integracija s LangChain-om
  • LangChain: Okvir za gradnju AI aplikacija
  • FAISS: Brza pretraga sličnosti (pronalaženje relevantnih dokumenata)

Korak 2: Postavite Google AI API

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)

Trebat ćete dobiti besplatan API ključ iz Google AI Studio-a i dodati ga u vašu okolinu.

Korak 3: Pripremite Vašu Bazu Znanja

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.

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

U stvarnoj aplikaciji, ovo bi bila vaša dokumentacija proizvoda, FAQ, poslovne politike ili bilo koja tekstualna informacija o vašem poslovanju.

Korak 4: Podijelite Informacije na Dijelove

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.")

Zašto dijelimo tekst? AI modeli bolje rade s manjim, fokusiranim dijelovima informacija. chunk_overlap=50 osigurava da ne izgubimo kontekst na granicama dijelova, dok add_start_index=True pomaže nam pratiti odakle su informacije došle.

Korak 5: Kreirajte Embeddings i Vector Store

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.")

Najvažniji korak. Svaki dio teksta se pretvori u "vektor" (numerička reprezentacija). Kada netko postavi pitanje, pronalazimo dijelove čiji su vektori najsličniji vektoru pitanja.

Korak 6: Postavite Sustav za Odgovaranje na Pitanja

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}

)

temperature=0.3 održava odgovore fokusirane i faktične, dok search_kwargs={"k": 3} znači da ćemo dohvatiti 3 najrelevantnije dijelove za svako pitanje.

Korak 7: Testirajte

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]}...")

Primjer Rezultata:

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.

Primijetite kako sustav ispravno odgovara na pitanja o MND-u ali ljubazno odbija odgovarati na pitanja izvan njegove baze znanja.

Google Colab

Evo Google Colab veze ovog članka koja se može pokrenuti jednim klikom: veza

Primjene u Stvarnom Svijetu

Evo nekih praktičnih načina kako možete koristiti RAG sustave:

Korisničku Podršku: Prenesite vašu FAQ, upustva za proizvode i zapise o podršci. Neka AI obradi česta pitanja 24/7.

Internu Bazu Znanja: Prenesite poslovne politike, procedure i dokumentaciju. Zaposlenici mogu postavljati pitanja na prirodnom jeziku umjesto da iščitavaju datoteke.

Asistenta za Prodaju: Prenesite specifikacije proizvoda, cijene i studije slučaja. Vaš tim za prodaju dobija trenutni pristup bilo kojoj informaciji koju trebaju tijekom poziva.

Kreiranje Sadržaja: Prenesite vaš postojeći sadržaj, članske objave i marketinške materijale. Generirajte novi sadržaj koji je konzistentan s vašim brand glasom.

Ograničenja (Budimo Pošteni)

RAG nije savršen:

  • Kvaliteta ovisi o vašim podacima: Smeće unutra, smeće vani
  • Može halucinirati: Ponekad AI može izmisliti informacije koje zvuče plauzibilno
  • Zahtijeva održavanje: Trebate čuvati vašu bazu znanja ažuriranom
  • Razmatranja troškova: Pozivi API-ja mogu se nakupiti s intenzivnom upotrebom

Ključni Stavovi Implementacije

Iz našeg primjera koji radi, evo nekih važnih tehničkih razmatranja:

Veličina Dijela Važna Je: Koristili smo 300 znakova s preplitanjem od 50 znakova. To uravnotežuje čuvanje konteksta s preciznošću pronalaženja.

Kvaliteta Embeddings-a: Googleov model embedding-001 pruža kvalitetne embedding-e opće namjene, ali možda trebate specifične embedding-e za domenu za specijalizirani sadržaj.

Strategija Pronalaženja: Parametar k=3 znači da pronalazimo 3 najrelevantnije dijelove. Možete prilagoditi ovo na osnovu vaše upotrebe.

Inženjering Upita: Naš upit eksplicitno govori AI-u da kaže "Ne znam" kada informacije nisu dostupne. Ovo sprječava halucinaciju.

Savjeti za Uspjeh

  1. Počните malom: Započnite s jednom specifičnom upotrebom umjesto da pokušate pokriti sve
  2. Čuvajte dokumente ažuriranima: Zastarjela informacija vodi do frustriranih korisnika
  3. Testirajte opsežno: Isprobajte mnoga različita pitanja kako biste razumjeli gdje vaš sustav dobro radi i gdje ne
  4. Pratite upotrebu: Pratite koja pitanja postavljaju ljudi kako biste poboljšali vašu bazu znanja
  5. Iterirajte na veličini dijelova: Eksperimentirajte s različitim veličinama dijelova i vrijednostima preplitanja za vašu specifičnu sadržaj

Što Slijedi

U našem sljedećem članku, istražit ćemo fine-tuning — uzimanje postojećeg AI modela i obuku ga specifično za vašu upotrebu. Dok RAG daje AI pristup vašim informacijama, fine-tuning zapravo mijenja način na koji AI "razmišlja" o vašoj domeni.

RAG je često najbolja početna točka jer je jednostavniji, transparentniji i lakši za održavanje. Ali ponekad trebate taj dodatni nivo prilagođavanja koji može dati samo fine-tuning.


Dolazi: Članak 3 — "Fine-Tuning LLM-a: Učenje AI-u da Govori Vašim Jezikom"