Skip to main content

Cléa-API: A framework for document load and hybrid search engine combining vector and metadata-based search. CRUD operations are performed using FastAPI.

Project description

Cléa-API

Cléa-API est un framework conçu pour le chargement de documents et la recherche hybride combinant la recherche vectorielle et basée sur les métadonnées. Il fournit des fonctionnalités CRUD pour gérer les documents et des endpoints pour effectuer des recherches avancées.


Caractéristiques principales

  • Chargement de documents : Extraction et traitement de documents dans divers formats (PDF, Word, JSON, etc.).
  • Recherche hybride : Combinaison de la recherche vectorielle et basée sur les métadonnées.
  • Gestion des documents : CRUD complet pour les documents.
  • Extensibilité : Architecture modulaire pour ajouter facilement de nouvelles fonctionnalités.
  • Support de PostgreSQL avec pgvector : Stockage et recherche vectorielle optimisés.

Structure du projet

.
├── clea_doc_loader       # Module pour le chargement et l'extraction de documents   ├── api               # Endpoints pour le chargement de documents   ├── src               # Logique métier pour l'extraction de documents   └── test              # Tests unitaires pour le module
├── clea_pipeline         # Module pour le traitement des documents   ├── api               # Endpoints pour le traitement des documents   ├── src               # Logique métier pour le pipeline de traitement   └── test              # Tests unitaires pour le module
├── clea_vectordb         # Module pour la gestion des documents et la recherche   ├── api               # Endpoints pour la gestion et la recherche   ├── src               # Logique métier pour la base de données et la recherche   └── test              # Tests unitaires pour le module
├── demo                  # Fichiers de démonstration pour tester les fonctionnalités
├── main.py               # Point d'entrée principal de l'application
├── pyproject.toml        # Configuration du projet Python
├── requirements.txt      # Liste des dépendances Python
├── Dockerfile            # Fichier Docker pour le déploiement
├── start.sh              # Script pour démarrer l'application
└── README.md             # Documentation du projet

Installation

Prérequis

  • Python 3.11 ou supérieur
  • PostgreSQL avec l'extension pgvector
  • WSL (Windows Subsystem for Linux) avec OpenSUSE Tumbleweed (si applicable)

Étapes d'installation

  1. Cloner le dépôt

    git clone https://github.com/votre-repo/clea-api.git
    cd clea-api
    
  2. Installer les dépendances

    Utilisez le gestionnaire de paquets uv pour installer les dépendances :

    uv pip install -r requirements.txt
    
  3. Configurer les variables d'environnement

    Créez un fichier .env à la racine du projet et configurez les variables suivantes :

    DB_USER=postgres
    DB_PASSWORD=your_password
    DB_NAME=clea_db
    DB_HOST=localhost
    DB_PORT=5432
    API_HOST=localhost
    API_PORT=8080
    
  4. Initialiser la base de données

    Lancez le script d'initialisation de la base de données :

    uv python main.py
    
  5. Démarrer l'application

    Utilisez le script start.sh pour démarrer l'API :

    ./start.sh
    

    L'API sera disponible à l'adresse suivante : http://localhost:8080.


Utilisation

Endpoints principaux

1. Chargement de documents

  • Endpoint : /doc_loader/upload-file

  • Méthode : POST

  • Description : Charge un fichier et extrait son contenu.

  • Exemple de requête :

    curl -X POST "http://localhost:8080/doc_loader/upload-file" \
         -F "file=@demo/demo.txt" \
         -F "max_length=1000" \
         -F "theme=Test"
    

2. Traitement des documents

  • Endpoint : /pipeline/process-and-store

  • Méthode : POST

  • Description : Traite un fichier et l'insère dans la base de données.

  • Exemple de requête :

    curl -X POST "http://localhost:8080/pipeline/process-and-store" \
         -F "file=@demo/demo.txt" \
         -F "max_length=1000" \
         -F "theme=Test"
    

3. Gestion des documents

  • Endpoint : /database/add_document

  • Méthode : POST

  • Description : Ajoute un document à la base de données.

  • Exemple de requête :

    curl -X POST "http://localhost:8080/database/add_document" \
         -H "Content-Type: application/json" \
         -d '[
               {
                 "title": "Document de test",
                 "content": "Ceci est un document de test.",
                 "theme": "Test",
                 "document_type": "TXT",
                 "publish_date": "2025-01-01"
               }
             ]'
    

4. Recherche hybride

  • Endpoint : /search/hybrid_search

  • Méthode : POST

  • Description : Recherche des documents en combinant la recherche vectorielle et basée sur les métadonnées.

  • Exemple de requête :

    curl -X POST "http://localhost:8080/search/hybrid_search" \
         -H "Content-Type: application/json" \
         -d '{
               "query": "exemple",
               "theme": "Test",
               "top_k": 5
             }'
    

Tests

Exécuter les tests

Pour exécuter les tests unitaires, utilisez la commande suivante :

uv run pytest

Les tests sont organisés par module dans les répertoires test, test et test.


Déploiement

Docker

Un fichier Dockerfile est fourni pour déployer l'application dans un conteneur Docker.

  1. Construire l'image Docker :

    docker build -t clea-api .
    
  2. Lancer le conteneur :

    docker run -p 8080:8080 clea-api
    

Contribuer

Les contributions sont les bienvenues ! Veuillez suivre les étapes suivantes pour contribuer :

  1. Forkez le dépôt.
  2. Créez une branche pour votre fonctionnalité ou correction de bug.
  3. Soumettez une pull request avec une description claire de vos modifications.

Licence

Ce projet est sous licence MIT. Consultez le fichier LICENSE pour plus d'informations.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clea_api-0.1.1.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clea_api-0.1.1-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file clea_api-0.1.1.tar.gz.

File metadata

  • Download URL: clea_api-0.1.1.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.16

File hashes

Hashes for clea_api-0.1.1.tar.gz
Algorithm Hash digest
SHA256 1eb5a9c693876b7189f7bae0d89eb8f23928c7bd360e18b6124bbb585349dead
MD5 1f00bcaeabee42a703c7c9d1e3837d6b
BLAKE2b-256 780a53ca2920615a5585c33a05436c71054322d8259a430baefdb572e906441a

See more details on using hashes here.

File details

Details for the file clea_api-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: clea_api-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 4.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.16

File hashes

Hashes for clea_api-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d9200cb3b9ffec2cefae19690b5923b83905e017708edfdc1841c5984166f24a
MD5 d8053d7925d691d4b187c407617e57d3
BLAKE2b-256 c1ee7f9b7abcb4a206068fac4a0bc01599af613e3046f9a2fe378f229fa4353b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page