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”.
Co to jest Retrieval-Augmented Generation, czyli RAG?
Przykład kodu w Python który wykorzystuje RAG by przeszukiwać poemat Pan Tadeusz Adama Mickiewicza.
Aby zrozumieć najnowsze osiągnięcia w dziedzinie generatywnej sztucznej inteligencji, wyobraź sobie salę sądową.
Sędziowie rozpatrują i rozstrzygają sprawy w oparciu o swoje ogólne rozumienie prawa. Czasami sprawa – na przykład pozew o błąd w sztuce lub spór pracowniczy – wymaga specjalnej wiedzy specjalistycznej, dlatego sędziowie wysyłają urzędników sądowych do biblioteki prawniczej w poszukiwaniu precedensów i konkretnych spraw, które mogliby przytoczyć.