← 返回列表

AI seria pytań rekrutacyjnych 11: Jak optymalizować RAG?

Optymalizacja RAG nie polega na dostosowaniu pojedynczego elementu, ale na procesie optymalizacji pełnego łańcucha. Poniżej przedstawiam systematyczne strategie optymalizacji z czterech wymiarów: strona indeksowania danych, strona wyszukiwania, strona generowania i strona oceny, wraz z praktycznymi doświadczeniami, które można przytoczyć podczas rozmowy rekrutacyjnej.


1. Optymalizacja strony indeksowania danych (poprawa jakości „bazy wiedzy”)

To jest najczęściej pomijany, ale najbardziej skuteczny obszar.

Punkt optymalizacji Objaw problemu Konkretne działanie Wskaźnik efektu
Parsowanie dokumentów Tabele, diagramy w PDF są pomijane, tekst jest zniekształcony lub w złej kolejności. Użyj lepszych bibliotek parsujących (np. unstructured, tryb zachowania układu pypdf); dla tabel użyj pandas do ekstrakcji i konwersji na Markdown. Współczynnik odzysku (Recall) +5~15%
Rozmiar fragmentów tekstu Zbyt mały chunk traci kontekst (np. „jego przychody w tym roku wzrosły” – zaimek „jego” traci odniesienie); zbyt duży chunk powoduje szum w wyszukiwaniu. Eksperymentuj z różnymi rozmiarami chunków (256/512/768 tokenów), nakładanie overlap 10~20%; dla długich dokumentów dziel według granic semantycznych (akapity/nagłówki), a nie stałej długości. Współczynnik trafień / Wierność
Dodawanie metadanych Znaleziono odpowiedni fragment, ale nie można określić źródła ani czasu, lub potrzebne jest filtrowanie według dziedziny. Dodaj do każdego chunka metadane: source (nazwa pliku/URL), timestamp, page_num, doc_type. Podczas wyszukiwania używaj filtrów (np. doc_type == 'legal'). Dokładność filtrowania
Wybór modelu osadzania (embedding) Ogólne embeddingi słabo działają w specjalistycznych dziedzinach (medycyna, kod, prawo). Użyj modeli dostrojonych do dziedziny (BGE-large-zh, GTE-Qwen2-7B-instruct); lub dostrój własny model embeddingu (z triplet loss). MRR@10 wyszukiwania +10~20%

2. Optymalizacja strony wyszukiwania (bardziej precyzyjne „przeglądanie”)

Wyszukiwanie decyduje o jakości „materiałów referencyjnych” podawanych LLM.

Punkt optymalizacji Objaw problemu Konkretne działanie Efekt
Wyszukiwanie hybrydowe Wyszukiwanie wektorowe nie radzi sobie z precyzyjnymi terminami (np. model produktu ABC-123), wyszukiwanie słów kluczowych nie rozumie synonimów. Użyj jednocześnie wyszukiwania wektorowego (semantycznego) i BM25 (słów kluczowych), połącz przez ważenie (np. 0.7wektor + 0.3BM25) lub rerank. Współczynnik odzysku +10~25%
Ponowne szeregowanie (Rerank) Pierwsze wyniki wyszukiwania wektorowego nie zawsze są najbardziej trafne; dopiero 10. jest najlepsze. Użyj modelu cross-encoder (np. BGE-reranker-v2, Cohere Rerank) do ponownej oceny zbioru kandydatów (np. pierwszych 20) i wybrania top-K. Znaczny wzrost współczynnika trafień (szczególnie top-1)
Przepisywanie zapytania Pytanie użytkownika jest niejasne lub ma niejednoznaczne odniesienia w konwersacji („A jaka jest jego cena?”). Użyj LLM do przekształcenia oryginalnego pytania w formę bardziej odpowiednią do wyszukiwania (np. „Jaka jest cena iPhone 15?”); lub uzupełnij kontekstem z historii rozmowy. Współczynnik odzysku +5~15%
HyDE Pytanie użytkownika jest zbyt krótkie lub abstrakcyjne (np. „Opowiedz o fotosyntezie”), bezpośrednie wyszukiwanie jest nieskuteczne. Najpierw pozwól LLM wygenerować hipotetyczną odpowiedź, a następnie użyj tej odpowiedzi do wyszukania dokumentów. Odpowiednie dla domen otwartych, ale nie dla precyzyjnych pytań faktograficznych
Dostosowanie liczby Top-K Zbyt małe K może pominąć kluczowe informacje; zbyt duże K zwiększa zużycie tokenów i szum. Eksperymentuj z K=3/5/10, obserwując równowagę między współczynnikiem odzysku a wiernością odpowiedzi. Kompromis między wydajnością a efektem

3. Optymalizacja strony generowania (sprawienie, by LLM dobrze wykorzystywał materiały referencyjne)

