Zarządząnie projektami i środowiskami oraz migracja projektów w Apache HOP
Projekty w Apache HOP
Projekt to zbiór wszystkich plików używanych przez HOP które są powiązane z naszą pracą. Zwykle obejmuje to metadane, potoki, przepływy pracy, pliki referencyjne, dokumentację i tak dalej. Dobrą praktyką jest wykorzystywanie systemu kontroli wersji, np. GIT, by zapewnić spójność plików.
Organizacja prac w projekty jest wskazana jeśli prace nad rozwiązaniem prowadzi więcej niż jedna osoba. Definiowanie wspólnych zmiennych środowiskowych i konfiguracji na poziomie projektu umożliwia spójność i ułatwia współpracę. Wszyscy członkowie zespołu mogą korzystać z tych samych ustawień, co minimalizuje błędy wynikające z niezgodności konfiguracji.
Konfiguracje projektu przechowywane są w pliku hop-config.json, z którego hop/configdomyślnie odczytywany jest plik hop-config.json. Użyj zmiennej systemu operacyjnego HOP_CONFIG_FOLDER aby zapisać konfigurację Hop w folderze poza folderem Hop. Umożliwi to zachowanie listy projektów w przypadku zmiany instalacji Hop lub aktualizacji do nowszej wersji Hop.
Projekty mogą dziedziczyć metadane i zmienne z projektu nadrzędnego.
Projekty w Hop Gui będą pamiętać otwarte pliki, poziomy powiększenia i inne ustawienia interfejsu użytkownika.
Tworzenie projektu
Aby utworzyć nowy projekt należy w pasku zadań wybrać symbol 'p+':
W wyniku kliknięcia na tę ikonę pojawi się okno 'Project Properties' w którym zdefiniujemy lokalizację projektu (jeśli folder nie został utworzony wcześniej możemy użyć opcji by go utworzyć), opis projektu, nazwę pliku przetrzymującą ustawienia projektu i inne cechy:
Nie wszystko jest “Sztuczną Inteligencją”
Czym jest wyszukiwanie wektorowe i w jaki sposób współpracuje z modelami językowymi
Bardzo wiele projektów „sztucznej inteligencji” korzysta z techniki zwanej wyszukiwaniem wektorowym. To często najlepszy sposób by z dużego zbioru danych wybrać te informacje które następnie zostaną użyte przez model językowy do przygotowania odpowiedzi na nasze zapytanie. Wyszukiwanie wektorowe bardzo często stosowane jest w Retrieval-Augmented Generation (RAG) - technikach zwiększania dokładności i wiarygodności generatywnych modeli sztucznej inteligencji za pomocą faktów pobieranych ze źródeł zewnętrznych.
Przykład interakcji wyszukiwania wektorowego i LLM
Chcielibyśmy dowiedzieć się "How many liters of water does a Dutch windmill pump out per minute?". Pierwsza czynnością jest przekształcenie naszego zapytania na wektor - proces znajdywania podobnych informacji szuka podobnych wektorów do wektora referencyjnego. W rezultacie przeszukiwania zbioru wektorowa baza danych zwraca kilka rekordów z największym podobieństwem do naszego wzorca (naszego zapytania). Te rekordy są siła rzeczy powiązane kontekstowo z naszym zapytaniem.
Tak uzyskana informacja trafia do Dużego Modelu językowego jako dane które zostaną użyte do przygotowania finalnej odpowiedzi. LLM do wygenerowania odpowiedzi wykorzystał wiedzę zawartą w modelu plus dostarczoną z wektorowej bazy danych.
How to open XLSB files in Pentaho Kettle
Pentaho PDI/Kettle is not able to open Excel XLSB (binary format) files by default. However because Pentaho is a fantastic bridge between different technologies, you can use Python script step to accomplish this task. This short tutorial demonstrates how to open xlsb file and how to generate rows for further steps in Pentaho transformation.
CPython Script Executor plugin
To execute Python code in Pentaho you need CPython Script Executor plugin. This plugin can be easily downloaded from Pentaho Marketplace [menu: Tools => Marketplace]. Start again Pentaho after installing this plugin.
Yes, you need Python to be installed on you PC but also some Python packages like pandas, scikit-learn, matplotlib and pyxlsb. Some of these libraries are not required to handle XLSB files yet because CPython plugin was written to work with "Machine Learning" projects it is required to download them.
Pentaho Data Integration (PDI) version 9.4 or later does not have a Marketplace for several key reasons, mainly stemming from the development direction of this tool and Hitachi Vantara's (the owner of Pentaho) approach to managing the ecosystem of plugins and extensions. You have to manually download and install this plugin. Download latest version (quite old yet still working) from link. Unzip to 'plugins' directory. Restart Pentaho PDI.
Pyxlsb Python package
Pyxlsb parser [homepage] is needed to open XLSB file. Just install it with pip install pyxlsb command. Example of simple code to read XLSB file:
import pandas as pd
from pyxlsb import open_workbook as open_xlsb
df = []
with open_xlsb('some.xlsb') as wb:
with wb.get_sheet(1) as sheet:
for row in sheet.rows():
df.append([item.v for item in row])
df = pd.DataFrame(df[1:], columns=df[0])
Uruchamianie zaawansowanego wyszukiwania RAG za pomocą Neo4j
Obecnie aplikacje wykorzystujące technologię generowania rozszerzonego wyszukiwania (RAG) można wdrożyć w ciągu zaledwie kilku minut. Większość aplikacji RAG, takich jak przeszukiwanie i streszczanie PDF czy innego dokumentu tekstowego wykorzystuje podstawowe wyszukiwanie podobieństw wektorowych w celu pobrania odpowiednich informacji z bazy danych i przekazania ich do LLM w celu wygenerowania ostatecznej odpowiedzi.
Jednak podstawowe wyszukiwanie wektorów nie jest wystarczająco niezawodne, aby obsłużyć wszystkie przypadki użycia. Proces wyszukiwania podobieństwa wektorów porównuje jedynie treść semantyczną elementów na podstawie wspólnych słów i pojęć, bez względu na inne aspekty danych. Aplikacja RAG oparta na podstawowym wyszukiwaniu wektorowym nie będzie integrować kontekstu ze strukturą danych w celu zaawansowanego rozumowania.
W tym poście na blogu zobaczysz inną metodę tworzenia aplikacji RAG, która korzysta z kontekstu danych, aby odpowiedzieć na bardziej złożone pytania i wziąć pod uwagę szerszy kontekst.
Dokumenty nadrzędne i podrzędne
Termin "dokument" odnosi się zazwyczaj do tekstowych lub multimedialnych treści, które są analizowane, indeksowane i przetwarzane przez modele językowe w celu wydobycia znaczenia, informacji lub cech charakterystycznych. Kiedy mówimy o "dokumencie" w kontekście wektorowego wyszukiwania, mamy na myśli reprezentację takiego zasobu, który może być analizowany i manipulowany przez algorytmy "sztucznej inteligencji" w celu przetwarzania, analizy lub ekstrakcji informacji.
Przy indeksowaniu dokumentów trzeba zmierzyć się z co najmniej dwoma problemami. Pierwszy to ograniczenia modeli które tworzą wektory dokumentu ("embeddings") - treść może mieć ograniczoną długość. Drugi problem to znajdywanie podobieństw - wyszukiwanie wektorowe działa niezbyt dobrze jeśli mamy krótką sentencję i szukamy podobieństwa w długiej (istnieją specjalnie do tego celu zaprojektowane modele ale nawet one nie robią tego znakomicie).
Zatem bezpośrednie użycie wektora źródłowego dokumentu jest nieefektywne. Duże dokumenty można podzielić na mniejsze fragmenty, dla których obliczane są wektory, co poprawia indeksowanie w przypadku wyszukiwania podobieństw. Chociaż te wektory krótszej informacji lepiej sprawdzają się w znajdywaniu podobieństw (zwykle zapytanie jest krótkie), pobierany jest oryginalny duży dokument, ponieważ zapewnia lepszy kontekst dla odpowiedzi. W tej koncepcji mamy pełny dokument i powiązane z nim krótkie dokumenty w formie pytań związanych kontekstowo z tym dokumentem.
LLM może być użyty do wygenerowania tych pytań, na które odpowiada dokument.
Nie indeksujemy samego dokumentu ale pytania, co zapewnia większe podobieństwo do pytań użytkowników. Dostarczenie właściwego dokumentu do modelu odbywa się poprzez znalezienia powiązanego z dokumentem pytania i pobrania pełneg dokumentu nadrzędnego w celu zapewnienia pełnego kontekstu, stąd nazwa „wyszukiwarka dokumentów nadrzędnych”.