Relevance Extractor
Előfeltételek: Data Collection
Felhasználja: QA Answer
A Data Collection lépés során összegyűjtünk rengeteg információmorzsát (azaz chunk-ot), melyek különböző metrikák szerint fontosnak bizonyultak. Ugyanakkor ez összesítve rengeteg, és képes félrevezetni a válaszadást. Célszerű tehát egy végleges szűrést alkalmazni.
Kérdés-önállósítás
Adott: A felhasználói \(q\) kérdése, a \(H\) korábbi üzenetváltás és chunk-ok egy \(\mathcal{C}\) halmaza.
Feladat: Néhány chunk kiválasztása (\(\mathcal{C_r}\)), melyek hasznos információkat tartalmaznak \(q\) kérdés megválaszolásához (azaz „relevánsak“).
Megjegyzés
Ez akár a Data Collection részeként is értelmezhető lenne. Ugyanakkor jelenlegi szétválasztás indokolható azzal, hogy a Data Collection LLM hívás nélkül keres „gyorsan“, majd utána a Relevance Extractor egy LLM hívás segítségével szortíroz.
A megvalósítás
Az eszköz két részből áll:
-
Megkérünk egy LLM-et hogy értékelje egy-egy chunk relevanciáját egy 3 pontú skálán, ahol
-
0: teljesen irreleváns -
1: témába vágó, de nem biztos, hogy hasznos -
2: közvetlen információt tartalmaz az üzenettel kapcsolatban
-
-
A pontozásból kiválasztjuk az
1és2ponttal ellátottakat, ezekre mondjuk, hogy relevánsak.
A konfigurációs beállítások a backend repo-ban, a tool-configuration.yml fájlban találhatók, a project.tools.relevance-extractor mezőben. A használt OpenAI modellt az eszköz a az application.yml fájl project.openai.models.chat-model mezőjéből örökli. A végrehajtást a RelevanceExtractorBatchService osztály végzi.
Miért BatchService?
A megírt osztály képes egyszerre több chunk-ot átadni az LLM-nek, ezt a batch-size paraméter szabályozza. Ugyanakkor ide 1-et rögzítettünk, mivel több chunk értékelése esetén a válasz is hosszabb lesz (több token-t kell generálni), továbbá hosszabb chunk-ok megzavarhatják egymás értékelését.