==== LU12.A04 pgVector in SpringAI verwenden ====
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.
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;
Erstellen Sie ein ''application.properties'' unter ''src/main/resources/'' mit folgenden Einstellungen.
spring.datasource.url=jdbc:postgresql://localhost:5432/ragdb
spring.datasource.username=rag_user
spring.datasource.password=secret
Studieren Sie die Änderungen gründlich und stellen Sie sicher, dass der Test ''StoreServiceTest.java'' ohne Fehler ausgeführt werden kann.
./gradlew test
Ergänzen Sie allenfalls das application.yml, um sicherzustellen, dass beim Suchen dasselbe Embedding und diesselbe Distanz- beziehungsweise Ähnlichkeitsfunktion verwendet wird, wie beim Abspeichern.
vectorstore:
pgvector:
enabled: true
table-name: vector_store
indexType: "IVFFlat"
lists: 100
distance-type: "COSINE_DISTANCE"
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.