Exercices IA & Data Science Combiner TF-IDF et FAISS
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Combiner TF-IDF et FAISS

Maintenant on va assembler les briques : TF-IDF pour créer les vecteurs et FAISS pour les stocker et faire la recherche rapide. C'est un vrai moteur de recherche vectoriel.

Écris une fonction build_search_engine(texts) qui :
1. Vectorise les textes avec TfidfVectorizer
2. Convertit la matrice TF-IDF en numpy float32 dense
3. Crée un index FAISS et y ajoute les vecteurs
4. Renvoie un tuple (index, vectorizer)

Écris aussi une fonction query_engine(query, index, vectorizer, texts, k) qui :
1. Vectorise la query avec le vectorizer
2. Cherche les k plus proches dans l'index FAISS
3. Renvoie la liste des textes correspondants

Exemple :
texts = ['Python est genial', 'Java est ancien', 'Python et Django']
index, vec = build_search_engine(texts)
query_engine('Python', index, vec, texts, 2)
renvoie les 2 textes les plus pertinents pour 'Python'

Tests (1/1)

Tests
texts = [
    'Python est un langage de programmation',
    'Java est utilise en entreprise',
    'Python et Django pour le developpement web',
    'Les chats dorment beaucoup',
    'JavaScript est utilise dans le navigateur',
]
index, vec = build_search_engine(texts)
assert index.ntotal == 5, f'L index doit contenir 5 vecteurs'
results = query_engine('Python programmation', index, vec, texts, 2)
assert len(results) == 2, f'Attendu 2 résultats, obtenu {len(results)}'
assert any('Python' in r for r in results), 'Les résultats devraient mentionner Python'
results2 = query_engine('chats dorment', index, vec, texts, 1)
assert 'chat' in results2[0].lower(), f'Attendu un résultat sur les chats: {results2[0]}'

Indices (3 disponibles)

solution.py