Mergi direct la conținut
9 min de citit AI360

Cum să Construiești un Asistent AI Inteligent folosind RAG?

Descoperă cum să creezi un asistent AI care procesează instant documente, oferă răspunsuri precise și automatizează munca repetitivă.

Statuie clasică stilizată modern, cu ochelari și mantie, simbolizând înțelepciunea și inovația tehnologic
noEtiq / Ilustrație Midjourney

Te-ai întrebat cum poți sa personalizezi modelele de inteligență artificială pentru a răspunde precis la întrebări folosind exact informațiile de care ai nevoie?

Vrei să automatizezi răspunsurile pentru clienți și să transformi miile de documente într-o sursă de informații instant accesibilă?

În acest ghid practic, îți arăt cum să construiești un asistent AI folosind tehnica RAG (Retrieval Augmented Generation).

Ce vei învăța din acest ghid practic

✓ Ce este Retrieval Augmented Generation (RAG) și cum poate revoluționa utilizarea AI-ului?

✓ Cum să construiești un asistent AI care poate procesa și înțelege orice document sau orice tip de informație.

✓ Trei metode diferite de implementare RAG, de la soluții no-code la dezvoltare completă.

✓ Ghid pas cu pas pentru implementarea unui asistent RAG folosind Python și LangChain

✓ Exemplu practic de integrare cu platforma OpenAI și Amazon Bedrock

Use Cases pentru Business

BTW, Ce este un asistent virtual AI?

Un asistent virtual AI sau chatbot AI este un program care folosește modele LLM pentru a comunica cu tine și a-ți răspunde la întrebări. Gândește-te la ChatGPT - dar specializat pentru nevoile tale. 

De ce avem nevoie de RAG?

Problema cu modelele de limbaj standard este că au acces doar la informațiile cu care au fost antrenate inițial. RAG rezolvă această limitare deoarece permite LLM-ului să acceseze și să folosească informații din documentele tale în timp real.

Ce este Retrieval Augmented Generation (RAG)?

Pentru a personaliza un model de inteligență artificială, ai trei opțiuni principale:

  1. Fine-tuning - Reantrenezi modelul complet, dar e costisitor și complex. Necesită hardware performant și seturi mari de date.
  2. Prompt engineering - Mai simplu, dar limitat la cunoștințele modelului.
  3. RAG - Permite modelului să folosească documente externe în timp real, fără reantrenare.

RAG este soluția ideală pentru că:

Okay, bine, dar explicami ce face RAG mai exact?

Cum funcționează RAG?

Imaginează-ți RAG ca o bibliotecă modernă cu un bibliotecar AI. Iată cum funcționează:

  1. Organizarea - Bibliotecarul (RAG) transformă documentele în vectori prin embeddings. Acest format numeric este singurul pe care AI-ul îl poate înțelege și compara eficient, similar cu modul în care folosim un index pentru a găsi rapid informații într-o carte. Vezi aici, ce este inteligența artificială generativă și cum funcționează.
  2. Căutarea - Când bibliotecarul primește o întrebare de la tine prin intermediul chatbot-ului, caută instant în acest index și găsește fragmentele relevante din documente.
  3. Răspunsul - LLM-ul (modelul de limbaj) primește atât întrebarea cât și fragmentele relevante găsite de bibliotecar. E ca și cum ai avea un expert care citește exact paginile potrivite înainte să-ți răspundă, combinând informațiile găsite cu cunoștințele sale pentru a oferi un răspuns complet și contextualizat.

Vizualizarea Vectorilor în Spațiul 3D

Pentru a demonstra vizual cum funcționează o bază de date vectorială, am creat următoarea vizualizare 3D folosind câteva cărți:

0:00
/0:04

Vizualizare interactivă a vectorilor în 3D

În această reprezentare, fiecare punct este un fragment de text transformat în vector, iar distanța dintre puncte arată cât de similare sunt textele între ele. 

Când "bibliotecarul" RAG primește o întrebare, caută cei mai apropiați "vecini" în acest spațiu tridimensional pentru a găsi rapid informațiile relevante. 

