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
-
Cloner le dépôt
git clone https://github.com/votre-repo/clea-api.git cd clea-api
-
Installer les dépendances
Utilisez le gestionnaire de paquets
uvpour installer les dépendances :uv pip install -r requirements.txt
-
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
-
Initialiser la base de données
Lancez le script d'initialisation de la base de données :
uv python main.py
-
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.
-
Construire l'image Docker :
docker build -t clea-api .
-
Lancer le conteneur :
docker run -p 8080:8080 clea-api
Contribuer
Les contributions sont les bienvenues ! Veuillez suivre les étapes suivantes pour contribuer :
- Forkez le dépôt.
- Créez une branche pour votre fonctionnalité ou correction de bug.
- 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1eb5a9c693876b7189f7bae0d89eb8f23928c7bd360e18b6124bbb585349dead
|
|
| MD5 |
1f00bcaeabee42a703c7c9d1e3837d6b
|
|
| BLAKE2b-256 |
780a53ca2920615a5585c33a05436c71054322d8259a430baefdb572e906441a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9200cb3b9ffec2cefae19690b5923b83905e017708edfdc1841c5984166f24a
|
|
| MD5 |
d8053d7925d691d4b187c407617e57d3
|
|
| BLAKE2b-256 |
c1ee7f9b7abcb4a206068fac4a0bc01599af613e3046f9a2fe378f229fa4353b
|