20 lutego, 2025

„Jak Stworzyć Inteligentnego Korepetytora z Wykorzystaniem Bazy Danych Wektorowych i Groq: Przewodnik po Metodzie RAG Krok po Kroku”

Aktualne trendy w implementacji sztucznej inteligencji

Obecnie w świecie sztucznej inteligencji (AI) dominują trzy kluczowe tematy: modele języka naturalnego (LLMs), systemy RAG (Retrieval-Augmented Generation) oraz bazy danych. Te zaawansowane technologie umożliwiają tworzenie systemów dostosowanych do specyficznych potrzeb, co znajduje zastosowanie w różnych branżach. Dzięki połączeniu baz danych opartych na wektorach z generowaniem odpowiedzi przez AI, możliwe jest tworzenie rozwiązań, które rewolucjonizują sposób, w jaki firmy i instytucje funkcjonują.

Zastosowania AI w różnych sektorach

Systemy napędzane AI mają szerokie zastosowanie w wielu dziedzinach. W obsłudze klienta chatboty AI dynamicznie wyszukują odpowiedzi z baz wiedzy, co zwiększa efektywność i szybkość rozwiązywania problemów. W sektorach prawnych i finansowych AI wspiera analizę dokumentów, streszczenie spraw oraz badania przypadków. Asystenci medyczni oparte na AI wspierają lekarzy w przeprowadzaniu badań, analizie interakcji leków i poszukiwaniu informacji o chorobach. Platformy e-learningowe wykorzystują AI do tworzenia spersonalizowanych szkoleń korporacyjnych, a dziennikarstwo korzysta z AI do sprawdzania faktów i tworzenia streszczeń wiadomości. W branży IT AI wspomaga programistów w pisaniu kodu i debugowaniu, a w badaniach naukowych przyspiesza przegląd literatury. Dzięki temu podejściu można nie tylko usprawnić procesy wyszukiwania wiedzy, ale również zautomatyzować tworzenie treści oraz personalizować interakcje z użytkownikami.

Tworzenie interaktywnego nauczyciela języka angielskiego z wykorzystaniem RAG

Jednym z interesujących zastosowań RAG jest stworzenie interaktywnego nauczyciela języka angielskiego. System taki integruje bazę danych wektorowych (ChromaDB) do przechowywania materiałów edukacyjnych oraz API AI (Groq) do generowania interaktywnych lekcji. Proces obejmuje takie etapy jak: ekstrakcja tekstu z plików PDF, przechowywanie wiedzy w bazie danych, dynamiczne wyszukiwanie odpowiednich treści oraz generowanie szczegółowych lekcji AI.

Krok 1: Instalacja wymaganych bibliotek

Aby rozpocząć pracę, należy zainstalować następujące biblioteki:

python
!pip install PyPDF2
!pip install groq
!pip install chromadb
!pip install sentence-transformers
!pip install nltk
!pip install fpdf
!pip install torch

Każda z tych bibliotek pełni istotną funkcję w procesie tworzenia systemu. Na przykład, PyPDF2 pozwala na ekstrakcję tekstu z plików PDF, ChromaDB umożliwia przechowywanie i szybkie wyszukiwanie danych tekstowych, a sentence-transformers generuje wektorowe reprezentacje tekstu.

Krok 2: Pobieranie danych do tokenizacji NLP

Tokenizacja, czyli dzielenie tekstu na zdania lub słowa, jest kluczowym krokiem w przetwarzaniu języka naturalnego. Do tego celu wykorzystujemy bibliotekę nltk:

python
import nltk
nltk.download('punkt')

Krok 3: Konfiguracja katalogu danych NLTK

Aby zarządzać danymi NLP, warto utworzyć dedykowany katalog:

python
import os
working_directory = os.getcwd()
nltk_data_dir = os.path.join(working_directory, 'nltk_data')

nltk.data.path.append(nltk_data_dir)
nltk.download('punkt', download_dir=nltk_data_dir)

Krok 4: Importowanie niezbędnych bibliotek

