Mentionsy
DevTalk #130 – O RAG do Eksploracji Kodu z Łukaszem Szydło
Czy RAG faktycznie rozwiązuje problem dokumentacji, która nigdy nie jest aktualna? Jak sprawić, by LLM odpowiadał na pytania o Twój kod bez wrzucania całego repozytorium do kontekstu? I dlaczego embeddingi to nie jedyne rozwiązanie? O tym wszystkim opowie Łukasz Szydło – architekt, konsultant i trener, specjalizujący się w tematach architektury i Domain-Driven Design. Łukasz na […]
The post DevTalk #130 – O RAG do Eksploracji Kodu z Łukaszem Szydło appeared first on DevTalk.
Szukaj w treści odcinka
Dzień dobry, nazywam się Maciej Aniserowicz i zapraszam was serdecznie na kolejny odcinek podcastu DevTalk.
Personalnym jeszcze nie, ale to może następny etap w mojej karierze.
I kiedy pytamy tego LLM-a o takie proste rzeczy, weź mi wygeneruj obrazek, albo podsumuj mi jakiś film z YouTube'a, tudzież podcast, to wtedy wszystko, co potrzebujemy, wrzucimy się w ten kontekst mieści.
Zrobienie tak dużego prompta, żeby te wszystkie dane, których potrzebujemy, do tego prompta wrzucić, a następnie dać LLM-owi zadanie, weź odpowiedź mi na pytanie na podstawie tych informacji, które wrzuciłem Ci w prompt.
Trochę tak, jak robimy czasami podsumowania właśnie filmów na YouTubie czy podcastu.
Tylko, że transkrypcja, czy do takiego filmu na YouTubie, czy podcastu, to jest coś, co jeszcze nam się w tego prompta zmieści.
Jesteśmy w branży IT, a z tego co mówisz, to ten rack przydaje się, znaczy zresztą też sam z niego wielokrotnie korzystałem z tej techniki w różnych innych również zastosowaniach.
Tak, musimy go pokroić, a następnie musimy wygenerować z niego wektory, które w nomenklaturze są nazywane tak zwanymi embeddingami.
No to znaczy, że po to, żebyśmy mogli stworzyć tę bazę danych, ta baza danych to generalnie to jest taki, można powiedzieć, taki ogromny indeks, którego, tak jak zwykła baza danych, tak, odpytujemy, a następnie mówimy, ej, zwróć mi rzeczy, które są dla mnie przydatne.
A następnie w momencie, kiedy robimy zapytanie do takiej bazy wektorowej, oto znajdź mi... Jeżeli ktoś robi zapytanie, to następnie to zapytanie też jest zamieniane na embedding.
Następnie te teksty, które są z tymi podobnymi wektorami teczanki tego tekstu zostaną wyciągnięte z tej bazy danych wektorowej.
Następnie można jakby w prostej wersji od razu moglibyśmy wrzucić do kontekstu LLM-a.
W realnej wersji następuje jeszcze tak zwany re-ranking.
Dzięki temu zamiast wrzucać do LLM-a całą wielką książkę Erika Evansa, wrzucamy mu parę tylko paragrafów, które tyczą się dokładnie value objectów i niczego więcej.
Tylko, że zamiast na początku chunkować to tak, jak LLMowi się wydaje, to LLM stara właśnie się na początku znajdować encję i budować relacje, czyli stara się zbudować taki ogólny model encji i relacji pomiędzy właśnie tymi...
encjami, które znajdzie w tym tekście, a następnie podpina te konkretne embeddingi już pod konkretne encje i relacje i buduje z tego taki dwu lub trzypoziomowy graf, po którym my jesteśmy w stanie przechodzić i szukać.
Więc zamiast bazy wektorowej jesteśmy w stanie sobie użyć na przykład takiego Neo4j'a.
jako bazy grafowej i stworzyć właśnie taki graf wiedzy i zamiast pytać i generować, w sensie i zamiast, jak mamy zapytanie z naszego LLM-a, to wcześniej co robiliśmy?
Mogłaby być to swego rodzaju właśnie taka ontologia, która byłaby wykorzystana do tego, żeby następnie wokół tych encji i relacji między nimi znajdować kolejne teksty, które są związane właśnie z tymi konkretnymi encjami i z relacjami między nimi.
I zamiast robić to przy pomocy właśnie bazy wektorowej, jesteśmy to w stanie robić przy pomocy bazy grafowej.
Okej, to mówiliśmy na razie o takich zastosowaniach, można powiedzieć, że ogólnych.
Tak, to są wszystko takie dane, tylko musimy się mocno zastanowić, które dane są dla nas najistotniejsze.
Więc to, co robimy, to najczęściej bierzemy ten kod w jakimś tam języku, który jest napisany i budujemy z niego drzewo AST, czyli nasz standardowy abstract syntax tree, po to, żeby zobaczyć, jakie... żeby jakby...
Dokładnie, dla każdego pliku robimy sobie takie drzewko AST, bo to jest zawsze robione per plik, a nie per cały system.
Więc bierzemy tekst kodu, robimy z niego AST, następnie staramy się jakoś podzielić to na tyle sensownie, czyli zrobić te czanki, bo wiemy, że kod, on w ogóle właściwie nie jest językiem nieustrukturyzowanym, czyli czankowanie kodu to nie jest to samo, co czankowanie jakiegoś dokumentu, który jest napisany prozą.
A to AST pozwala nam też zobaczyć, jakie są zależności pomiędzy tymi poszczególnymi rzeczami.
No i to wrzucamy sobie do wektorowej bazy danych i następnie jesteśmy w stanie, czy nasz agent, w momencie, kiedy my mówimy, proszę, powiedz mi, w jaki sposób działa rabatowanie w mojej aplikacji,
on jest w stanie znaleźć te fragmenty kodu, które odpowiadają za rabatowanie, wrzucić je sobie do kontekstu, a następnie przeanalizować je i wypluć bardzo ładny opis, który mówi, twoje rabatowanie działa w taki sposób, być może nawet jest w stanie wygenerować jakiś diagram sekwencji, który to opisuje.
to my stwierdziliśmy, że my nie podejdziemy do niego, do tego kuder, do tekstu, który ma jakieś tam AST.
AST ma swoje ograniczenia, jest tylko w obrębie jednego pliku, więc żeby zrobić cały ten mechanizm, żeby uzyskać powiedzmy informacje na temat całego use case'u, od kontrolera, po serwis, po repozytorium, plus jeszcze jakieś elementy domenowe, no to musielibyśmy wziąć to AST w jakiś sposób i merge'ować ze sobą i tak dalej.
Czyli jak robimy to w formie tekstowej, no to konwertery do AST mamy właściwie dla każdego języka.
Czyli zamiast, jakby jak często ludzie chcieliby napisać swojemu właśnie, nie wiem, product może ownerowi, może komuś innemu, tak?
Zamiast pytać mnie tak, read the fascinating manual.
Niekoniecznie osoba z innego działu, to może być też nowa osoba w zespole, czyli onboarding może być o wiele łatwiejszy, ponieważ zamiast poświęcać dwa tygodnie na przechodzenie wspólnie po kodzie i siedzenie w tym ID,
Kto to mówi, cytat tej osoby, a następnie jeszcze link do platformy ze znacznikiem czasowym, kiedy to dokładnie jest mówione.
Ostatnie odcinki
-
DevTalk #137 – O Wypaleniu w IT z Olą Kunysz
02.02.2026 13:40
-
DevTalk #136 – O Testach Kontraktowych z Łukasz...
19.01.2026 17:29
-
DevTalk #135 – O Architekturze Ewolucyjnej z Ma...
12.01.2026 15:50
-
DevTalk #134 – O DevOps 2025 z Piotrem Zimochem
29.12.2025 14:31
-
DevTalk #133 – O Długu Technologicznym z Oskare...
24.11.2025 12:50
-
DevTalk #132 – O Startupach przy Rewolucji AI z...
10.11.2025 13:49
-
DevTalk #131 – O Przewadze w Świecie LLM-ów z T...
30.10.2025 13:10
-
DevTalk #130 – O RAG do Eksploracji Kodu z Łuka...
27.10.2025 16:36
-
DevTalk #129 – O Programowaniu z AI z Tomaszem ...
13.10.2025 11:37
-
DevTalk #128 – O Roli Lidera i Wyzwaniach Ery A...
29.09.2025 10:13