Exercices IA & Data Science Rechercher le document le plus pertinent
🎉

Bravo!

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

Rechercher le document le plus pertinent

Le coeur du RAG, c'est la recherche : etant donne une question, trouver le document le plus pertinent dans une base. On va combiner TF-IDF et similarite cosinus pour construire un mini moteur de recherche.

L'idee :
1. Vectoriser tous les documents
2. Vectoriser la question
3. Calculer la similarite entre la question et chaque document
4. Renvoyer le document avec le meilleur score

Écris une fonction search(query, documents) qui prend une question (string) et une liste de Documents LangChain, et renvoie le Document le plus pertinent.

Utilise TfidfVectorizer pour la vectorisation et cosine_similarity pour le classement.

Exemple :
docs = [
Document(page_content='Python est un langage de programmation'),
Document(page_content='Les chats sont des animaux domestiques'),
]
search('langage Python', docs).page_content
renvoie 'Python est un langage de programmation'

Tests (1/1)

Tests
from langchain_core.documents import Document
docs = [
    Document(page_content='Python est un langage de programmation populaire'),
    Document(page_content='Les chats sont des animaux domestiques'),
    Document(page_content='Django est un framework web en Python'),
]
result = search('programmation Python', docs)
assert isinstance(result, Document), 'Le résultat doit etre un Document'
assert 'Python' in result.page_content, 'Le document trouve doit parler de Python'
result2 = search('animaux chat', docs)
assert 'chat' in result2.page_content, 'La recherche animaux doit trouver le doc sur les chats'
result3 = search('framework web', docs)
assert 'Django' in result3.page_content, 'La recherche framework doit trouver le doc sur Django'

Indices (3 disponibles)

solution.py