WoisthierdasKlo
Lt. Junior Grade
- Registriert
- März 2019
- Beiträge
- 434
Moin,
kurzes Disclaimer vorweg: Ich bin ein Laie und bitte berücksichtigt das bei euren Antworten und haut mir nicht zu viele Fachbegriffe auf einmal um die Ohren, das wäre sehr nett. Ich muss ChatGPT schon immer darauf hinweisen, explizit zu erklären, was es genau meint... 🙈
Ich habe die letzte Woche sehr viel Zeit mit ChatGPT Plus, als mein Programmier-Sklave, und einigen lokalen KI-Modellen verbracht. Meine RTX 2060 Super konnte einigermaßen sinnvoll bis zu qwen3.5:27b, also einem LLM-Chatmodell mit 27 Mrd. Parametern, umgehen. Einen Benchmark, der Ambiguität in Frage-Items abfragte, konnte zudem erst das 27b-Modell zu 100% korrekt beantworten, 14b, 8b, 4b usw. versagten alle. Ohne OT zu werden könnt ihr hierzu gerne etwas schreiben, würd mich mal interessieren, was ihr dazu denkt bzw. was ihr so an Erfahrungen gemacht habt.
Zum Thema: Ich habe auch LLMs heruntergeladen, die nicht zum Chatten geeignet sind, sondern zum Embedding. Insbesondere qwen3:0.6b-embedder und qwen3:4b-embedder habe ich dann genutzt. Die 0.6b-Variante lief bei mir bedeutend schneller und schien die selbe Qualität zu haben. Gearbeitet habe ich dann mit dem 0.6b-Embedding an einem Ordner mit ca. 360 deutschsprachigen OCR-ten PDFs. Die queries habe ich dann mit 4b embedden lassen. Die Suche lief innerhalb weniger Sekunden. Das Embedden hat schon ein paar Stunden gedauert. (Bei der 4b-Variante eher über 10 Stunden...)
Anschließend habe ich, nach ChatGPTs Empfehlungen, noch ein paar reranker installiert und diese über die Top-80-Ergebnisse laufen lassen, was mit dem kleinsten Modell ca. 30 Sekunden gedauert hat, mit dem größten deutlich länger und ich irgendwie unnötig fand, weil es ja keine neuen Ergebnisse hervorbrachte, sondern die vom Query-Embedder/FAISS gefundenen lediglich umsortierte.
Jedoch fiel mir auf, dass die Suche schon eher nach Semantik als nach gesamter abstrakter Satzbedeutung geht. Wenn ich nach einem Inhalt in den PDFs suche, wo ich durch einigermaßen synonyme Wörter umschreiben kann, worum es geht, findet mein Programm die Textstelle gut. Aber wenn ich dann ein Wort verwende, z.B. "Menschheitsentwicklung", weil ich nach einem Ereignis "in der Menschheitsentwicklung" suche, dann hängt er sich sehr fest am Wort "Menschheitsentwicklung" und zeigt mir fast nur Ergebnisse an, wo exakt das Wort "Menschheitsentwicklung" vorkommt.
Daher dachte ich, ich brauche ein Verfahren, das noch mehr die abstrakte Bedeutung meiner query erfasst. ChatGPT empfahl mir daher das ColBERTv2-Verfahren. Doch dieses sei um Größenordnungen aufwendiger, da nicht ein Vektor pro Chunk und ein Vektor pro query erzeugt würde, sondern mehrere Vektoren pro Token und mehrere Vektoren pro query.
Ich stellte dann aber überraschenderweise fest, dass ColBERTv2 vieeel schneller ging. Die Indexierung dauerte nicht einige Stunden, sondern unter 30 Minuten. Der Index-Ordner war, wie zu erwarten (da eine besonders schlaue Kompression der Vektoren verwendet wird), ähnlich groß TROTZ Größenordnungen mehr an Vektoren (ca. 2 GB statt ca. 1.7 bzw 3 GB bei 0.6b bzw 4b) und die Suche ging auch total flott. Allerdings konnte ich es noch nicht so richtig gut am selben Ordner testen, da ColBERTv2 am besten mit dem Stanford-Modell funktioniert und dieses ist nur auf englischer Sprache trainiert. Dagegen ist das Jina-Mehrsprachen-Modell sehr schlecht, meiner Erfahrung nach.
ChatGPT empfahl mir, noch eine LLM zu nutzen, um zu prüfen, ob die Ergebnisse WIRKLICH einen inneren Sinnzusammenhang mit dem Suchquery haben.
Frage an euch:
Ich bin gespannt.... :-)
kurzes Disclaimer vorweg: Ich bin ein Laie und bitte berücksichtigt das bei euren Antworten und haut mir nicht zu viele Fachbegriffe auf einmal um die Ohren, das wäre sehr nett. Ich muss ChatGPT schon immer darauf hinweisen, explizit zu erklären, was es genau meint... 🙈
Ich habe die letzte Woche sehr viel Zeit mit ChatGPT Plus, als mein Programmier-Sklave, und einigen lokalen KI-Modellen verbracht. Meine RTX 2060 Super konnte einigermaßen sinnvoll bis zu qwen3.5:27b, also einem LLM-Chatmodell mit 27 Mrd. Parametern, umgehen. Einen Benchmark, der Ambiguität in Frage-Items abfragte, konnte zudem erst das 27b-Modell zu 100% korrekt beantworten, 14b, 8b, 4b usw. versagten alle. Ohne OT zu werden könnt ihr hierzu gerne etwas schreiben, würd mich mal interessieren, was ihr dazu denkt bzw. was ihr so an Erfahrungen gemacht habt.
Zum Thema: Ich habe auch LLMs heruntergeladen, die nicht zum Chatten geeignet sind, sondern zum Embedding. Insbesondere qwen3:0.6b-embedder und qwen3:4b-embedder habe ich dann genutzt. Die 0.6b-Variante lief bei mir bedeutend schneller und schien die selbe Qualität zu haben. Gearbeitet habe ich dann mit dem 0.6b-Embedding an einem Ordner mit ca. 360 deutschsprachigen OCR-ten PDFs. Die queries habe ich dann mit 4b embedden lassen. Die Suche lief innerhalb weniger Sekunden. Das Embedden hat schon ein paar Stunden gedauert. (Bei der 4b-Variante eher über 10 Stunden...)
Anschließend habe ich, nach ChatGPTs Empfehlungen, noch ein paar reranker installiert und diese über die Top-80-Ergebnisse laufen lassen, was mit dem kleinsten Modell ca. 30 Sekunden gedauert hat, mit dem größten deutlich länger und ich irgendwie unnötig fand, weil es ja keine neuen Ergebnisse hervorbrachte, sondern die vom Query-Embedder/FAISS gefundenen lediglich umsortierte.
Jedoch fiel mir auf, dass die Suche schon eher nach Semantik als nach gesamter abstrakter Satzbedeutung geht. Wenn ich nach einem Inhalt in den PDFs suche, wo ich durch einigermaßen synonyme Wörter umschreiben kann, worum es geht, findet mein Programm die Textstelle gut. Aber wenn ich dann ein Wort verwende, z.B. "Menschheitsentwicklung", weil ich nach einem Ereignis "in der Menschheitsentwicklung" suche, dann hängt er sich sehr fest am Wort "Menschheitsentwicklung" und zeigt mir fast nur Ergebnisse an, wo exakt das Wort "Menschheitsentwicklung" vorkommt.
Daher dachte ich, ich brauche ein Verfahren, das noch mehr die abstrakte Bedeutung meiner query erfasst. ChatGPT empfahl mir daher das ColBERTv2-Verfahren. Doch dieses sei um Größenordnungen aufwendiger, da nicht ein Vektor pro Chunk und ein Vektor pro query erzeugt würde, sondern mehrere Vektoren pro Token und mehrere Vektoren pro query.
Ich stellte dann aber überraschenderweise fest, dass ColBERTv2 vieeel schneller ging. Die Indexierung dauerte nicht einige Stunden, sondern unter 30 Minuten. Der Index-Ordner war, wie zu erwarten (da eine besonders schlaue Kompression der Vektoren verwendet wird), ähnlich groß TROTZ Größenordnungen mehr an Vektoren (ca. 2 GB statt ca. 1.7 bzw 3 GB bei 0.6b bzw 4b) und die Suche ging auch total flott. Allerdings konnte ich es noch nicht so richtig gut am selben Ordner testen, da ColBERTv2 am besten mit dem Stanford-Modell funktioniert und dieses ist nur auf englischer Sprache trainiert. Dagegen ist das Jina-Mehrsprachen-Modell sehr schlecht, meiner Erfahrung nach.
ChatGPT empfahl mir, noch eine LLM zu nutzen, um zu prüfen, ob die Ergebnisse WIRKLICH einen inneren Sinnzusammenhang mit dem Suchquery haben.
Frage an euch:
- Habt ihr Erfahrungen mit LLMs und insbesondere SingleVector und MultiVector gemacht?
- Was für Anwendungsgebiete gibt es außerhalb des Durchsuchens großer Dokumentenordner nach Textstellen?
- Was ist eure Meinung zu rerankern? Unnötig oder nützlich?
- Wie erklärt ihr euch, dass die Indexerstellung bei ColBERTv2 sooo viel schneller ging als bei SingleVector, obwohl es angeblich viel rechenaufwendiger ist?
- Haltet ihr es beim aktuellen Stand für möglich, dass die abstrakte Bedeutung im Such-Query wirklich "erfasst" werden kann?
- Was haltet ihr von ChatGPTs Vorschlag, eine LLM dazu zu bauen, auch ausgehend von meiner initialen Erzählung oben? Ich könnte mir vorstellen, dass meine Grafikkarte das nicht (in sinnvoller Zeit, d.h. unter 2 Minuten) packt, 80 Absätze mit 1 Suchquery zu vergleichen... hängt natürlich vom Modell ab, aber es scheint ja mindestens das 27b-Modell nötig zu sein....
Ich bin gespannt.... :-)
Zuletzt bearbeitet: