Strona główna / Artykuły

Graphy wiedzy typu 10-K oparte na parserze w Neo4j

Graph wiedzy typu 10-K oparty na parserze w Neo4j: uporządkowane wydobywanie danych przed użyciem modeli językowych, ścisłe etapy modelowania, rozwiązywanie problemów związanych z entytetami, mechanizmy wykrywania błędów, a na końcu możliwość rozmowy.

Wydawca: REACTAPP.TOP7 min czytania1608 słów

Źródła: Parser First, LLM Second: Building a 10-K Knowledge Graph in Neo4j

To przewodnik odtwarza ścieżkę od surowców do działającego systemu dla projektu „Parser First, LLM Second: Budowanie grafu wiedzy 10-K w Neo4j”. Skupia się na krokach operacyjnych, wyraźnych sprawdzeniach oraz kodzie, który można bez problemu umieścić w repozytorium, bez konieczności domyślania się intencji. Aby uzyskać ogólny zarys, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok od znanego punktu kontrolnego, bez konieczności domyślania się ukrytego stanu. Konfigurację należy przechowywać oddzielnie od kodu aplikacji. Pliki środowiskowe, magazyny tajemnic oraz flagi funkcjonalne powinny znajdować się w jednym miejscu, które operatorzy mogą sprawdzić, nie musząc czytać całego grafu.

Budowa obiecana w ostatnim artykule

Aby zrealizować ostatni artykuł, w którym to obiecywano, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie uruchomić ten krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy udokumentować zarówno prawidłowy przebieg procesu, jak i ścieżkę naprawczą. Próby ponownych działań, kontrola przez ludzi oraz obsługa wiadomości nieodebranych stanowią część produktu, a nie elementy dodawane później. Należy sprawdzić próbkę danych po pierwszej partii. Narzędzia typu Cypher wykrywają zmiany w etykietach i brakujące właściwości taniej niż testy czatowe od początku do końca.

Co mówi gotowy graf

Aby zrozumieć, co pokazuje gotowy wykres, należy przed zmianą kodu zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Lepiej używać małych, łatwych do przetestowania jednostek niż rozbudowanych skryptów. Gdy dany krok zawiedzie, powinien wskazywać na konkretną odpowiedzialność, a nie na skomplikowany łańcuch operacji. Sprawdź próbkę danych po pierwszej partii. Narzędzia typu Cypher skuteczniej wykrywają zmiany w etykietach i brakujące właściwości niż testy czatowe od początku do końca.

Liczby pochodzą z ustrukturyzowanej części

Gdy dane pochodzą z ustrukturyzowanej części, przed modyfikacją kodu należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia. Operatorzy powinni móc ponownie uruchomić ten krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktuj tę fazę jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nazwij poszczególne elementy, zdefiniuj kryteria sukcesu i odrzuć ciche, częściowe ukończenie zadania. Sprawdź próbkę danych po pierwszej partii. Proby typu Cypher wykrywają zmiany w etykietach oraz brakujące właściwości taniej niż testy czatowe od początku do końca. Gdy dane pochodzą z ustrukturyzowanej części, przed modyfikacją kodu należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia. Operatorzy powinni móc ponownie uruchomić ten krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Przechowuj konfigurację poza kodem aplikacji. Pliki środowiskowe, magazyny tajnych danych oraz flagi funkcjonalne powinny znajdować się w jednym miejscu, które operatorzy mogą audytować bez konieczności ponownej modyfikacji kodu.

Przeglądanie całego grafu.

To, co otrzymuje parser bez zadawania żadnych pytań modelowi

Dla przypadku „To, co otrzymuje parser bez zadawania żadnych pytań modelowi”, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy udokumentować zarówno standardową ścieżkę działania, jak i ścieżkę naprawczą. Próby ponownych działań, kontrola przez ludzi oraz obsługa wiadomości nieodebranych stanowią część produktu, a nie elementy dopiero późniejszej optymalizacji. Definiuj węzły i relacje modelu dla pytań, które zamierzasz zadać, a nie dla każdego rzeczownika w dokumencie. Rozproszone, typizowane krawędzie są lepsze od gęstych, niejasnych grafów.

Jedyna etapa, która wymaga modelu – pod ścisłą kontrolą

Dla tej jednej etapy, która wymaga modelu, należy wcześniej zdefiniować dane wejściowe, osobę odpowiedzialną za tę etap oraz kryteria zakończenia, zanim zostanie zmieniony kod. Operatorzy powinni móc ponownie uruchomić tę etap na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Lepiej używać małych, testowalnych jednostek niż rozbudowanych skryptów. Gdy jakaś etap zawiedzie, powinno to wskazywać na konkretną odpowiedzialność, a nie na skomplikowany łańcuch operacji. Definiuj węzły i relacje modelu dla pytań, które zamierzasz zadać, a nie dla każdego rzeczownika w dokumencie. Rozproszone, typowane krawędzie są lepsze od gęstych, niejasnych grafów.

Rozwiązywanie problemu identyfikacji entytetów: ten sam wzorzec, inny słownik

Dla rozwiązywania problemów z entytetami: ten sam wzorzec, inny słownik – należy zdefiniować dane wejściowe, osobę odpowiedzialną za ten etap oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten etap od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktuj tę fazę jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nazwij poszczególne elementy, zdefiniuj kryteria sukcesu i odrzuć ciche, częściowe ukończenie zadania. Modeluj węzły i relacje dla pytań, które zamierzasz zadać, a nie dla każdego rzeczownika w dokumencie. Rozproszone, typowane łącza są lepsze od gęstych, niejasnych grafów. Dla rozwiązywania problemów z entytetami: ten sam wzorzec, inny słownik – należy zdefiniować dane wejściowe, osobę odpowiedzialną za ten etap oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten etap od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Przechowuj konfigurację poza kodem aplikacji. Pliki środowiskowe, magazyny tajnych danych oraz flagi funkcjonalne powinny znajdować się w jednym miejscu.