Nawet przy dobrym wyszukiwaniu, jeśli prompt jest zły lub model słaby, efekt będzie marny.

Punkt optymalizacji Objaw problemu Konkretne działanie Efekt
Inżynieria promptów LLM ignoruje znalezione treści lub zmyśla. Wyraźne polecenie: „Odpowiadaj wyłącznie na podstawie poniższych materiałów referencyjnych. Jeśli materiały są niewystarczające lub nieistotne, odpowiedz „Brak wystarczających informacji”. Dodaj przykłady few-shot pokazujące, jak cytować źródła. Wierność +20~40%
Kompresja kontekstu Znalezione treści są zbyt długie (przekraczają okno kontekstowe modelu) lub w większości stanowią szum. Użyj LLMLingua lub selektywnej kompresji kontekstu, aby zachować najbardziej istotne zdania, a następnie przekaż je do LLM. Zmniejsza ryzyko utraty informacji
Aktualizacja modelu LLM Mały model (7B) nie radzi sobie ze złożonym wnioskowaniem lub zapamiętaniem długiego kontekstu. Zastosuj mocniejszy model (GPT-4o, Claude 3.5 Sonnet, Qwen2.5-72B). Znaczny wzrost dokładności wnioskowania
Streaming i cytowanie Użytkownik nie może zweryfikować wiarygodności odpowiedzi. Spraw, by LLM podczas generowania wypisywał [citation:1], odpowiadający numerowi dokumentu w wynikach wyszukiwania. Dołącz na końcu link do oryginalnego źródła. Zaufanie użytkownika + możliwość debugowania
Kalibracja odmowy odpowiedzi Model zmyśla, gdy nie powinien odpowiadać, lub mówi „nie wiem”, gdy powinien. Ustaw próg podobieństwa: jeśli cosinusowe podobieństwo top-1 chunka do pytania jest poniżej 0,7, poinstruuj LLM „Materiał nie jest odpowiedni”. Zmniejszenie wskaźnika halucynacji

4. Strona oceny i iteracji (wiedza, gdzie kierować optymalizację)

Bez pomiaru nie ma optymalizacji.

Punkt optymalizacji Działanie Wskaźnik
Tworzenie zbioru ewaluacyjnego Przygotuj 100–300 rzeczywistych pytań użytkowników + wzorcowych odpowiedzi + poprawnych identyfikatorów dokumentów do wyszukania. Pokrywaj różne poziomy trudności i intencje.
Automatyczna ocena Użyj RAGAS (Faithfulness, Answer Relevance, Context Recall) lub TruLens. Trzy główne wskaźniki: wierność, trafność odpowiedzi, odzysk kontekstu.
Ocena ręczna Co tydzień losowo testuj 20 przypadków problematycznych (bad case), analizując typ błędu (nieudane wyszukiwanie / błąd generowania / brak w bazie wiedzy). Ustalanie priorytetów usprawnień.
Testy A/B W środowisku produkcyjnym testuj na różnych grupach użytkowników różne strategie wyszukiwania (np. BM25 vs wyszukiwanie hybrydowe). Wskaźniki online: zadowolenie użytkowników, odsetek braku odpowiedzi.

5. „Praktyczne doświadczenia” do przytoczenia podczas rozmowy (punkty dodatnie)

„W projekcie RAG, nad którym pracowałem, początkowy współczynnik trafień wynosił 67%. Zrobiłem trzy rzeczy:
1. Zmieniłem podział ze stałego 1024 na dynamiczny podział semantyczny (według nagłówków i akapitów), co podniosło trafność do 74%;
2. Wprowadziłem wyszukiwanie hybrydowe (wektorowe + BM25) oraz mały model rerank, co podniosło trafność do 83%;
3. Zoptymalizowałem prompt i wymusiłem odpowiedź [Nie znaleziono odpowiednich informacji], dzięki czemu wskaźnik halucynacji spadł z 22% do poniżej 5%.

Dodatkowo, zbudowaliśmy ciągły potok ewaluacyjny – przed każdą zmianą uruchamialiśmy punktację RAGAS na 200 pytaniach, aby upewnić się, że nie ma regresji.”


Podsumowanie: Pełna mapa drogowa optymalizacji RAG

Warstwa danych ─→ Czyszczenie dokumentów, optymalizacja podziału, wzbogacanie metadanych, domenowe osadzanie (embedding)
Warstwa wyszukiwania ─→ Wyszukiwanie hybrydowe, rerank, przepisywanie zapytania, HyDE, dostosowanie Top-K
Warstwa generowania ─→ Wzmocnienie promptu, wymagania co do instrukcji, kompresja, cytowanie, próg odmowy
Warstwa oceny ─→ Zbiór ewaluacyjny, RAGAS, analiza ręczna, testy A/B

评论

暂无已展示的评论。

发表评论(匿名)