În următoarea secțiune, îți voi arăta cum să implementezi acest sistem pas cu pas.

Cum să implementezi RAG în proiectul tău

Pentru a implementa RAG, ai nevoie de trei componente principale:

  1. Un model de limbaj (LLM)
    1. Poți folosi OpenAI GPT-3.5/4/5. 
    2. Anthropic Claude
    3. Sau chiar modele open source de pe HuggingFace pentru rulare locală.
  2. O bază de date vectorială
    1. Aici vei stoca vectorii rezultati din procesul de embeddings.
    2. Opțiuni populare: ChromaPinecone sau Weaviate
    3. Pentru simplitate, vom folosi Chroma pentru acest ghid.
  3. Un framework de integrare
    1. LangChain sau LlamaIndex
    2. Acestea practic gestionează tot fluxul: procesare documente → embeddings → interacțiune cu LLM.
    3. Vom folosi LangChain pentru simplitate.

Trei Modalități de Implementare RAG

În această secțiune, vom explora trei abordări pentru implementarea RAG:

  1. Implementare cu cod folosind LangChain și OpenAI
    1. Soluție completă cu control absolut asupra procesului și funcționalităților
    2. Perfectă pentru proiecte personalizate. 
  2. Implementare folosind OpenAI și Knowledge Base
    1. Soluție no-code pentru business
    2. Ideală pentru echipe non-tehnice
  3. Implementare folosind Amazon Bedrock
    1. Soluție enterprise
    2. Perfectă pentru companii care au nevoie de securitate și scalabilitate maximă.

Hai să explorăm fiecare opțiune în detaliu.

Opțiunea 1: Implementare cu LangChain și OpenAI

În această secțiune vom construi un asistent AI care poate înțelege și răspunde la întrebări despre orice argument. Vom folosi API-ul OpenAI pentru model și LangChain pentru a gestiona procesarea documentelor și interacțiunea cu modelul. 

🗒️
Nota: Aici nu suntem neapărat legați de OpenAI. Putem folosi orice model LLM, chiar unul creat de noi. Avantajul acestei implementări este flexibilitatea totală și controlul asupra sistemului.

Hai să vedem cum ar arăta un asemenea proiect.

Funcționalități chatbot

Stack Tehnologii

Arhitectura sistemului:

Acum că am stabilit arhitectura, hai să trecem la implementarea efectivă.

Implementare

🗒️
Nota: Recomand PyCharm sau VSCode ca IDE pentru development. Ambele au suport excelent pentru Python și gestionarea pachetelor.

1. Instalare librării necesare

Mai întâi, instalează câteva librării Python:

pip install langchain langchain_openai langchain_community langchain_chroma openai  tiktoken unstructured 

2. Setarea API key pentru OpenAI

Pentru a folosi GPT-4.0, ai nevoie de un API key de la OpenAI:

  1. Creează un cont pe platform.openai.com
  2. Accesează secțiunea API keys.
  3. Generează un nou secret secret key
  4. Salvează-l în constants.py
OPENAI_API_KEY="sk-proj-xxxxxxxxx"

3. Structura Proiectului și Organizarea Fișierelor

Pentru a menține proiectul organizat și ușor de gestionat, vom folosi următoarea structură:

rag_project/
├── constants.py     # Configurări și API key
├── documents/       # Documente sursă
│   ├── sample.pdf
│   └── sample.txt
├── vectordb/       # Baza de date vectorială
└── chatbot.py      # Codul principal

4. Implementarea Codului

În chatbot.py, vom implementa întregul chatbot. Îți las aici un exemplu pentru a construi propriul sistem RAG:

import os
import sys

from langchain.chains import ConversationalRetrievalChain, RetrievalQA
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.document_loaders import DirectoryLoader, TextLoader, PyPDFLoader
from langchain.indexes import VectorstoreIndexCreator

import constants as constants

os.environ["OPENAI_API_KEY"] = constants.OPENAI_API_KEY

query = sys.argv[1] if len(sys.argv) > 1 else None

loader = DirectoryLoader("documents/", glob="*.txt")
index_creator_kwargs = {"embedding": OpenAIEmbeddings()}
index = VectorstoreIndexCreator(**index_creator_kwargs).from_loaders([loader])

chain = ConversationalRetrievalChain.from_llm(
    llm=ChatOpenAI(model="gpt-4o"),
    retriever=index.vectorstore.as_retriever(search_kwargs={"k": 1}),
)

chat_history = []
while True:
    query = query or input("Prompt: ")
    if query.lower() in ['quit', 'ieși']:
        sys.exit()

    result = chain.invoke({"question": query, "chat_history": chat_history})
    print(result['answer'])

    chat_history.append((query, result['answer']))
    query = None

Ce face acest cod:

5. Rularea chatbot-ului

Avantaje Opțiune#1:

Dezavantaje Opțiune#1:

Opțiunea 2: Implementare pe platforma OpenAI

Dacă nu vrei să scrii cod, poți crea un asistent virtual pe platforma OpenAI. E ca și cum ți-ai face propriul ChatGPT care cunoaște documentele și informațiile tale. 

Hai sa vedem cum:

Crearea Vector Store-ului

    • Accesează platform.openai.com/storage/vector_stores
    • Creează un nou vector store, de exemplu "DocumentațieTehnică".
    • Încarcă documentele tale în PDF, TXT, sau DOCX.
    • OpenAI va procesa și indexa automat documentele.

Crearea unui Asistent

    • După ce ai creat vector store-ul, găsești butonul "Create assistant" în colțul din dreapta jos.
    • Click pe acest buton pentru a crea direct un asistent asociat cu vector store-ul tău.
    • Opțional, poți configura instrucțiunile pentru asistent pentru a-i personaliza comportamentul. Îl găsești aici la platform.openai.com/assistants
🗒️
Nota: recomandarea mea este sa foloșeti un promt pentru a personaliza comportamentul asistentului, dealtfel de default se va comporta ca un ChatGPT normal.

Crearea unui Proiect

Util pentru teamwork daca trebuie sa il folosească mai multe persoane.

  1. Accesează platform.openai.com/projects
  2. Creează un nou proiect, apoi atașează vector store-ul creat anterior, împreună cu un asistent specific pentru acest proiect.
  3. Definește instrucțiunile pentru asistent și personalizează setările de comunicare pentru nevoile specifice. 
  4. Publică proiectul și invită membrii echipei pentru a avea acces la aceeași bază de cunoștințe.
🗒️
Nota: Poti crea eventual un proiect separat pentru fiecare tip de documentație sau caz de utilizare. Acest lucru ajută la organizarea și gestionarea mai eficientă a resurselor.

Avantaje Opțiune #2:

Dezavantaje Opțiune #2:

Opțiunea 3: Implementare cu Amazon Bedrock

Amazon Bedrock oferă o platformă enterprise pentru RAG:

  1. Va trebui sa creezi un cont AWS.
  2. Alege modelul preferat (Claude, Llama2, etc.).
  3. Folosește serviciile integrate:
    • Amazon Kendra pentru indexare
    • Vector embeddings
    • API-uri REST pentru integrare

Avantaje Opțiune #3:

Dezavantaje Opțiune #3:

Resurse Utile 

Îți las aici o serie de resurse și link-uri care te pot ajuta să aprofundezi și să extinzi utilizarea RAG în crearea chatboților.

Tutoriale și Documentație

Documente de Cercetare

Concluzie

Acest exemplu de chatbot RAG este doar începutul. Pornind de la această bază, poți:

Posibilitățile sunt practic nelimitate. Recomandarea mea finală este să începi cu opțiunea care se potrivește cel mai bine nevoilor și resurselor tale actuale.

Iar dacă ai implementat deja RAG folosind una din metodele prezentate, sunt curios să aflu:

Dar nu te limita doar la asta - orice întrebare, sugestie sau experiență legată de inteligența artificială și automatizare este binevenită în comentarii.