Ci operatorzy mogą przeprowadzać audyt bez konieczności czytania całego grafu.

Brama i to, co faktycznie wykryła

Aby zrozumieć, czym jest brama i co faktycznie wykryła, należy zdefiniować dane wejściowe, właściciela kroku oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy udokumentować zarówno ścieżkę prawidłowego działania, jak i ścieżkę naprawczą. Próby ponownych działań, ludzkie bramy kontrolne oraz obsługa wiadomości nieodrzuconych stanowią część produktu, a nie elementy dodawane później. Należy stosować ograniczenia i indeksy przed masowym wprowadzaniem danych. Unikalność kluczy biznesowych sprawia, że późniejsze łączenie danych przebiega w sposób przewidywalny, bez powstawania problemów z duplikatami.

Ostatni etap: od grafu do czatu

Dla ostatniego etapu: od wykresu do czatu, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Wolno preferować małe, testowalne jednostki zamiast rozbudowanych skryptów. Gdy dany krok zawiedzie, powinien wskazywać na jedną konkretne odpowiedzialność, a nie na skomplikowany łańcuch operacji. Należy stosować ograniczenia i indeksy przed masowym importem danych. Unikalność kluczy biznesowych sprawia, że późniejsze łączenie danych przebiega w sposób przewidywalny, bez powstawania duplikatów.

MATCH (c:Company)-[d:DEPENDS_ON]->(t)
WHERE t.name CONTAINS "TAIWAN SEMICONDUCTOR"
RETURN c.ticker, count(d) AS mentions

Gdzie to zawodzi

W przypadku problemów z tym etapem należy zdefiniować dane wejściowe, osobę odpowiedzialną za realizację kroku oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktuj ten etap jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nazwij poszczególne elementy, zdefiniuj kryteria sukcesu i odrzuć ciche, częściowe ukończenie zadań. Zastosuj ograniczenia i indeksy przed masowym importem danych. Unikalność kluczy biznesowych sprawia, że późniejsze łączenie danych przebiega w sposób przewidywalny, zamiast powodować problemy z duplikatami. W przypadku problemów z tym etapem należy zdefiniować dane wejściowe, osobę odpowiedzialną za realizację kroku oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten kroku od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Przechowuj konfigurację poza kodem aplikacji. Pliki środowiskowe, magazyny tajnych danych oraz flagi funkcjonalne powinny znajdować się w jednym miejscu, które operatorzy mogą sprawdzić, bez konieczności czytania całej struktury aplikacji.

Gdzie się znajdziesz po 25 próbach

W przypadku sekcji „Gdzie się znajdziesz po 25 próbach” należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy udokumentować zarówno prawidłowy przebieg procesu, jak i ścieżkę naprawczą. Próby ponowne, kontrola przez ludzi oraz obsługa wiadomości nieodebranych stanowią część produktu, a nie elementy dodawane później. Należy przeanalizować próbkę danych po pierwszej partii. Narzędzia typu Cypher szybciej wykrywają zmiany w etykietach i brakujące właściwości niż testy czatowe od początku do końca.

Zasoby

Dla zasobów należy określić dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy preferować małe, łatwe do przetestowania jednostki zamiast rozbudowanych skryptów. Gdy dany krok zawiedzie, powinien wskazywać na konkretną odpowiedzialność, a nie na skomplikowany proces. Należy sprawdzić próbkę danych po pierwszej partii. Narzędzia typu Cypher skuteczniej wykrywają zmiany w etykietach i brakujące właściwości niż testy czatowe od początku do końca.

Listwa kontrolna operacyjna

Dla listwy kontrolnej operacyjnej należy określić dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu.

Zapisuj czasy wykonywania oraz koszt tokenów lub zapytań obok wyników funkcjonalnych. Wczesna widoczność kosztów zapobiega niespodziewanym rachunkom, gdy ścieżka przechodzi z środowiska demonstracyjnego do współdzielonych środowisk.

Modeluj węzły i relacje dla pytań, które zamierzasz zadać, a nie dla każdego rzeczownika w dokumencie. Rozproszone, skategoryzowane krawędzie są lepsze od gęstych, niejasnych grafów.

Gdy budżet na to pozwala, dodaj test dymny, który sprawdza kluczową ścieżkę w procesie CI przy użyciu fixitów, a nie żywych, płatnych API.

Zachowaj konfigurację poza kodem aplikacji. Pliki środowiskowe, magazyny haseł oraz flagi funkcjonalne powinny znajdować się w jednym miejscu, które operatorzy mogą sprawdzić bez konieczności czytania całego grafu.

Modeluj węzły i relacje dla pytań, które zamierzasz zadać, a nie dla każdego rzeczownika w dokumencie. Rozproszone, skategoryzowane krawędzie są lepsze od gęstych, niejasnych grafów.

Zanim wdrożysz cały stack, zamroź wersje, stwórz dokładny zapis działań dla kluczowej ścieżki oraz potwierdź kroki odwracania zmian. Środowiska współdzielone wymagają ograniczeń szybkości, weryfikacji przynależności oraz wyraźnego właściciela odpowiedzialnego za rotację haseł. Wolimy nudną niezawodność od sprytnych, jednorazowych demonstracji.

W ramach udoskonalenia nr 0 zdefiniuj dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie uruchomić ten krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Udokumentuj zarówno prawidłową ścieżkę działania, jak i ścieżkę przywracania do normy. Próby ponownych działań, kontrolne punkty ludzkie oraz obsługa wiadomości błędowych stanowią część produktu, a nie elementy dodawane później.

Literatura pokrewna