Tworzenie systemu pytań i odpowiedzi RAG od początku do końca
Łańcuch RetrievalQA, własne prompty, przypisywanie źródeł, ocena RAG za pomocą RAGAS.
Tworzenie systemu pytań i odpowiedzi RAG od początku do końca to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Czym jest RAG?
Retrieval-Augmented Generation opiera LLM na Państwa własnych danych. W momencie zadawania pytania wyszukiwane są odpowiednie fragmenty w magazynie wektorowym i wstawiane do promptu, dzięki czemu model odpowiada na podstawie faktów, zamiast zgadywać.
Przepływ RAG
Każde zapytanie RAG składa się z czterech kroków: (1) utworzenie embeddingu pytania, (2) wyszukanie podobnych fragmentów, (3) wstawienie ich do promptu jako kontekstu, (4) wygenerowanie przez LLM odpowiedzi opartej na tym kontekście.
Przekształcanie magazynu w retriever
Magazyn wektorowy można przekształcić w retriever za pomocą as_retriever. Słownik search_kwargs steruje wyszukiwaniem, a najważniejszym parametrem jest k, czyli liczba fragmentów pobieranych dla każdego pytania.
retriever = db.as_retriever(
search_kwargs={"k": 4}
)Dostosowywanie search_kwargs
search_kwargs może również ustawiać próg wyniku lub opcje MMR. Należy zacząć od k=4; wartość należy zwiększyć, jeśli w odpowiedziach brakuje kontekstu, albo zmniejszyć, aby ograniczyć koszt tokenów i ilość szumu.
retriever = db.as_retriever(
search_type="similarity_score_threshold",
search_kwargs={"k": 6, "score_threshold": 0.5}
)Łańcuch RetrievalQA
Łańcuch RetrievalQA łączy wyszukiwanie i generowanie. Należy utworzyć go za pomocą from_chain_type, przekazując własne llm i retriever. Jedno wywołanie wystarczy teraz, aby odpowiadać na pytania na podstawie dokumentów.
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o"),
retriever=retriever
)chain_type: sposób łączenia kontekstu
Parametr chain_type określa sposób wstawiania wyszukanych fragmentów do promptu. Wartość "stuff" (domyślna) umieszcza wszystkie fragmenty w jednym prompcie. Jest to proste rozwiązanie i najlepszy wybór, gdy fragmenty mieszczą się w oknie kontekstu. Inne typy, takie jak "map_reduce", obsługują wiele dużych fragmentów.
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever
)Zadawanie pytania
Łańcuch uruchamia się za pomocą invoke, przekazując pytanie pod kluczem query. Łańcuch wyszukuje odpowiednie fragmenty, tworzy prompt i zwraca odpowiedź opartą na kontekście.
response = qa.invoke({"query": "What is the refund window?"})
print(response["result"])Zwracanie dokumentów źródłowych
Ustawienie return_source_documents=True pozwala uzyskać fragmenty użyte do utworzenia odpowiedzi. Umożliwia to dodawanie cytowań i pozwala użytkownikom sprawdzać źródło każdego faktu, co ma kluczowe znaczenie dla zaufania.
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True
)
resp = qa.invoke({"query": "Refund window?"})
for d in resp["source_documents"]:
print(d.metadata)Dlaczego oceniać RAG?
RAG może zawodzić na dwa sposoby: moduł wyszukiwania pobiera niewłaściwe fragmenty albo moduł generowania halucynuje mimo poprawnych fragmentów. Potrzebują Państwo metryk, aby wiedzieć, którą część należy poprawić. Ręczne przeglądanie odpowiedzi nie skaluje się.
Metryki RAGAS
RAGAS to biblioteka oceniająca jakość systemów RAG. Najważniejsze metryki to: faithfulness (odpowiedź jest poparta kontekstem), answer_relevancy (odpowiedź odnosi się do pytania) oraz context_precision (wyszukane fragmenty są trafne).
pip install ragas
from ragas.metrics import faithfulness, answer_relevancy, context_precisionUruchamianie oceny
Należy utworzyć zbiór danych zawierający pytania, wygenerowane odpowiedzi, pobrane konteksty oraz odpowiedzi referencyjne, a następnie wywołać evaluate. Wyniki pokazują, czy należy poprawić dzielenie na fragmenty, parametr k wyszukiwania czy prompt.
from ragas import evaluate
result = evaluate(
dataset,
metrics=[faithfulness, answer_relevancy, context_precision]
)
print(result)Szybki test
Sprawdźcie Państwo swoją wiedzę na temat RAG.
Podsumowanie: kompleksowy system RAG
Zbudowali Państwo kompletny potok RAG: db.as_retriever wraz z search_kwargs, łańcuch RetrievalQA.from_chain_type oparty na Państwa llm i retrieverze oraz return_source_documents=True na potrzeby cytowań. Nauczyli się Państwo również mierzyć jakość za pomocą metryk RAGAS, takich jak faithfulness i context precision.
Często zadawane pytania
Czy lekcja „Tworzenie systemu pytań i odpowiedzi RAG od początku do końca” jest bezpłatna?
Tak — pełny tekst „Tworzenie systemu pytań i odpowiedzi RAG od początku do końca” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Tworzenie systemu pytań i odpowiedzi RAG od początku do końca”?
Łańcuch RetrievalQA, własne prompty, przypisywanie źródeł, ocena RAG za pomocą RAGAS. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Tworzenie systemu pytań i odpowiedzi RAG od początku do końca”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Architektura LangChain i LCEL
- Wczytywanie, dzielenie i osadzanie dokumentów
- Bazy wektorowe: Chroma i FAISS
- Tworzenie systemu pytań i odpowiedzi RAG od początku do końca