System wymaga wielu bibliotek, które odpowiadają za różne funkcje, takie jak przetwarzanie tekstu, tworzenie wektorów czy generowanie odpowiedzi AI:

python
import os
import torch
from sentence_transformers import SentenceTransformer
import chromadb
from chromadb.utils import embedding_functions
import numpy as np
import PyPDF2
from fpdf import FPDF
from functools import lru_cache
from groq import Groq
from nltk.tokenize import sent_tokenize
import uuid
from dotenv import load_dotenv

Krok 5: Konfiguracja klucza API

Bezpieczne zarządzanie kluczami API jest kluczowe dla ochrony danych. W tym celu używamy pliku .env:

python
load_dotenv()
api_key = os.getenv('api_key')
os.environ["GROQ_API_KEY"] = api_key

Krok 6: Tworzenie klasy bazy danych wektorowych

Baza danych wektorowych jest fundamentem systemu RAG, umożliwiając przechowywanie i wyszukiwanie danych:

python
class VectorDatabase:
    def __init__(self, collection_name="english_teacher_collection"):
        self.client = chromadb.PersistentClient(path="./chroma_db")
        self.encoder = SentenceTransformer('all-MiniLM-L6-v2')
        self.embedding_function = embedding_functions.SentenceTransformerEmbeddingFunction(model_name='all-MiniLM-L6-v2')
        self.collection = self.client.get_or_create_collection(name=collection_name, embedding_function=self.embedding_function)

    def add_text(self, text, chunk_size):
        sentences = sent_tokenize(text, language="english")
        chunks = self._create_chunks(sentences, chunk_size)
        ids = [str(uuid.uuid4()) for _ in chunks]
        self.collection.add(documents=chunks, ids=ids)

    def _create_chunks(self, sentences, chunk_size):
        chunks = []
        for i in range(0, len(sentences), chunk_size):
            chunk = ' '.join(sentences[i:i+chunk_size])
            chunks.append(chunk)
        return chunks

    def retrieve(self, query, k=3):
        results = self.collection.query(query_texts=[query], n_results=k)
        return results['documents'][0]

Krok 7: Generowanie lekcji AI

Następnym krokiem jest stworzenie klasy odpowiedzialnej za generowanie lekcji języka angielskiego przy użyciu AI:

python
class GroqGenerator:
    def __init__(self, model_name='mixtral-8x7b-32768'):
        self.model_name = model_name
        self.client = Groq()

    def generate_lesson(self, topic, retrieved_content):
        prompt = f"Create an engaging English lesson about {topic}. Use the following information:n"
        prompt += "n".join(retrieved_content)
        prompt += "nLesson:"

        chat_completion = self.client.chat.completions.create(
            model=self.model_name,
            messages=[
                {"role": "system", "content": "You are an AI English teacher designed to create an elaborative and engaging lesson."},
                {"role": "user", "content": prompt}
            ],
            max_tokens=1000,
            temperature=0.7
        )
        return chat_completion.choices[0].message.content

Krok 8: Integracja bazy danych i generatora AI

Na koniec łączymy oba komponenty w jedno spójne rozwiązanie:

python
class RAGEnglishTeacher:
    def __init__(self, vector_db, generator):
        self.vector_db = vector_db
        self.generator = generator

    @lru_cache(maxsize=32)
    def teach(self, topic):
        relevant_content = self.vector_db.retrieve(topic)
        lesson = self.generator.generate_lesson(topic, relevant_content)
        return lesson

Podsumowanie

Stworzony system AI oparty na metodzie Retrieval-Augmented Generation (RAG) może dynamicznie generować lekcje języka angielskiego, korzystając z wcześniej zapisanej wiedzy. Tego typu rozwiązanie otwiera nowe możliwości w edukacji, personalizując proces nauki i oszczędzając czas na ręczne przygotowywanie materiałów. System można rozbudować, dodając nowe moduły nauczania, optymalizując bazę danych lub udoskonalając generowane odpowiedzi AI.