Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:modul:ffit:3-jahr:java:learningunits:lu12:aufgaben:a04 [2025/11/24 01:44] apeterde:modul:ffit:3-jahr:java:learningunits:lu12:aufgaben:a04 [2025/12/16 11:04] (aktuell) apeter
Zeile 1: Zeile 1:
 ==== LU12.A04 pgVector in SpringAI verwenden ==== ==== LU12.A04 pgVector in SpringAI verwenden ====
  
-Holen Sie sich die Tests mit einem Cherry-Pick auf ''TODO''.+Holen Sie sich die Tests mit einem Cherry-Pick auf ''f6c5bc4''. 
 + 
 +Erstellen Sie einen Datenbank-Benutzer und eine Database. Sie können dabei auch andere Namen bzw. Passwörter wählen. 
 +<code sql> 
 +CREATE DATABASE ragdb; 
 +\c ragdb; 
 +CREATE USER rag_user WITH PASSWORD 'secret'; 
 +GRANT ALL PRIVILEGES ON DATABASE ragdb TO rag_user; 
 +GRANT USAGE, CREATE ON SCHEMA public TO rag_user; 
 +GRANT ALL PRIVILEGES ON SCHEMA public TO rag_user; 
 +</code> 
 + 
 +Erstellen Sie ein ''application.properties'' unter ''src/main/resources/'' mit folgenden Einstellungen. 
 +<code properties> 
 +spring.datasource.url=jdbc:postgresql://localhost:5432/ragdb 
 +spring.datasource.username=rag_user 
 +spring.datasource.password=secret 
 +</code>
  
 Studieren Sie die Änderungen gründlich und stellen Sie sicher, dass der Test ''StoreServiceTest.java'' ohne Fehler ausgeführt werden kann. Studieren Sie die Änderungen gründlich und stellen Sie sicher, dass der Test ''StoreServiceTest.java'' ohne Fehler ausgeführt werden kann.
 <code bash> <code bash>
 ./gradlew test ./gradlew test
 +</code>
 +
 +Ergänzen Sie allenfalls das application.yml, um sicherzustellen, dass beim Suchen dasselbe Embedding und diesselbe Distanz- beziehungsweise Ähnlichkeitsfunktion verwendet wird, wie beim Abspeichern.
 +<code yaml>
 +    vectorstore:
 +      pgvector:
 +        enabled: true
 +        table-name: vector_store
 +        indexType: "IVFFlat"
 +        lists: 100
 +        distance-type: "COSINE_DISTANCE"
 </code> </code>
  
 An dieser Stelle sei angemerkt, dass der Test die echte Datenbank verwendet anstatt einer separaten Testdatenbank oder einem Mock. Damit nicht bei jeder Testausführung Duplikate hinzugefügt werden, wurde in der Klasse ''DocumentFactory'' die id deterministisch basierend auf dem Text erstellt. Dadurch werden Datensätze mit demselben Inhalt überschrieben anstatt neu angelegt. An dieser Stelle sei angemerkt, dass der Test die echte Datenbank verwendet anstatt einer separaten Testdatenbank oder einem Mock. Damit nicht bei jeder Testausführung Duplikate hinzugefügt werden, wurde in der Klasse ''DocumentFactory'' die id deterministisch basierend auf dem Text erstellt. Dadurch werden Datensätze mit demselben Inhalt überschrieben anstatt neu angelegt.
 +
 +Falls zu wenig oder völlig falsche Dokumente vom VectorStore zurückgegeben werden, könnte allenfalls die Indexierung fehlerhaft sein. Sie können diese manuell neu erstellen mit folgenden Befehlen.
 +
 +<code bash>
 +psql -U postgres -d ragdb
 +</code>
 +<code sql>
 +REINDEX TABLE vector_store;
 +</code>
 +
 +
  • de/modul/ffit/3-jahr/java/learningunits/lu12/aufgaben/a04.1763945076.txt.gz
  • Zuletzt geändert: 2025/11/24 01:44
  • von apeter