Indexation du contenu de la base de connaissances avec Spring Boot et pgvector

DEV - 08/03
Dans l'article précédent, nous avons configuré PostgreSQL en tant que base de données vectorielle à l'aide de pgvector. Mais un vecteur...

Dans l'article précédent, nous avons configuré PostgreSQL en tant que base de données vectorielle à l'aide de pgvector.

Mais une base de données vectorielles ne suffit pas à elle seule.

Avant de pouvoir interroger les intégrations, nous devons indexer nos données.

Dans une véritable base de connaissances d’IA, l’indexation suit généralement un pipeline comme celui-ci :

Document enregistré → événement publié → contenu fragmenté → intégrations générées → vecteurs de fragments stockés dans PostgreSQL
Entrer en mode plein écran Quitter le mode plein écran

Cette conception sépare la couche de persistance des documents du processus d'indexation de l'IA, ce qui facilite la mise à l'échelle et la maintenance du système.

Dans cet article, nous allons implémenter ce pipeline d'indexation à l'aide de Spring Boot.

Objectif du projet

Notre objectif est de prendre en charge ce flux de travail :

  1. Enregistrer un document de connaissances via une API REST
  2. Divisez automatiquement le document en morceaux plus petits
  3. Générer des intégrations pour chaque morceau
  4. Stockez ces intégrations dans PostgreSQL en utilisant pgvector

Une fois indexée, la base de connaissances sera prête pour la recherche sémantique.

Dépendances Maven

Ajoutez les dépendances suivantes à votre pom.xml.

Dépendances

org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-data-jpaorg.postgresqlpostgresqlorg.projectlombokLombokvraiorg.springframework.bootvalidation du démarreur au printemps
Entrer en mode plein écran Quitter le mode plein écran

Configuration de la base de données

Exempleapplication.yml:

spring : source de données : url : jdbc:postgresql://localhost:5432/vectordb nom d'utilisateur : admin mot de passe : admin jpa : hibernate : ddl-auto : mise à jour show-sql : true
Entrer en mode plein écran Quitter le mode plein écran

Modèle de base de données

Nous utiliserons deux tableaux.

knowledge_document - Stocke le document original. knowledge_document_chunk - Stocke le texte des fragments et les intégrations

Cette séparation est importante car un document peut générer plusieurs morceaux.

Énumération de l'état de l'index

Cette énumération suit le cycle de vie de l'indexation.

Énumération : IndexStatus

package com.example.knowledgebase.domain ; public enum IndexStatus { EN ATTENTE, INDEXATION, INDEXÉE, ÉCHEC }
Entrer en mode plein écran Quitter le mod...
[Courte citation de 8% de l'article original]
Loading...